hadoop的datanode多磁盘空间不统一…

本文讨论了Hadoop DataNode在面对不同大小磁盘时,如何通过配置`dfs.datanode.du.reserved`和`dfs.datanode.du.pct`来预留空间,以及当这些配置无效时,如何手动平衡磁盘块的方法。文章指出,Hadoop当前没有自动平衡磁盘块的机制,需要通过停用DataNode、移动数据块和重启DataNode来手动操作。
摘要由CSDN通过智能技术生成

转载注明出处


很多网上转载解决如下:

修改hdfs-site.xml:添加

<property>
  <name>dfs.datanode.du.reserved</name>
  <value>214748364800</value>
  <description>Reserved space in bytes per volume. Always leave this much space free for non dfs use.200G  </description>
</property>

不同磁盘空间大小,hadoop将数据平均写入,hadoop并不会自动将数据写到有更大空闲空间的磁盘中,还是会将之前的小磁盘写满,小磁盘写满会使mapreduce产生的临时文件没有空间写,而导致mapreduce执行失败。所以需要小磁盘留有一定的空闲空间,查看hadoop资料,设置 dfs.datanode.du.reserved配置项可以使每个磁盘保留相应的磁盘空间,单位使用bytes,但是我设置之后起作用了,总体容量下降,依然往小盘上写数据,艹艹,我使用的hadoop版本是cloudera的cdh4.6。


后续继续设置

<property>

        <name>dfs.datanode.du.pct</name>

        <value>0.96</value>

        <description>When calculating remaining space, only use this percentage of the real available space</description>

</property>

测试后依然如此。


观察源代码:

./hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsVolumeImpl.java

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

  long getCapacity() {

    long remaining = usage.getCapacity() - reserved;

    return remaining > ? remaining : 0;

  }

 

  @Override

  public long getAvailable() throws IOException {

    long remaining = getCapacity()-getDfsUsed();

    long available = usage.getAvailable();

    if (remaining > available) {

      remaining = available;

    }

    return (remaining > 0) ? remaining : 0;

  }

 

  long getReserved(){

    return reserved;

  }

./hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/LocalDirAllocator.java

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值