zoukankan      html  css  js  c++  java
  • hadoop balance工具平衡集群dfs存储及遇到异常Got error, status message Not able to receive block 1073959989 from /192.168.1.37:3004 because threads quota is exceeded

    hadoop集群某个节点dfs存储比其他节点存储高时,一般会使用hadoop提供的balance(start-balancer.sh -threshold 10 )工具来移动高存储节点上的块到低存储节点上.

    其中 -threshold 默认设置:10,参数取值范围:0-100,参数含义:判断集群是否平衡的目标参数,每一个 datanode 存储使用率和集群总存储使用率的差值都应该小于这个阀值 ,理论上,该参数设置的越小,整个集群就越平衡,但是在线上环境中,hadoop集群在进行balance时,还在并发的进行数据的写入和删除,所以有可能无法达到设定的平衡参数值

    进行平衡时,可能会抛出 "because threads quota is exceeded., block move is failed"  这样的异常,这是因为在rebalanecing server启动的线程数有限,hdfs-site.xml配置中(dfs.datanode.balance.max.concurrent.moves)默认配置是5,可以适当将该值调大

    在hdfs-site.xml中(注意!!!相应的datanode节点也要设置,不然运行时会抛异常,配置后重新启动对应的namenode与datanode)

    <property>
            <name>dfs.datanode.balance.max.concurrent.moves</name>
            <value>1024</value>
    </property>

    一般主机性能好的可以调整到300~1024不等

    在运行时拷贝的数据也会受带宽影响,hdfs-site.xml中(dfs.datanode.balance.bandwidthPerSec)默认配置值是1M即是1048576字节,视集群带宽情况而定(ifconfig 命令查看网卡,ethtool 命令 指定网卡 如:ethtool  eth1 查看带宽其中的Speed项就是带宽)设置好带宽

    <property>
            <name>dfs.datanode.balance.bandwidthPerSec</name>
            <value>10485760</value>
    </property>

    另外,一般在平衡时,可以先停止存储比较高的节点上的nodemanager,这样在该节点上就不会受本地nodemanager落数据到本地,使得本地存储迅速增加的影响.

  • 相关阅读:
    IDOC练习(一、发送端配置)
    节约性能的一个sql
    获取用户IP地址及用户名
    获取一个结构的所有字段
    获取文件名称的两个函数
    时间戳
    SMOD和CMOD
    内表生成XML简单实例
    ABAP&nbsp;编辑器设置(主动…
    ABAP常用Function
  • 原文地址:https://www.cnblogs.com/xjh713/p/10088897.html
Copyright © 2011-2022 走看看