码迷,mamicode.com
首页 > 其他好文 > 详细

hadoop完全分布式模式的安装和配置

时间:2016-05-13 03:07:03      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:

 最近在学Hadoop,学习Hadoop第一步当然是搭建环境。因为刚开始接触Hadoop,加之对Linux命令行不熟悉。完全搭建好这个环境用了两天的时间。虽然搭建好这个环境只是第一步,但是我感觉还是收获很多,比如对Linux的操作,其中最让我头疼的是Linux权限问题。搭建过程中操作一般都是对的,因为开始用的是root用户,所以切换到普通用户老是报拒绝操作。所以我频换的切换用户进行权限更改,下次再搭建环境的时候一定要用普通用户操作,这样就少了很多不必要的麻烦。除非是Linux系统配置文件中只有root才能操作的文件。楼主的实验环境是用虚拟机虚拟出的三台主机,其中一台做为主节点(namenode)IP:192.168.30.50,两台做为从节点(datanode)IP:192.168.30.51/192.168.30.52

一、设置静态IP&修改主机名(对三台电脑都需要进行操作)

0.将三台电脑安装Linux系统

1.设置静态ip(便于机器之间的通信,防止路由器电脑重启后,ip变化,导致不能通信)

vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0 #描述网卡对应的设备别名,例如ifcfg-eth0的文件中它为eth0
BOOTPROTO=static #这个修改更改为静态的
BROADCAST=192.168.0.255 #对应的子网广播地址
HWADDR=00:07:E9:05:E8:B4 #对应的网卡物理地址

#在文件最后面添加一下代码

IPADDR=192.168.80.100 

NETMASK=255.255.255.0

NETWORK=192.168.0.1


里面的IPADDR地址设置你想要的,我这里是192.168.80.100。
设置好后,需要让IP地址生效,运行下面命令:

service network restart Shutting down interface

然后运行ifconfig就可以看到静态ip是否生效。

2.修改主机名(每台电脑都要修改,建议使用hadoop100,hadoop101,hadoop102,对应于ip地址最后面三位数)

vi /etc/sysconfig/network 

hostname=hadoop100

重启一下网络service network restart

验证reboot -h now 立刻重启  然后hostname

3.建立hadoop运行帐号

最好不要使用root操作hadoop,root是超级管理员权限,不推荐各个机器之间使用root访问,

useradd hadoop 增加用户
passwd hadoop 设置密码

4、关闭已经启动的防火墙:service iptables stop (只能关闭当前)

验证:service iptables status

Firewall is not running

关闭防火墙开机自动启动功能:

(1). 先查看 查看: chkconfig --list |grep iptables
iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off

(2). 关闭 chkconfig  iptables off

验证:chkconfig --list |grep iptables

说明如果不关闭防火墙以后上传文件时会报异常

二、配置hosts文件(只需要对主机192.168.80.100(hadoop100)进行操作,然后通过scp命令将这些配置分发给其他电脑即可)

操作192.168.80.100机器

vi /etc/hosts 添加下面内容

192.168.80.100 hadoop100
192.168.80.101 hadoop101
192.168.80.102 hadoop102

验证:ping  hadoop100
ping  hadoop101
ping  hadoop102

三、为hadoop账户配置ssh免密码连入

操作hadoop100,hadoop101,hadoop102机器

① ssh-keygen -t rsa会在~/.ssh/文件夹下生成id_rsa  id_rsa.pub两个文件

② 根据ip分别执行(对hadoop100,101,102三台机器分别生成公钥)
cp ~/.ssh/id_rsa.pub ~/.ssh/id_rsa.pub.100
cp ~/.ssh/id_rsa.pub ~/.ssh/id_rsa.pub.101
cp ~/.ssh/id_rsa.pub ~/.ssh/id_rsa.pub.102
将hadoop101,hadoop102的公钥传输到hadoop100的机器上
scp -r ~/.ssh/id_rsa.pub.101   hadoop@hadoop100:/home/hadoop/.ssh
scp -r ~/.ssh/id_rsa.pub.102   hadoop@hadoop100:/home/hadoop/.ssh 
④ 把所有机器的公钥,放在hadoop100的一个文件中(在hadoop100的hadoop用户下操作)
 cat ~/.ssh/id_rsa.pub.100 >> ~/.ssh/authorized_keys
 cat ~/.ssh/id_rsa.pub.101 >> ~/.ssh/authorized_keys
 cat ~/.ssh/id_rsa.pub.102 >> ~/.ssh/authorized_keys
 
验证 ssh hadoop101  发现无效,提示还是需要密码。
 
⑤ 修改authorized_keys的权限, 组用户不能有 写(W)权限, 不然ssh 由于安全问题不生效
authorized_keys 权限改为 644 就OK 
 
命令 chmod g-w authorized_keys
 
然后分发给 101和102
scp -r ~/.ssh/authorized_keys   hadoop@hadoop101:/home/hadoop/.ssh
scp -r ~/.ssh/authorized_keys   hadoop@hadoop102:/home/hadoop/.ssh
验证: ssh hadoop101 
然后神奇的事情发生了。 3台机器彼此之间可以互联。
 
四、下载并解压jdk(只需对hadoop100操作)使用root用户进行操作,把jdk解压到/usr/local/ 文件夹中。

[root@hadoop100 local]#  cd /usr/local

[root@hadoop100 local]#  ./jdk-6u30-linux-x64.bin解压jdk后,生成jdk1.6.0_30文件夹

配置环境变量
[root@hadoop100 local]# vi /etc/profile在最后面加上下面两行
export JAVA_HOME=/usr/local/jdk1.6.0_30
export PATH=.:$JAVA_HOME/bin:$PATH
保存退出
[root@hadoop100 local]# source /etc/profile使新修改的环境变量生效。
 
验证: java -version
五、下载并解压hadoop安装包(仅对hadoop100操作)
 
5.1解压hadoop并重命名
 
使用root用户进行以下操作
tar -zxvf /usr/local/hadoop-1.1.2.tar.gz 
解压后生成文件夹hadoop-1.1.2。
重命名 mv hadoop-1.1.2 hadoop
 
5.2修改权限,使得hadoop用户可以操作hadoop文件夹
 
chown -R hadoop /usr/local/hadoop/
chgrp -R hadoop /usr/local/hadoop/
 
5.3设置hadoop环境变量
 
vi /etc/profile

修改为
export JAVA_HOME=/usr/local/jdk1.6.0_30
export HADOOP_HOME=/usr/local/hadoop

export PATH=.:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH
保存退出
source /etc/profile
 
验证: hadoop
 
六、设置hadoop参数
进入 usr/local/hadoop/conf 文件夹,即可看到以下文件
6.1配置hadoop-env.sh
 
找到export JAVA_HOME这一行,去除前面的#号注释符。
修改 export JAVA_HOME=/usr/local/jdk1.6.0_30
 
6.2配置core-site.xml
 
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop100:9000</value>#namenode的IP地址与端口
<description>change your own hostname</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/tmp</value>
</property> 
</configuration>
#/home/hadoop/tmp这个文件夹要自己建立的,如果没有会报错,还有要查看tmp的权限,增加所有用户的写权限 
6.3配置hdfs-site.xml
 
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>#表示数据备份份数
</property>
</configuration>
 
6.4配置mapred-site.xml
 
<configuration>
<property>
<name>mapred.job.tracker</name>#jobtracker的IP地址及端口
<value>hadoop100:9001</value>
<description>change your own hostname</description>
</property>
</configuration>
 
6.5配置masters文件
 
将masters里的localhost改成hadoop100
 
6.6配置slaves文件
 
将slaves里的localhost改成
hadoop101
hadoop102
 
七、向其他机器复制jdk以及hadoop和一些配置
 
7.1分发hosts到其他机器(root用户)
 
scp -r /etc/hosts root@hadoop101:/etc/
scp -r /etc/hosts root@hadoop102:/etc/
 
7.2 分发java(root用户)
 
scp -r /usr/local/jdk1.6.0_30 root@hadoop101:/usr/local/
scp -r /usr/local/jdk1.6.0_30 root@hadoop102:/usr/local/
 
7.3分发环境变量/etc/profile(root用户)
 
scp -r /etc/profile root@hadoop101:/etc/
scp -r /etc/profile root@hadoop102:/etc/
 
分别通过ssh远程登录其他电脑
执行source /etc/profile 
分别验证: java -version
ping hadoop101
ping hadoop100
 
7.4分发hadoop(root用户)
 
scp -r /usr/local/hadoop/ root@hadoop101:/usr/local/hadoop/
scp -r /usr/local/hadoop/ root@hadoop102:/usr/local/hadoop/
再通过ssh远程登录其他电脑修改hadoop权限,如5.2所示。
再分别验证:hadoop
 
八、格式化hdfs
在hadoop100,hadoop101, hadoop102的hadoop用户下
执行命令 hadoop namenode -format 
 
九、启动hadoop
hadoop100 上执行 start-all.sh
用jps检验
hadoop100上有

32387 Jps
32283 JobTracker
32198 SecondaryNameNode
32021 NameNode

hadoop101和hadoop102上有

30770 TaskTracker
30866 Jps
30666 DataNode

说明运行成功,。,这时你可以运行个wordcount这个小例子体验一下、。

运行hadoop的时候两个错误

ERROR namenode.NameNode: java.io.IOException: Cannot create directory/home/hadoop/tmp
ERROR namenode.NameNode: java.io.IOException: Cannot remove current directory:/home/hadoop/tmp/hdfsconf/name/current
原因是 没有设置 /home/hadoop/tmp的权限没有设置, 将之改为:

chown –R hadoop100:hadoop100 /home/hadoop/tmp

sudo chmod -R a+w /home/hadoop/tmp


参考博客:http://www.cnblogs.com/arbitrary/p/3902780.html

                            http://blog.csdn.net/xumin07061133/article/details/8682424

            

hadoop完全分布式模式的安装和配置

标签:

原文地址:http://blog.csdn.net/ch18255112191/article/details/51338028

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!