zoukankan      html  css  js  c++  java
  • dfs.datanode.du.reserved 预留空间不生效的问题

    生产环境(cdh5.5.1)遇到一个问题:已经设置 dfs.datanode.du.reserved预留空间为20G,但是磁盘仍然被写满了。

    当挂载磁盘作为datanode的存储空间,如果磁盘大小为2000G,

    使用df -h 显示:总磁盘大小2000G,使用1930G,剩余40G,就会发现:2000G -(1930G+40G)= 30G,还差了30G空间。

    就是因为这30G空间的问题导致你磁盘写满,如果你配置datanode hdfs-site.xml里的dfs.datanode.du.reserved小于30G的话,而我们设置的是20G,所以磁盘就被写满 了,预留空间就没有起到实际作用

    [解决办法]

    就是设置hadoop dfs.datanode.du.reserved的值 = 总磁盘大小 - (使用的空间 + 剩余空间 )+ 设置的预留空间。

    比如: 
    在上面的基础上你设置预留空间为20G,那么dfs.datanode.du.reserved就可以设置为: 
    2000G -(1930G + 40G) + 20G = 50G。


    终其DataNode代码,发现应该是这样:

    1. long getAvailable() throws IOException {  
    2.        long remaining = getCapacity()-getDfsUsed();  
    3. -      long available = usage.getAvailable();  
    4. +      long available = usage.getAvailable() - reserved;  
    5.        if (remaining>available) {  
    6.          remaining = available;  
    7.        }  
    8.       return (remaining > 0) ? remaining : 0;  
    9. }

  • 相关阅读:
    Git for Windows安装教程
    MySQL 操作已存在的表(ALTER TABLE)
    Xiuno 简约白色主题
    PHP 文件上传操作类
    Leetcode 5. 最长回文子串
    Hexo开篇
    Laravel 模型关联——连带删除
    Layui表单赋初值之 checkbox
    Layui提交表单时验证必选的多选框是否有选中
    自定义 checkbox 和 radio
  • 原文地址:https://www.cnblogs.com/dailidong/p/7571081.html
Copyright © 2011-2022 走看看