hadoop 添加删除节点以及搭建集群注意问题
1, 从集群中移走节点,需要对移走节点的数据进行备份:
在主节点的hdfs-site.xml配置文件中添加如下内容:
<property>
<name>dfs.hosts.exclude</name>
<value>/home/lqh/hadoop/excludes</value>
</property>
说明
dfs.hosts.exclude:指要删除的节点
/home/lqh/hadoop/excludes:指定要被删除节点的文件
2, /home/lqh/hadoop/excludes内容为删除节点的ip地址,每行一个
192.168.115.112
3,进入 运行命令:hadoop dfsadmin -refreshNodes,该命令可以动态刷新dfs.hosts(允许作为datanode的节点)和dfs.hosts.exclude(不允许作为datanode的节点)配置,无需重启NameNode。
执行完成后被删除节点datanode消失了,但是tasktracker还会存在,需要自己手动停掉
4,然后通过 hadoop dfsadmin -report查看,会发现被删除节点正在退役:
Name: 192.168.115.112:50010
Decommission Status : Decommission in progress
5,通过4中命令可以查看到被删除节点状态
Decommissioned 说明往其他节点同步数据已经完成,如果状态为Decommission Status : Decommissione in process则还在执行。
至此删除节点操作完成
问题总结:
在拔掉节点时注意要把往hadoop放数据程序先停掉,否则程序还会往要删除节点同步数据,删除节点程序会一直执行。
添加节点
1.修改host
和普通的datanode一样。添加namenode的ip
2.修改namenode的配置文件conf/slaves
添加新增节点的ip或host
3.在新节点的机器上,启动服务
[root@slave-004 hadoop]# ./bin/hadoop-daemon.sh start datanode
[root@slave-004 hadoop]# ./bin/hadoop-daemon.sh start tasktracker
4.均衡block
[root@slave-004 hadoop]# ./bin/start-balancer.sh
1)如果不balance,那么cluster会把新的数据都存放在新的node上,这样会降低mapred的工作效率
2)设置平衡阈值,默认是10%,值越低各节点越平衡,但消耗时间也更长
[root@slave-004 hadoop]# ./bin/start-balancer.sh -threshold 5
3)设置balance的带宽,默认只有1M/s
1<property>
2 <name>dfs.balance.bandwidthPerSec</name>
3 <value>1048576</value>
4 <description>
5 Specifies the maximum amount of bandwidth that each datanode
6 can utilize for the balancing purpose in term of
7 the number of bytes per second.
8 </description>
9</property>
注意:
1. 必须确保slave的firewall已关闭;
2. 确保新的slave的ip已经添加到master及其他slaves的/etc/hosts中,反之也要将master及其他slave的ip添加到新的slave的/etc/hosts中
集群搭建注意问题:
dfs.name.dir 与dfs.data.dir 目录不要提前创建,否则会启动namenode和datanode失败
hadoop.tmp.dir需要提前创建
master也可以充当slave