hadoop集群zookeeper迁移
1. zookeeper作用
ZooKeepr在Hadoop中的应用主要有:
1.1 HDFS中NameNode的HA和YARN中ResourceManager的HA。
1.2 存储RMStateStore状态信息
2. 迁移原因
原来的方案是考虑到namenode占用cpu资源小,为了提高设备利用率,把zookeeper和namenode搭建在同一台设备上。经过测试发现namenode会缓存大量的数据到内存中,导致zookeeper相应时间变长,namenode和resourcemanager因为连接zookeeper超时而频繁切换。进过讨论,将zookeeper迁移到datanode 节点上。
3. 迁移步骤
3.1 备份原zookeeper集群设备中的zookeeper配置,hadoop集群两个namenode节点的配置
cp -r zookeeper-3.4.10/conf zookeeper-3.4.10/conf.bak cp -r hadoop-2.6.0/etc/hadoop hadoop-2.6.0/etc/hadoop.bak
3.2 拷贝zookeeper安装包到选择好的三个datanode设备
scp zookeeper-3.4.10.tar.gz datanode1:/home/hadoop scp zookeeper-3.4.10.tar.gz datanode2:/home/hadoop scp zookeeper-3.4.10.tar.gz datanode3:/home/hadoop
3.3 修改配置文件,启动zookeeper,检查zookeeper状态
scp namenode:/home/hadoop/zookeeper-3.4.10/conf/zoo.cfg datanode1:/home/hadoop/zookeer-3.4.10/conf scp namenode:/home/hadoop/zookeeper-3.4.10/conf/zoo.cfg datanode3:/home/hadoop/zookeer-3.4.10/conf scp namenode:/home/hadoop/zookeeper-3.4.10/conf/zoo.cfg datanode3:/home/hadoop/zookeer-3.4.10/conf #修改配置文件中的ip地址为新zookeeper集群的设备ip vi zoo.cfg server.1=datanode1:2888:3888 server.2=datanode2:2888:3888 server.3=datanode3:2888:3888 #建myid文件,每个zookeeper的my.id要和配置文件中的server.id保持一致 vi myid 1 vi myid 2 vi myid 3 #启动zookeeper bin/zkServer.sh start #zookeeper全部启动完成后,查看zookeeper状态 bin/zkServer.sh status
3.4 修改hadoop相关配置文件,重启resourcemanger
修改hdfs-site.xml,core-site.xml,yarn-site.xml配置文件中的zookeeper地址。
cd /home/hadoop/hadoop-2.6.0 sbin/yarn-demon.sh stop resourcemanger sbin/yarn-demon.sh start resourcemanger
3.5 停zkfc,namenode应用
sbin/hadoop-demon.sh stop zkfc sbin/hadoop-demon.sh stop namenode
3.6 格式化zkfc,启动namenode,zkfc
bin/hdfs zkfc –formatZK sbin/hadoop-demon.sh start zkfc sbin/hadoop-demon.sh start namenode
3.7 测试hadoop和yarn可用性
#查看namenode:50070和namenode:8088webui是否正常 #向hdfs中上传测试文件,测试hdfs可用性 hdfs dfs -put test.txt /user/ #执行wordcount测试yarn可用性 hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount /user/test.txt /user/output
4. 总结
zookeeper对网络和磁盘及内存响应要求较高,不能和网络和磁盘及内存使用率高的应用共用主机。最好使用单独的设备。