分享

hadoop删除节点问题

jsh0401 发表于 2014-12-4 12:25:45 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 1 17744
按照百度所说的,删除节点以下步骤
1.配置conf/hdfs-site.xml  中 dfs.hosts.exclude 的路径


2.确定要下架的机器
dfs.hosts.exclude定义的文件内容为,每个需要下线的机器

3.强制重新加载配置
[root@master hadoop]# ./bin/hadoop dfsadmin -refreshNodes
它会在后台进行Block块的移动

4.
[root@master hadoop]# ./bin/ hadoop dfsadmin -report
可以查看到现在集群上连接的节点
正在执行Decommission,会显示:

Decommission Status : Decommission in progress
执行完毕后,会显示:

Decommission Status : Decommissioned

为什么我的要删除的节点status还是normal ?

已有(1)人评论

跳转到指定楼层
howtodown 发表于 2014-12-4 12:56:38


可能漏了一些步骤:

参考下面:


Hadoop集群节点的动态删除
1. 使用新增的节点
尽可能的在HDFS中产生一些测试数据,并通过Hive执行一些Job以便使新的节点也执行MapReduce并行计算。
这样做的原因是尽可能的模拟线上的环境,因为线上环境在进行删除节点之前肯定是有很多数据和Job执行过的。

2. 修改core-site.xml
dongguo@hadoop-master:~$ sudo vim /etc/hadoop/conf/core-site.xml

  1. <property>
  2. <name>dfs.hosts.exclude</name>
  3. <value>/etc/hadoop/conf/exclude</value>
  4. <description>Names a file that contains a list of hosts that are
  5. not permitted to connect to the namenode. The full pathname of the
  6. file must be specified. If the value is empty, no hosts are
  7. excluded.</description>
  8. </property>
复制代码


3. 修改hdfs-site.xml
dongguo@hadoop-master:~$ sudo vim /etc/hadoop/conf/hdfs-site.xml

  1. <property>
  2. <name>dfs.hosts.exclude</name>
  3. <value>/etc/hadoop/conf/exclude</value>
  4. <description>Names a file that contains a list of hosts that are
  5. not permitted to connect to the namenode. The full pathname of the
  6. file must be specified. If the value is empty, no hosts are
  7. excluded.</description>
  8. </property>
复制代码


4. 创建/etc/hadoop/conf/exclude
dongguo@hadoop-master:~$ sudo vim /etc/hadoop/conf/exclude

  1. hadoop-node-3
复制代码


在文件中增加需要删除的节点,一行一个,我这里仅需要写入新增的hadoop-node-3做测试。

5. 降低备份系数
在我的测试环境中,目前节点为4台,备份系数为3,如果去掉一台的话备份系数就与节点数相同了,而Hadoop是不允许的。
通常备份系数不需要太高,可以是服务器总量的1/3左右即可,Hadoop默认的数值是3。

下面,我们将备份系数从3降低到2

5.1 在所有的Hadoop服务器上更新以下配置
$ sudo vim /etc/hadoop/conf/hdfs-site.xml

  1. <?xml version="1.0"?>
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
  3. <configuration>
  4. <property>
  5. <name>dfs.data.dir</name>
  6. <value>/data/hdfs</value>
  7. </property>
  8. <property>
  9. <name>dfs.replication</name>
  10. <value>2</value>
  11. </property>
  12. <property>
  13. <name>dfs.datanode.max.xcievers</name>
  14. <value>4096</value>
  15. </property>
  16. </configuration>
复制代码

5.2 修改hdfs文件备份系数,把/ 目录下所有文件备份系数设置为2
dongguo@hadoop-master:~$ sudo -u hdfs hadoop dfs -setrep -w 2 -R /

遇到的疑问:
在进行文件备份系数的降低时,能够很快的进行Replication set,但是在Waiting for的过程中却很长时间没有完成。
最终只能手动Ctrl+C中断,个人猜测在这个过程中HDFS正视图对数据文件进行操作,在删除一个副本容量的数据。
因此,我们应该对dfs.replication的数值做出很好的规划,尽量避免需要降低该数值的情况出现。

6. 动态刷新配置
dongguo@hadoop-master:~$ sudo -u hdfs hadoop dfsadmin -refreshNodes

7. 检查节点的处理状态
通过WEB管理界面查看
Decommissioning(退役中)

http://10.6.1.150:50070/dfsnodelist.jsp?whatNodes=DECOMMISSIONING


Dead(已经下线)

http://10.6.1.150:50070/dfsnodelist.jsp?whatNodes=DEAD



可以看到,节点已经经历了退役的过程并成功的下线了。

需要注意的是:
在删除节点时一定要停止所有Hadoop的Job,否则程序还会向要删除的节点同步数据,这样也会导致Decommission的过程一直无法完成。

8. 检查进程状态
这时我们查看进程状态,可以发现datanode进程已经被自动中止了
dongguo@hadoop-node-3:~$ sudo /etc/init.d/hadoop-0.20-datanode status
hadoop-0.20-datanode is not running.

而Tasktracker进程还在,需要我们手动中止
dongguo@hadoop-node-3:~$ sudo /etc/init.d/hadoop-0.20-tasktracker status
hadoop-0.20-tasktracker is running
dongguo@hadoop-node-3:~$ sudo /etc/init.d/hadoop-0.20-tasktracker stop
Stopping Hadoop tasktracker daemon: stopping tasktracker
hadoop-0.20-tasktracker.

此时,即使我们手动启动datanode,也是不能成功的,日志中会显示UnregisteredDatanodeException的错误。
dongguo@hadoop-node-3:~$ sudo /etc/init.d/hadoop-0.20-datanode start

  1. Starting Hadoop datanode daemon: starting datanode, logging to /usr/lib/hadoop-0.20/logs/hadoop-hadoop-datanode-hadoop-node-3.out
  2. ERROR. Could not start Hadoop datanode daemon
复制代码

dongguo@hadoop-node-3:~$ tailf /var/log/hadoop/hadoop-hadoop-datanode-hadoop-node-3.log

  1. 2012-10-11 19:33:22,084 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: org.apache.hadoop.ipc.RemoteException: org.apache.hadoop.hdfs.protocol.UnregisteredDatanodeException: Data node hadoop-node-3:50010 is attempting to report storage ID DS-500645823-10.6.1.153-50010-1349941031723. Node 10.6.1.153:50010 is expected to serve this storage.
  2. at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getDatanode(FSNamesystem.java:4547)
  3. at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.verifyNodeRegistration(FSNamesystem.java:4512)
  4. at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.registerDatanode(FSNamesystem.java:2355)
  5. at org.apache.hadoop.hdfs.server.namenode.NameNode.register(NameNode.java:932)
  6. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  7. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  8. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  9. at java.lang.reflect.Method.invoke(Method.java:597)
  10. at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:557)
  11. at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1434)
  12. at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1430)
  13. at java.security.AccessController.doPrivileged(Native Method)
  14. at javax.security.auth.Subject.doAs(Subject.java:396)
  15. at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1157)
  16. at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1428)
  17. at org.apache.hadoop.ipc.Client.call(Client.java:1107)
  18. at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:226)
  19. at $Proxy4.register(Unknown Source)
  20. at org.apache.hadoop.hdfs.server.datanode.DataNode.register(DataNode.java:717)
  21. at org.apache.hadoop.hdfs.server.datanode.DataNode.runDatanodeDaemon(DataNode.java:1519)
  22. at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1586)
  23. at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:1711)
  24. at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1728)
  25. 2012-10-11 19:33:22,097 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG:
  26. /************************************************************
  27. SHUTDOWN_MSG: Shutting down DataNode at hadoop-node-3/10.6.1.153
  28. ************************************************************/
复制代码

至此,对Hadoop集群节点的动态删除也已经成功完成了。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条