Hadoop完全分布式+HA配置

这里简单总结一下自己在配置Hadoop完全分布式以及namenode的HA的步骤及遇到的问题和解决方法。
错误的地方还请大家指出。
namenode的HA(high availability)如下图


将namenode的元数据存储在多个journalnode组成的集群中。active namenode 与 standbynamenode的元数据是相同


的并且是同时实时更新的。


这里我们利用VMware搭建四个节点的集群hadoop的各个节点分布如下:



准备包:JDK,hadoop,zookeeper

1、core-site.xml的配置

(按照相应版本的文档页面配置)

2、hdfs-site.xml的配置

(按照相应版本的文档页面配置)

3、准备zookeeper

   a\ 三台zookeeper


   b\ 修改zoo.cfg配置文件

(找到相应版本的文档页面)

      修改dataDir:

      dataDir=/cong/hadoop_tmp/zookeeper

      尾部添加:

      server.1=node1:2888:3888
      server.2=node2:2888:3888
      server.3=node3:2888:3888

(在一台机器上配置好hadoop和zookeeper然后将程序文件考(scp)到其他机器便可)


4、启动三个zookeeper:  ./zkServer.sh start


5、启动三个journalnode:  ./hadoop-daemon.sh start journalnode


6、在其中一个namenode上格式化:  ./hdfs namenode -format


7、把刚刚格式化之后的元数据拷贝到另外一个namenode上

    a\ 启动刚刚格式化的namenode: ./hadoop-daemon.sh start namenode

    b\ 在没有格式化的namenode上执行: ./hdfs namenode -bootstrapStandby

    c\ 启动第二个namenode



8、在其中一个namenode上初始化zkfc:  ./hdfs zkfc -formatZK


9、停止上面的节点:./stop-dfs.sh


10、全面启动:./start-dfs.sh


11、配yarn: mapred-site.xml yarn-site.xml


创建目录: ./hdfs dfs -mkdir -p /cong/tmp

上传本地文件
./hdfs dfs -put /cong/temp/hello.txt /cong/tmp

运行jar包
./hadoop jar /cong/temp/WordCount.jar cong.mr.JobRun /cong/tmp/hello.txt /cong/tmp/wcout



遇到的问题及解决方法

1、免密码登录


分别在各个节点上执行以下命令:


 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

 
  
然后如做node1到node2的免密码登录则执行以下命令:

 
  
首先将node1的公钥文件拷贝至node2:

 
  
scp ~/.ssh/id_dsa.pub root@node2:/root/
cat /root/id_dsa.pub >> /root/.ssh/authorized_keys
即将node1的公钥追加至node2的authorized_keys文件中。

本人遇到过The authenticity of host *** can’t be established ,需要输出一个“yes”的交互,试过网上的方法不行,本

人修改了相应节点的IP地址解决了。

2、./hdfs zkfc -formatZK遇到错误如下:



16/05/08 21:01:39 INFO zookeeper.ClientCnxn: Opening socket connection to server node2/192.168.17.3:2181. Will not attempt to authenticate using SASL (unknown error)
16/05/08 21:01:40 INFO zookeeper.ClientCnxn: Socket connection established to node2/192.168.17.3:2181, initiating session
16/05/08 21:01:40 INFO zookeeper.ClientCnxn: Unable to read additional data from server sessionid 0x0, likely server has closed socket, closing socket connection and attempting reconnect
16/05/08 21:01:40 INFO zookeeper.ClientCnxn: Opening socket connection to server node3/192.168.17.4:2181. Will not attempt to authenticate using SASL (unknown error)
16/05/08 21:01:40 INFO zookeeper.ClientCnxn: Socket connection established to node3/192.168.17.4:2181, initiating session
16/05/08 21:01:40 INFO zookeeper.ClientCnxn: Unable to read additional data from server sessionid 0x0, likely server has closed socket, closing socket connection and attempting reconnect
16/05/08 21:01:41 INFO zookeeper.ClientCnxn: Opening socket connection to server node1/192.168.17.2:2181. Will not attempt to authenticate using SASL (unknown error)
16/05/08 21:01:41 INFO zookeeper.ClientCnxn: Socket connection established to node1/192.168.17.2:2181, initiating session
16/05/08 21:01:41 INFO zookeeper.ClientCnxn: Unable to read additional data from server sessionid 0x0, likely server has closed socket, closing socket connection and attempting reconnect

解决方法:

看看自己是不是在/etc/hosts设置文件里给127.0.0.1配置了像node2这样的主机名,去掉127.0.0.1额外配的主机名便好。
当然还有些其他导致此错误的可能原因:比如zookeeper节点数目不是大于1的奇数(好像会有这种错误)


3、 datanode无法启动

这个问题一般是由于两次或两次以上的格式化NameNode造成的,尝试删除将集群中每个

datanode的/hdfs/data/current中的VERSION删掉,然后执行hadoop namenode -format重

启集群。

4、执行jar包时遇到如下错误:

org.apache.hadoop.yarn.exceptions.YarnException: Unauthorized request to start container

原因:namenode,datanode时间同步问题;

解决方法:若节点均已联网,在每台服务器上执行:ntpdate time.nist.gov (不行就是用国内速度比较快的nt服务

器http://blog.csdn.net/huang_xw/article/details/8711037)

vmware NET模式节点联网问题参照http://www.2cto.com/os/201109/103214.html 注意最后域名无法解析的部分!

ntpdate 直接加ntp服务器的ip便可解决!(本人用的为:ntpdate 202.118.1.81)

5、启动集群后两个namenode的状态全部都是standby

解决方法:简单粗暴:强制切换namenode状态 ./hdfs haadmin -transitionToActive -forcemanual nn1

nn1为配置时为namenode所起的服务名!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值