1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| ssh zxsoft-hadoop-master-NameNode cd /home/hadoop/hadoop-1.2.1/conf/
1. 确定要下架的机器,创建exclude文件 vi exclude
添加需要删除的节点,一行一个: zxsoft-hadoop-slave-DataNode-TaskTracker-07 zxsoft-hadoop-slave-DataNode-TaskTracker-08 2. 修改conf/hdfs-site.xml文件 vi hdfs-site.xml 添加: <property> <name>dfs.hosts.exclude</name> <value>/home/hadoop/hadoop-1.2.1/conf/exclude</value> <description>Names a file that contains a list of hosts that are not permitted to connect to the namenode. The full pathname of the file must be specified. If the value is empty, no hosts are excluded.</description> </property> 修改core-site.xml vi core-site.xml 添加: <property> <name>dfs.hosts.exclude</name> <value>/home/hadoop/hadoop-1.2.1/conf/exclude</value> <description>Names a file that contains a list of hosts that are not permitted to connect to the namenode. The full pathname of the file must be specified. If the value is empty, no hosts are excluded.</description> </property>
3. 降低备份系数 如果下架后,机器不足了,就需要降低备份系数。
在我的测试环境中,目前节点为4台,备份系数为3,如果去掉一台的话备份系数就与节点数相同了,而Hadoop是不允许的。通常备份系数不需要太高,可以是服务器总量的1/3左右即可,Hadoop默认的数值是3。
下面,我们将备份系数从3降低到2。
3.1 在所有的Hadoop服务器上更新以下配置: vi hdfs-site.xml <property> <name>dfs.replication</name> <value>2</value> </property>
3.2 登陆zxsoft-hadoop-master-NameNode:修改hdfs文件备份系数,把/ 目录下所有文件备份系数设置为2。 sudo -u hdfs hadoop dfs -setrep -w 2 -R / 4. 动态刷新配置(强制重新加载配置) ssh zxsoft-hadoop-master-NameNode ./bin/hadoop dfsadmin -refreshNodes
5. 检查节点的处理状态 通过WEB管理界面查看 Decommissioning Nodes (退役中节点) Dead Nodes (已经下线) 6.检查进程状态 这时我们查看进程状态,可以发现datanode进程已经被自动中止了 jps
而Tasktracker进程还在,需要我们手动中止 jps ./hadoop-daemon.sh stop TaskTracker 此时,即使我们手动启动datanode,也是不能成功的,日志中会显示UnregisteredDatanodeException的错误。 ./hadoop-daemon.sh start DataNode
显示错误 此,对Hadoop集群节点的动态删除也已经成功完成了。 7.关闭节点 等待刚刚的操作结束后,需要下架的机器就可以安全的关闭了。
8. 再次编辑exclude文件 一旦完成了机器下架,它们就可以从exclude文件移除了。 需要注意的是: 在删除节点时一定要停止所有Hadoop的Job,否则程序还会向要删除的节点同步数据,这样也会导致Decommission的过程一直无法完成。
|