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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mysql数据库命令大全菜鸟_mysql常用命令[通俗易懂]

    mysql数据库命令大全菜鸟_mysql常用命令[通俗易懂]连接:mysql-h主机地址-u用户名-p用户密码(注:u与root可以不用加空格,其它也一样)创建授权:grantselecton数据库.*to用户名@登录主机identifiedby\”密码\”修改密码:mysqladmin-u用户名-p旧密码password新密码删除授权:revokeselect,insert,update,deleteom*.*f…

    2022年6月17日
    33
  • Linux系统CUDA10.2+CUDNN安装教程

    Linux系统CUDA10.2+CUDNN安装教程Ubuntu18.04下安装CUDA10.2及对应的CUDNN的教程。

    2022年6月12日
    69
  • Linux查看端口占用情况的几种方式「建议收藏」

    Linux查看端口占用情况的几种方式「建议收藏」概述测试环境为Centos7.9,本文简单给出了几种检测端口的例子。一、查看本机端口占用1、netstat#安装netstatyum-yinstallnet-tools#检测端口占用netstat-npl|grep”端口”2、lsof#安装lsofyum-yinstalllsof#检测端口占用lsof-i:端口号二、查看对方端口是否开放1、nc(netcat)#安装ncyum-yinstallnc#查看对方端口是否开放nc-vz对

    2022年7月27日
    6
  • python用flask框架开发的(python做一个登录注册界面)

    Python-Flask构建用户注册登录后端逻辑架构1、项目结构2、app.pyfromflaskimportFlask,render_templatefromcontroller.user_controllerimportuser_controllerfromdatetimeimporttimedeltaimportosapp=Flask(__name__)app.register_blueprint(user_controller)app.config[‘JS

    2022年4月14日
    120
  • HD2AV_F3B

    HD2AV_F3B文档内容:循环存储器的编写,每一行的像素输入进行存储,再依据目标像素所在行进行相应的读取。工程中会开辟一定空间的RAM用于存储,但是以一个循环的顺序去读写换时间节点:2014/12/20~2014/12/22一、循环RAM循环RAM即为一个循环读写的存储模块,数据填充满存储区间之后再从头接写入覆盖原有的存储空间。文档HD2AV_F3A中…

    2022年7月11日
    19
  • 在ListView中实现排序

    在ListView中实现排序此处介绍的情境是:(1)使用table布局ListView。(2)ListView的数据源是List。(3)排序字段2个(帖子的回复次数和浏览次数),都是int类型。基本思路:ListView触发数据

    2022年7月3日
    23

发表回复

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

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