美文网首页
hadoop集群防止磁盘损坏导致block丢失的解决方案

hadoop集群防止磁盘损坏导致block丢失的解决方案

作者: yinkp001 | 来源:发表于2019-08-15 17:41 被阅读0次

可能出现数据丢失的异常情况:

异常情况一:多个主机上同时(一分钟内)出现磁盘损坏时,可能导致同一block的数据及副本同时丢失,hdfs无法进行恢复,进而导致block丢失。

异常情况二:一个主机磁盘出现损坏,hdfs已经检测到,正在进行副本恢复过程中,又有其他主机出现磁盘损坏,从而导致没有及时恢复的block丢失。

使用数据冗余方案来防止block丢失:

原理:数据冗余方案实质上是通过增加block数据副本数来防止block丢失,通过牺牲存储来保证数据安全。本方案主要针对于解决异常情况一。hadoop集群目前默认设置的数据副本数为3,也就是说最多能同时容忍不同主机的二块盘出现损坏,当出现不同主机三块盘同时损坏时,就可能出现block丢失情况。

方法:

(1)hadoop集群动态设置block副本:

将/user文件夹下的数据设置5个副本:

hadoop fs -setrep 5 -R /user

(2)hadoop集群整体提高block副本数方法:

通过ambari修改hdfs配置文件:

可以修改为5,则设置集群数据副本数为5.

保存并重启hdfs生效。

注:这样即使三台主机的磁盘出现损坏,这个文件夹的数据也不会丢。除非同时五台主机的磁盘出现损坏,这个文件夹下的数据才可能丢失。

2.加快副本恢复速度来防止block丢失

原理:当一个主机的磁盘出现损坏时,集群会立刻对这块盘上的数据通过副本机制恢复到其它主机上。磁盘存储数据量越大,恢复时间会随之增长。我们通过优化hadoop集群的副本恢复参数来提升它的副本恢复速度,从而整体缩短副本恢复时间。本方案主要针对于解决异常情况二,防止出现数据恢复过程中的数据丢失。

方法:

通过ambari添加如下参数:

dfs.namenode.replication.work.multiplier.per.iteration  100

dfs.namenode.replication.max-streams  100

dfs.namenode.replication.max-streams-hard-limit 200

通过ambari保存配置并重启hdfs服务即可。


3.使用机架感知防止同一机架内坏盘导致数据丢失。

原理:hadoop集群配置机架感知后,同一机架内的所有主机只存储block数据的1~2个副本,总会有一个副本在其它机架。当同一机架内多个主机出现坏盘情况时,至少还有一个block副本可以提供访问和恢复,不会出现block数据丢失情况。

方法:

hadoop集群本身自带机架感知功能,在集群部署是没有使用的话,那么集群所有主机默认在一个机架下: /default-rack

可以通过ambari添加机架感知功能,具体操作如下(两种方法,选其中一个即可):

单个主机设置:

批量设置:

2. 设置完成后,需要重启hdfs 、mapreduce。

3.查看机架命令:

hadoop dfsadmin -printTopology 

相关文章

网友评论

      本文标题:hadoop集群防止磁盘损坏导致block丢失的解决方案

      本文链接:https://www.haomeiwen.com/subject/euftsctx.html