分享

hadoop2.2.0完全分布式,亲测........

本帖最后由 stone_nono 于 2014-8-7 11:26 编辑
目录
      1、硬件环境介绍
      2、集群环境搭建
      3、ssh免密码登陆配置
      4、jdk安装与配置
      5、hadoop安装与配置
      6、hadoop启动与验证
      7、安装配置中出现常见问题及解决方法

一:硬件环境                 


单台PC机
虚拟机  +  ubuntu12.0.4(32bit)



链接:http://pan.baidu.com/s/1kThyJOV 密码:n6m5

二:集群搭建   
1、这里我们搭建一个由三台机器组成的集群:
IP                          用户/密码    hostname     服务                 系统版本
192.168.154.131     lo/root        master         nd/sn/rm           ubuntu12.0.4(32bit)
192.168.154.131     lo/root        slave1          dn/dm               ubuntu12.0.4(32bit)
192.168.154.131     lo/root        slave2          dn/dm               ubuntu12.0.4(32bit)
服务
master:nd/sn/rm
对应服务 NameNode、SecondaryNameNode、ResourceManager
slave1/2:dn/dm
对应服务 DataNode、NodeManager
注意:
用户及权限须一致......方便后续免密码SSH登陆。

2、修改固定IP及配置hostname

2.1 配置固定IP
命令:sudo gedit /etc/network/interfaces
添加
auto eth0
iface eth0 inet static
address 192.168.154.131
netmask 255.255.255.0
gateway 192.168.154.1
sudo /etc/init.d/networking restart

重启网络配置

2.2 hostname在/etc/hostname中修改主机名
命令:sudo gedit /etc/hostname
      
hn.jpg


2.3 添加配置集群

命令:sudo gedit /etc/hosts

hs.jpg

3、安装配置SSH免密码登陆

3.1 下载安装SSH  
命令:sudo apt-get -i install ssh 自动下载安装

3.2 设置localhost无密码登陆

安装完成后会在~目录(当前用户主目录,即这里的/home/lo)下产生一个隐藏文件夹.ssh(ls  -a 可以查看隐藏文件)
。如果没有这个文件,自己新建即可(mkdir .ssh)。

具体步骤如下:

1、 进入.ssh文件夹
2、 ssh-keygen -t  rsa 之后一路回 车(产生秘钥)
3、 把id_rsa.pub 追加到授权的 key 里面去(cat id_rsa.pub >> authorized_keys)
4、 重启 SSH 服 务命令使其生效 restart ssh


验证SSH是否安装成功
       输入 ssh localhost 。如果显示本机登录成功就表明安装成功。
sshlh.jpg
【注意】:以上操作在每台机器上面都要进行。

3.3远程无密码SSH登陆

原理:实现master无密码登陆slave1、slave2,将master生成的密钥追加到slave1、slave2
密钥中.反向也如此
1、进入master .ssh目录,将id_rsa.pub公密通过scp命令拷贝到slave1中
scp ~/.ssh/id_rsa.pub lo@192.168.154.132:~/

2、进入slave1 .ssh目录,将从master拷贝过来的id_rsa.pub通过cat命令追加到slave1中
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

验证SSH远程无密码登陆

命令:ssh slave1(hostname)   是否无密码登陆(首次会提示输入密码)
sshr.jpg

【注意】:以上操作在每台机器上面都要进行。
关闭防火墙
   命令:sudo ufw disable
   注意:这步非常重要,如果不关闭,会出现找不到datanode的问题


4、Jdk安装
(hadoop运行环境需要1.6以上JDk,这里用1.7.0_45)建议每台机器使用相同JAVA_HOME路径

4.1、下载安装JDK,可参考命令安装SSH。

链接: http://pan.baidu.com/s/1eQCHguY 密码: 4cg1
4.2解压JDK安装包

   解压路径/home/lo/jdk_1.7.0_45

4.3配置JDK环境变量
打开/etc/profile
命令:sudo gedit /etc/profile
将如下变量添加后保存退出

#set java environment
export JAVA_HOME=/home/lo/jdk1.7.0_45(JDK路径)  
export JRE_HOME=${JAVA_HOME}/jre  
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
export PATH=${JAVA_HOME}/bin:$PATH

执行如下命令生效文件
命令:source ~/.profile

[注意]:由于系统会默认jdk路径,需执行如下3行更新默认jdk路径
命令:
sudo update-alternatives --install /usr/bin/java java /home/lo/jdk1.7.0_45/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /home/lo/jdk1.7.0_45/bin/javac 300
sudo update-alternatives --config java

验证Jdk是否安装成功
命令:java -version
jv.jpg


5、hadoop2.2.0分布式安装与配置

5.1 下载和解压hadoop

链接: http://pan.baidu.com/s/1qW6rcde 密码: 2r6g     

5.2 hadoop核心文件配置

这里要涉及到的配置文件有7个:
~/hadoop-2.2.0/etc/hadoop/hadoop-env.sh
~/hadoop-2.2.0/etc/hadoop/yarn-env.sh
~/hadoop-2.2.0/etc/hadoop/slaves
~/hadoop-2.2.0/etc/hadoop/core-site.xml
~/hadoop-2.2.0/etc/hadoop/hdfs-site.xml
~/hadoop-2.2.0/etc/hadoop/mapred-site.xml
~/hadoop-2.2.0/etc/hadoop/yarn-site.xml         
以上文件默认不存在的,可以复制相应的template文件获得。
如mapred-site.xml

配置文件1:hadoop-env.sh
修改JAVA_HOME值(export JAVA_HOME=/usr/jdk1.7)

配置文件2:yarn-env.sh
修改JAVA_HOME值(exportJAVA_HOME=/usr/jdk1.7)

配置文件3:slaves (这个文件里面保存所有slave节点)
sl.jpg

配置文件4:core-site.xml

<configuration>
<property>
                <name>fs.defaultFS</name>
                <value>hdfs://master:8020</value>
       </property>
       <property>
                <name>io.file.buffer.size</name>
                <value>131072</value>
        </property>
       <property>
               <name>hadoop.tmp.dir</name>
               <value>file:/home/lo/tmp</value>
               <description>Abase for other temporary   directories.</description>
       </property>
        <property>
               <name>hadoop.proxyuser.aboutyun.hosts</name>
               <value>*</value>
       </property>
       <property>
               <name>hadoop.proxyuser.aboutyun.groups</name>
               <value>*</value>
       </property>
</configuration>
注意:
<property>
               <name>hadoop.tmp.dir</name>
               <value>file:/home/lo/tmp</value>
               <description>Abase for other temporary   directories.</description>
</property>
说一下上面参数的含义,这里是hadoop的临时文件目录,file的含义是使用本地目录。
也就是使用的是Linux的目录,一定确保下面目录

/home/lo/tmp
的权限所属为你创建的用户。并且这里面我也要会变通,lo,为我创建的用户名,
如果你创建了zhangsan或则lisi,那么这个目录就会变为

配置文件5:hdfs-site.xml

<configuration>
  <property>
                <name>dfs.namenode.secondary.http-address</name>
               <value>master:9001</value>
       </property>
     <property>
             <name>dfs.namenode.name.dir</name>
             <value>file:/home/lo/dfs/name</value>
       </property>
      <property>
              <name>dfs.datanode.data.dir</name>
              <value>file:/home/lo/dfs/data</value>
       </property>
       <property>
               <name>dfs.replication</name>
               <value>3</value>
        </property>
        <property>
                 <name>dfs.webhdfs.enabled</name>
                  <value>true</value>
         </property>
        <property>
                 <name>dfs.permissions</name>
                  <value>false</value>
         </property>
</configuration>

配置文件6:mapred-site.xml

<configuration>
<property>                                                                              
<name>mapreduce.framework.name</name>
                <value>yarn</value>
           </property>
          <property>
                  <name>mapreduce.jobhistory.address</name>
                  <value>master:10020</value>
          </property>
          <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>master:19888</value>
       </property>
</configuration>

配置文件7:yarn-site.xml

<configuration>
<!-- Site specific YARN configuration properties -->
<property>
               <name>yarn.nodemanager.aux-services</name>
               <value>mapreduce_shuffle</value>
        </property>
        <property>                                                               
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
               <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>
        <property>
               <name>yarn.resourcemanager.address</name>
               <value>master:8032</value>
       </property>
       <property>
               <name>yarn.resourcemanager.scheduler.address</name>
               <value>master:8030</value>
       </property>
       <property>
            <name>yarn.resourcemanager.resource-tracker.address</name>
             <value>master:8031</value>
      </property>
      <property>
              <name>yarn.resourcemanager.admin.address</name>
               <value>master:8033</value>
       </property>
       <property>
               <name>yarn.resourcemanager.webapp.address</name>
               <value>master:8088</value>
       </property>
</configuration>


5.3 复制到其他节点
命令:sudo scp -r /home/lo/hadoop lo@slave1:~/


6、启动验证

6.1 启动hadoop

格式化namenode:
命令:hdfs namenode -format

启动hadoop

命令:sbin/start-all.sh


6.2  验证启动
master节点
JPS命令看到如下进程
NameNode
SecondaryNameNode
ResourceManager
m.jpg



slave1节点
JPS命令看到如下进程
DataNode
NodeManager
s.jpg


7、问题及解决方法

7.1、刚配置好的hadoop,namenode可以正常开启,但是datanode却不停的报错,并且不能正常启动:

2014-05-04 10:43:33,970 WARNorg.apache.hadoop.hdfs.server.datanode.DataNode: Problem connecting to server:hadoop1/192.168.10.22:9000

2014-05-04 10:43:55,009 INFOorg.apache.hadoop.ipc.Client: Retrying connect to server:hadoop1/192.168.10.22:9000. Already tried 0 time(s); retry policy isRetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
2014-05-04 10:43:56,012 INFOorg.apache.hadoop.ipc.Client: Retrying connect to server:hadoop1/192.168.10.22:9000. Already tried 1 time(s); retry policy isRetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)


如果你已经检查了datanode以及namenode的连通性,ip都正确,但是仍然没法解决问题,那么可以接着往下看了。

其实根本原因还是无法连接到192.168.10.22:9000 相应ip的相应端口。

查看一下namenode的端口监听情况:

[hdp@hadoop1 sbin]$ netstat -an | grep 9000
tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN     
tcp        0     0 127.0.0.1:37072            127.0.1.1:9000             TIME_WAIT   

由于127.0.1.1正在使用9000的监听端口(红色标记),
导致192.168.10.22:9000不能使用此端口
解决方法:
删除master节点
配置文件ect/hosts中 127.0.1.1这条IP配置,
重启后datanode可以连接







已有(1)人评论

跳转到指定楼层
stone_nono 发表于 2014-8-12 15:15:28
此帖仅作者可见

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条