我们有一台非常稳定的机器,我们想将它用作 Namenode。同时,我们还有很多其他高度不稳定的机器,我们希望它们成为 Datanodes。现在我们想要配置 Hadoop,使 Namenode(在这种情况下也作为 Datanode)拥有 HDFS 上整个数据的副本,以便集群始终可以从中恢复数据。有人可以帮我吗?
问问题
192 次
2 回答
0
这不能以直接的方式完成。有一种方法,但它很乱,充满各种问题,不值得。
在您的实际数据节点和名称节点上运行数据节点守护程序。在您的拓扑文件中,将所有真实数据节点作为一个逻辑机架 (R1) 的一部分,并将 NN+DN 机器作为不同的机架 (R2)。确保您的 NN+DN 有超过 2*(所有 DN 的总磁盘容量)的空间。确保 HDFS 配置为复制因子为 3。
创建块时,HDFS 会将 2 个副本放在一个机架上,将第三个副本放在另一个机架上。所以你所有的数据肯定会在 NN+DN 单主机上。这将对您的集群性能产生什么影响,这是我不想讨论的。
甚至不要考虑在生产环境中这样做。事实上,你的要求是完全有缺陷的。跨数据节点拥有多个副本是 Hadoop 解决数据节点可靠性的方式。假设数据节点将不断失败,但数据不应该丢失 - 这已融入 Hadoop 设计。
于 2012-10-07T08:44:00.250 回答
0
这种方法本质上不是不可扩展的——系统将受到只有一个节点的数据量的限制。
我也遇到过类似的需求,解决方案是构建具有大量存储空间和少量 CPU 和内存的更小的 HDFS 集群(以节省资金)。然后我们可以定期将数据DISTCP到这个集群作为备份。
于 2012-10-07T21:58:15.937 回答