hadoop2.0的datanode数据存储文件夹策略的多个副本

hadoop2.0的datanode数据存储文件夹策略的多个副本

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

在hadoop2.0在,datanode数据存储盘选择策略有两种方式复制:

首先是要遵循hadoop1.0磁盘文件夹投票,实现类:RoundRobinVolumeChoosingPolicy.java

另外一种是选择可用空间足够多的磁盘方式存储,实现类:AvailableSpaceVolumeChoosingPolicy.java

选择策略相应的配置项是:

  <property>
    <name>dfs.datanode.fsdataset.volume.choosing.policy</name>
    <value>org.apache.hadoop.hdfs.server.datanode.fsdataset.AvailableSpaceVolumeChoosingPolicy</value>
  </property>

假设不配置。默认使用第一种方式。既轮询选择磁盘来存储数据副本,可是轮询的方式尽管可以保证全部磁盘都可以被使用,可是常常会出现各个磁盘直接数据存储不均衡问题,有的磁盘存储得非常满了,而有的磁盘可能还有非常多存储空间没有得到利用,全部在hadoop2.0集群中。最好将磁盘选择策略配置成另外一种,依据磁盘空间剩余量来选择磁盘存储数据副本,这样一样能保证全部磁盘都能得到利用,还能保证全部磁盘都被利用均衡。

在採用另外一种方式时还有另外两个參数会用到:

dfs.datanode.available-space-volume-choosing-policy.balanced-space-threshold 

默认值是10737418240。既10G,一般使用默认值即可,下面是该选项的官方解释:

This setting controls how much DN volumes are allowed to differ in terms of bytes of free disk space before they are considered imbalanced. If the free space of all the volumes are within this range of each other, the volumes will be considered balanced and block assignments will be done on a pure round robin basis. 

意思是首先计算出两个值,一个是全部磁盘中最大可用空间,另外一个值是全部磁盘中最小可用空间,假设这两个值相差小于该配置项指定的阀值时。则就用轮询方式的磁盘选择策略选择磁盘存储数据副本。

源码例如以下:

public boolean areAllVolumesWithinFreeSpaceThreshold() {
      long leastAvailable = Long.MAX_VALUE;
      long mostAvailable = 0;
      for (AvailableSpaceVolumePair volume : volumes) {
        leastAvailable = Math.min(leastAvailable, volume.getAvailable());
        mostAvailable = Math.max(mostAvailable, volume.getAvailable());
      }
      return (mostAvailable - leastAvailable) < balancedSpaceThreshold;
    }


dfs.datanode.available-space-volume-choosing-policy.balanced-space-preference-fraction

默认值是0.75f。一般使用默认值即可,下面是该选项的官方解释:
This setting controls what percentage of new block allocations will be sent to volumes with more available disk space than others. This setting should be in the range 0.0 – 1.0, though in practice 0.5 – 1.0, since there should be no reason to prefer that volumes with

意思是有多少比例的数据副本应该存储到剩余空间足够多的磁盘上。

该配置项取值范围是0.0-1.0,一般取0.5-1.0,假设配置太小,会导致剩余空间足够的磁盘实际上没分配足够的数据副本,而剩余空间不足的磁盘取须要存储很多其它的数据副本,导致磁盘数据存储不均衡。

參考:

http://www.it165.net/admin/html/201409/3635.html

http://blog.csdn.net/chenpingbupt/article/details/7972589


版权声明:本文博客原创文章。博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117226.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Database(Mysql)发版控制二

    Database(Mysql)发版控制二

    2022年1月27日
    115
  • USB Type C 接口引脚详解

    USB Type C 接口引脚详解1 TypeC 接口特点 TypeC 是一组对称的连接器 在使用的过程中不需要如同使用 USBA MinUSB MicroUSB 那样来辨别接口方向 其次能够承受较高的功率所以可以支持高达 100W 的功率 所以使用该接口可以更好的支持快速充电 以及支持更高的数据吞吐量 普通规格也达到 10Gb s 的数据带宽 可用于高清视频的传输 对于同时满足以上的要求 USBA MinUSB MicroUSB 接口无法达到的 2 TypeC 接口定义 USBTypeC 母口 USBType

    2025年8月26日
    2
  • verilog cpu流水线_设计一个非常简单的CPU

    verilog cpu流水线_设计一个非常简单的CPU快把这一篇给更了

    2022年8月14日
    4
  • HttpClient详细解释

    HttpClient详细解释Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性。因此熟练掌握HttpClient是很重要的必修内容,掌握HttpClient后,相信对于Http协议的了解会

    2025年6月1日
    4
  • linux查看硬盘smart信息_centos查看未挂载磁盘

    linux查看硬盘smart信息_centos查看未挂载磁盘1          编写目的在如今大数据的环境中,磁盘的性能和稳定性是非常重要的一个业务因素。在Linux系统中,smartctl是较为常用的磁盘检测工具。本文基于Linux系统中smartctl进行分析,目的在于说明相关工具的使用,并对SMART(Self-Monitoring,AnalysisandReportingTechnology)做一些分析。2          …

    2022年10月8日
    2
  • 穿女装上班的大厂程序员:我知道自己是个男生「建议收藏」

    穿女装上班的大厂程序员:我知道自己是个男生「建议收藏」本文转载自程序员技术“三流码农写UI,二流码农写架构,一流码农写算法,顶级码农穿女装。”——互联网圈子里,一直流传着这样一句无从考证的段子。程序员穿女装,是一个神秘而热门的话题。大部分人都曾经道听途说过相关的故事,也有人在网络上看过“女装大佬”的照片,比如曾经微博非官方举办过一次“程序员女装大赛”,引起过很多程序员的围观。但是生活里,似乎很少看到真实的女装程序员的事例。当小众文化、性别、和互联网的职业交融在一起,他们经历过什么样的故事,产生过什么样…

    2022年7月25日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号