美文网首页
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