Federation+HA集群运维

Federation+HA集群运维

 

hadoop管理客户端

copy一个hadoop部署目录作为客户端,用于集群的管理和监控,我的客户端如下:

客户端目录:

/home/deploy/hadoop/ hadoop-2.0.6-cilent-lin

  • 修改客户端hadoop的core-site.xml

<property>

   <name>fs.defaultFS</name>

 <!-- <value>viewfs:///</value>-->

   <value>hdfs://server-solr-001.m6.server.com:9000</value>

               </property>

否则无法使用./bin/hdfs dfsadmin –report 等,fs.defaultFS 应该为active的namenode的地址。

  • 测试客户端:

 

 

不停机加datanode

  • slaves文件

将要加入的datanode加入到slaves中,避免以后集群重启忘记了。

  • dfs.hosts文件

在$HADOOP_HOME/etc/hadoop/ 创建dfs-hosts文件: dfs-hosts

Host1

Host2

Host3

newhost

注意:newhost不能出现在dfs.hosts.exclude文件中。并且dfs-hosts文件需要在两个NN都有。

  • 刷新节点

./bin/hdfs dfsadmin -refreshNodes

查看web监控如下:

 

 

发现已经有一个Decommissioned节点。

  • 启动新加的datanode

./sbin/hadoop-daemon.sh start datanode

 

  • 再次查看web监控

 

发现该Decommissioned节点已经是live node。

  • 查看standby的namenode

关键是要看看standby的namenode,是否感知到这个过程。

 

发现stanby的namenode并没有感知到上线的datanode。

经过实际验证,只有active的namenode才能感知到上线和下线操作。

  • 初步实现策略

初步处理策略,执行一次

./bin/hdfs dfsadmin -refreshNodes

后,手动kill掉active的namenode,使得standby的namenode变为active,再次执行

./bin/hdfs dfsadmin -refreshNodes

后,将刚才kill的namenode启动起来。

    注意:要将刚才kill的namenode启动起来。

然后在新加的datanode上面,启动此datanode

./sbin/hadoop-daemon.sh start datanode

 

  • 两外不用执行刷新,即refreshNodes,直接启动datanode,两个NN都可以感知到,而且运行也良好...后来我就直接启动了。

下线某个datanode

在$HADOOP_HOME/etc/hadoop/ 创建dfs.hosts.exclude文件:dfs-hosts-exclude

host

执行过程与添加一个新的datanode类似,下线过程最好不要直接停掉。

Namenode不停机替换

  将standby的NN手动kill掉,然后将这个NN的元数据同步到新的NN下,然后启动新的NN,这是后应该可以启动,但是新的NN感知不到livenodes,显示livenodes为0,此时可以顺次重启下DN,之后新的NN即可感知到了。

posted on 2014-05-21 11:54  里克尔奇  阅读(301)  评论(0编辑  收藏  举报