如何配置Hadoop,使一个特定节点将所有数据存储在HDFS上



我们有一台非常稳定的机器,我们希望将其用作Namenode。同时,我们还有很多其他机器非常不稳定,我们希望它们成为数据节点。现在,我们想以这样一种方式配置Hadoop,即Namenode(在本例中也作为Datanode)在HDFS上拥有整个数据的副本,这样集群就可以随时从中恢复数据。有人能帮我吗?

这不能用简单的方式完成。有办法,但它是混乱的,充满了各种各样的问题,将不值得

在实际的数据节点和名称节点上运行数据节点守护程序。在拓扑文件中,将所有真实的数据节点作为一个逻辑机架(R1)的一部分,将NN+DN机器作为不同的机架(R2)。请确保您的NN+DN的空间大于2*(所有DN的总磁盘容量)。请确保HDFS配置的复制因子为3。

创建块时,HDFS将在一个机架上放置2个复制副本,在另一个机架中放置第三个复制副本。因此,您的所有数据肯定都将在NN+DN单个主机上。这将对集群的性能产生什么影响,这是我不想讨论的问题。

甚至不要考虑在生产环境中这样做。事实上,你的要求是完全有缺陷的。跨数据节点拥有多个副本是Hadoop解决数据节点可靠性问题的方法。假设数据节点会不断失败,但数据不应该丢失——这已经融入了Hadoop的设计中。

这种方法本质上不是不可扩展的——系统将仅受一个节点的数据量限制
我也遇到过类似的需求,解决方案是构建一个更小的HDFS集群,它有很多存储空间,CPU和内存很少(以节省资金)。然后,我们可以定期将数据DISTCP作为备份发送到此集群。

最新更新