电源故障后Hadoop数据损坏

时间:2017-04-10 20:12:13

标签: hadoop hdfs

我是Hadoop的新手并且通过使用每个节点都是Ubuntu Server VM的小型集群来学习使用它。群集由1个名称节点和3个数据节点组成,复制因子为3.在托管VM的计算机断电后,群集中存储的所有文件都已损坏,并且存储缺少这些文件的块。断电时没有运行查询,也没有向集群写入或读取文件。

如果我正确关闭虚拟机(即使没有先停止Hadoop集群),那么数据也会被保留,并且我不会遇到任何丢失或损坏的块问题。

我能够找到的唯一信息建议将dfs.datanode.sync.behind.writes设置为true,但这并未解决问题(从主机中删除虚拟机会导致与电源故障相同的问题) 。我发现here的信息似乎表明这个属性只会在将数据写入磁盘时产生影响。

我也试过运行hdfs namenode -recover,但这并没有解决问题。最终我必须删除存储在dfs.namenode.name.dir目录中的数据,重新启动集群中的每个VM以删除/tmp中的所有Hadoop文件,并重新格式化名称节点,然后再将数据从本地文件复制回集群存储

据我所知,群集中的所有节点都在同一硬件上运行,只有3个数据节点的复制因子为3,这不是一个理想的配置,但我想要一种方法来确保任何数据都是已写入磁盘的电源没有损坏。是否有我需要实现的属性或其他配置以避免将来(除了单独的硬件,更多节点,备用电源等)?

编辑:为了进一步澄清,我正在尝试解决的问题是数据损坏,而不是群集可用性。我知道我需要对整个集群架构进行更改以提高可靠性,但我想要一种方法来确保即使在群集范围内的电源故障时数据也不会丢失。

0 个答案:

没有答案