我们有一台非常稳定的机器,我们希望将它用作Namenode。同时,我们有很多其他机器非常不稳定,我们希望它们是Datanodes。现在我们想要以一种方式配置Hadoop,Namenode(在本例中也是一个Datanode)拥有HDFS上整个数据的副本,这样集群总能从中恢复数据。任何人都可以帮我吗?
答案 0 :(得分:0)
这不能以直截了当的方式完成。有一种方法,但它是混乱的,充满了各种各样的问题,并不值得。
在实际的datanode和namenode上运行datanode守护进程。在拓扑文件中,将所有实际数据节点作为一个逻辑机架(R1)的一部分,将NN + DN计算机作为不同的机架(R2)。确保NN + DN的空间大于2 *(所有DN的总磁盘容量)。确保HDFS配置复制因子为3。
创建块时,HDFS将在一个机架上放置2个副本,在另一个机架上放置第三个副本。因此,您的所有数据肯定都会出现在NN + DN单一主机上。这对你的群集性能有什么影响,我不想深入了解。
甚至不要考虑在生产环境中这样做。事实上,您的要求是完全有缺陷的。跨数据节点具有多个副本是Hadoop如何解决Datanode可靠性的问题。假设数据节点将继续失败,但数据不应丢失 - 这已经融入Hadoop设计中。
答案 1 :(得分:0)
这种方法本身并不具有可扩展性 - 系统只受一个节点数据量的限制。
我遇到了类似的要求,解决方案是构建更小的HDFS集群,具有大量存储和少量CPU和内存(为了省钱)。然后,我们可以定期将DISTCP数据作为备份发送到此群集。