hadoop集群在使用中可能会动态的增加或者删除节点,以下讲解具体如何实现
本地中使用的是hadoop1.1.2 ,centos6.5
动态增加节点
1 准备新的节点的hadoop运行环境
(1)关闭防火墙,关闭防火墙及自动重启功能
service iptables stop //关闭防火墙
chkconfig iptables off //关机开机后自动启动服务
(2)配置ssh协议,同时将公钥发送到主节点,然后主节点发送到其他各个从节点
(3)安装jdk,同时从其他节点复制hadoop安装文件和jdk安装文件,修改主节点的hosts增加新增加节点的ip及主机名映射关系,
(4)在节点的$HADOOP_HOME/conf/slaves文件中增加本次新增节点的主机名,如果有多个节点,每一行一个,修改此目的是如果重新启动该集群,新增加的节点也会同时启动
2 在新增加的从节点上启动datanode和tasktracker
$bin hadoop-daemon.sh start datanode
$bin hadoop-daemon.sh start tasktracker
3 在主节点上使用命令刷新节点
hadoop dfsadmin -refreshNodes
4 均衡block块
在新增加的节点上(任意一个)使用以下命令:
$bin start-balancer.sh
5 验证是否添加成功
(1)通过web界面看live nodes的数量
(2) 通过hadoop dfsadmin -report 查看
动态删除节点
主要思想是将这些节点添加到exclude配置中,类似于从节点slaves文件.
1 在主节点hdfs-site.xml文件中添加如下信息:
<property>
<name>dfs.hosts.exclude</name>
<value>/usr/local/hadoop/conf/exclude</value>
</porperty>
2 在上述配置指定的文件上添加需要动态删除的主机名,没行一个,例如:exclude文件中添加如下
example004
3 可以在节点上使用如下命令,强制重新加载配置
hadoopdfsadmin -refreshNodes
4 通过如下命令可以集群状态
hadoop dfsadmin -report
如果查看到如下信息,集群正在处理删除节点请求
5 集群处理完之后只是处理了datanode,此时还需要手工处理tasktracker