大家好,又见面了,我是全栈君,今天给大家准备了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
版权声明:本文博客原创文章。博客,未经同意,不得转载。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/117226.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...