首页 理论教育 删除DataNode

删除DataNode

时间:2023-06-30 理论教育 版权反馈
【摘要】:有时会从HDFS集群中删除DataNode,例如离线升级或者维护一台机器。HDFS的设计非常有弹性,让一两个DataNode离线不会影响操作的正常运行。当想删除DataNode时,把它们列在排除文件中,每行列出一个节点。如果在启动HDFS时没有让dfs.hosts.exclude指向排除文件,退役DataNode的正确方法是关闭NameNode,设置dfs.hosts.exclude指向一个空的排除文件,重新启动NameNode。NameNode会认为它接触到的是系统之外的DataNode,而不是即将删除的节点。

删除DataNode

有时会从HDFS集群中删除DataNode,例如离线升级或者维护一台机器。从Hadoop中删除节点是非常简单的。虽然不推荐这样做,但的确可以“杀死”节点或将之从集群中断开。HDFS的设计非常有弹性,让一两个DataNode离线不会影响操作的正常运行。NameNo-de会检测到节点的死亡,并开始复制那些低于约定副本数的数据块。为了让操作更为顺畅和安全,特别当删减大批DataNode时,应该使用Hadoop的退役(decommissioning)功能,该功能确保所有块在剩余的活动节点上仍达到所需的副本数。要使用此功能,必须在NameNo-de的本地文件系统上生成一个排除文件(最初是空的),并让参数dfs.hosts.exclide在Name-Node的启动过程中指向该文件。当想删除DataNode时,把它们列在排除文件中,每行列出一个节点。还必须用完整的主机名,IP或IP:port的格式来指定节点。执行Bin/hadoop df-sadmin-refreeNodes来强制Name Node重新读取排除文件,并开始退役过程。当此过程结束后,NameNode的日志文件会出现像“Decommission complete for node 172.16.1.55:50010”这样的消息,此时就可以将节点从集群中移出了。

如果在启动HDFS时没有让dfs.hosts.exclude指向排除文件,退役DataNode的正确方法是关闭NameNode,设置dfs.hosts.exclude指向一个空的排除文件,重新启动NameNode。在NameNode成功重启后,就可以按照上面的步骤操作。请注意,如果在重启NameNode之前在排除文件中列出了需要删减的DataNode,那么NameNode就会混淆,而在日志中出现“ProcessReport form unregistered node:node055:50010”这样的消息。NameNode会认为它接触到的是系统之外的DataNode,而不是即将删除的节点。(www.xing528.com)

如果退役的机器在后来的某个时刻还会重新加入集群,应该在外部文件中删除它们,并重新执行bin/hadoop dfsadmin-refreshNodes来更新NameNode。当机器已经准备好重新加入集群时,可以按照后面介绍的步骤来添加它们。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈