gpt4 book ai didi

Hadoop 如何停用一个 DataNode 并用另一台机器替换它?

转载 作者:可可西里 更新时间:2023-11-01 14:58:57 30 4
gpt4 key购买 nike

我正在为我的 5 节点 hadoop 集群使用 VM(1 个 VM 有 Name Node,1 个 VM 有 JobTracker/SecondaryNameNode/HMaster,3 个 VM 有 DataNodes/TaskTrackers/HRegionServers/Zookeepers),这是 Cloudera 发行版,我手动安装,而不是通过 Cloudera Manager 安装。

编辑 - 每个包含数据节点的虚拟机的磁盘空间大约用了 50-60%。我最好在明天早上之前完成这件事,但我可以在 24 小时内完成。

我必须返回其中一个 VM(特别是一个特定的 DataNode)并将其替换为另一个(不要问为什么)。我购买了第二台 VM,可以随时开始安装。

这是我目前的策略:

  1. rsync DataNode的数据目录到新节点,以及zookeeper的数据目录。
  2. rsync 所有配置文件(core-site.xml、hdfs-site.xml、mapred-site.xml、hbase-site.xml、zoo.cfg)
  3. 在 Stack Overflow 上提问

为什么是第三个? NameNode 保存存储在 HDFS 上的所有文件的所有 block 的位置的元数据。 HBase 元表指向具有 HFiles 数据的 RegionServers。 Zookeeper服务器在DataNode上的数据也是必不可少的。

如何指示 NameNode 和 HBase/Zookeeper 指向新采购的 VM 上的数据?我还没有考虑什么?

现在这实际上是一个开发环境,我可以使用 Pig 导出 HDFS 数据和 HBase 数据,清除所有 DataNode 和 Zookeeper 的数据目录,然后使用 Pig 将数据导回。除了跛脚之外,我相信这对我来说是一个很好的锻炼。

最佳答案

如果您只是更换一个合理大小的集群中的单个机器,您通常可以关闭要停用的机器的区域服务器等待区域重新分配,然后关闭数据节点并等待“在 Hadoop NameNode UI 中“复制不足的 block 数”降至零。然后,当您将新机器添加到集群时,您可以运行 Hadoop balancer重新平衡数据 block 的工具。然后使用 HBase shell 运行 HBase balancer命令。这将重新平衡 HBase 区域。

如果要停用多个节点,您可能需要阅读 draining nodes .您还可以使用 hdfs-site.xml 中的节点排除将节点标记为已停用( dfs.hosts.exclude ) 和 mapred-site.xml (mapreduce.jobtracker.hosts.exclude.filename)。

我发现 HBase 中的重新平衡区域相对较快,而且并不令人担忧。重新平衡 HDFS block 非常耗时,因此可能值得也可能不值得,具体取决于集群的大小和集群的满载程度。

就其值(value)而言,我实际上并没有尝试手动将数据从一个节点复制到另一个节点,但我知道在节点退役后重新插入该节点效果很好。 (例如,如果机器需要一些离线硬件维护。)鉴于此,如果您用具有相同 DNS 和/或 IP 地址的新主机替换退役的机器,我希望您的工作方式。它也可能只是按照您尝试过的方式工作,但它似乎需要做更多的工作,并且只有在您试图尽量减少集群配置不足的时间段时才有用。

关于Hadoop 如何停用一个 DataNode 并用另一台机器替换它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22498075/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com