转自 y哥 的 blog :http://www.tech126.com
向一个正在运行的Hadoop集群中增加几个新的Nodes
1. 新节点上部署java/hadoop程序,配置相应的环境变量
2. 新节点上增加用户,从master上拷贝id_rsa.pub并配置authorized_keys
3. 新节点上设置host,只要有本机和master的host即可
4. 新节点上建立相关的目录,并修改属主
5. master的slaves文件中增加上相的节点,master上增加相应的host
6. 在新节点上启动datanode和tasktracker
/opt/sohuhadoop/hadoop/bin/hadoop-daemon.shstart datanode
/opt/sohuhadoop/hadoop/bin/hadoop-daemon.sh start tasktracker
7. 进行block块的均衡
在hdfs-site.xml中增加设置balance的带宽,默认只有1M:
运行以下命令:
/opt/sohuhadoop/hadoop/bin/start-balancer.sh-threshold 3
均衡10个节点,移动400G数据,大概花费了3个小时
The cluster is balanced.Exiting…Balancing took 2.9950980555555557 hours
我们现有的Hadoop集群已经运行了一段时间了
由于集群中的服务器分布在2个不同的机房,受跨机房带宽的限制
集群中在2个机房之间的数据传输很慢
所以想把另一个机房的3台服务器从Hadoop集群中去掉
Hadoop提供了Decommission的特性,可以按照以下步骤来操作:
1. 在hadoop的conf目录下生成一个excludes的文件,写上需要remove的节点ip
一个节点一行,注意要写ip,不能写Hostname,如:
10.15.10.41
10.15.10.42
10.15.10.43
2. 在hdfs-site.xml中增加配置:
3. 复制以上2个文件到集群各节点上
4. 执行hadoop dfsadmin-refreshNodes命令,它会在后台进行Block块的移动
从移出的Nodes上移动到其它的Nodes上面
5. 通过以下2种方式查看Decommission的状态:
hadoop dfsadmin -report
http://10.10.71.220:50070/dfsnodelist.jsp
正在执行Decommission,会显示:
Decommission Status : Decommission in progress
执行完毕后,会显示:
Decommission Status : Decommissioned