我们有一个非常稳定的机器,我们想用它作为namenode。同时,我们有很多其他机器是高度不稳定的,我们希望他们成为数据节点。现在我们要配置hadoop,使namenode(在本例中也是datanode)在hdfs上拥有整个数据的副本,这样集群就可以始终从中恢复数据。有人能帮我吗?
kkih6yb81#
这种方法并不是天生的不可伸缩性-系统将受到只有一个节点的数据量的限制。我也遇到过类似的需求,解决方案是用大量的存储空间和很少的cpu和内存构建更小的hdfs集群(以节省资金)。然后我们可以定期将cp数据分发到此集群作为备份。
bis0qfac2#
这不能以直接的方式来完成。有一种方法,但它是混乱的,充满了各种各样的问题,将是不值得的。在实际的datanode和namenode上运行datanode守护程序。在拓扑文件中,将所有实际数据节点作为一个逻辑机架(r1)的一部分,将nn+dn机器作为另一个机架(r2)的一部分。确保nn+dn的空间大于2*(所有dns的总磁盘容量)。确保hdfs配置为复制因子3。创建块时,hdfs将在一个机架上放置2个副本,在另一个机架上放置第三个副本。因此,您的所有数据都将在nn+dn单一主机上。这会对集群的性能造成什么影响,这是我不想谈的。甚至不要考虑在生产环境中这样做。事实上,你的要求是完全错误的。hadoop处理datanode可靠性的方式是跨datanode拥有多个副本。假设datanodes会不断失败,但是数据不应该丢失——这是hadoop设计的一部分。
2条答案
按热度按时间kkih6yb81#
这种方法并不是天生的不可伸缩性-系统将受到只有一个节点的数据量的限制。
我也遇到过类似的需求,解决方案是用大量的存储空间和很少的cpu和内存构建更小的hdfs集群(以节省资金)。然后我们可以定期将cp数据分发到此集群作为备份。
bis0qfac2#
这不能以直接的方式来完成。有一种方法,但它是混乱的,充满了各种各样的问题,将是不值得的。
在实际的datanode和namenode上运行datanode守护程序。在拓扑文件中,将所有实际数据节点作为一个逻辑机架(r1)的一部分,将nn+dn机器作为另一个机架(r2)的一部分。确保nn+dn的空间大于2*(所有dns的总磁盘容量)。确保hdfs配置为复制因子3。
创建块时,hdfs将在一个机架上放置2个副本,在另一个机架上放置第三个副本。因此,您的所有数据都将在nn+dn单一主机上。这会对集群的性能造成什么影响,这是我不想谈的。
甚至不要考虑在生产环境中这样做。事实上,你的要求是完全错误的。hadoop处理datanode可靠性的方式是跨datanode拥有多个副本。假设datanodes会不断失败,但是数据不应该丢失——这是hadoop设计的一部分。