hdfs balancer优化:
参考Hdfs-13813\Hdfs-9412\HDFS-8824以及hadoop3.1代码优化hdfs balancer:将getDatanodeStorageReport和getblocks的请求发送到Namenode standby以及忽略小数据块 修改的代码如下:
(1) 将日志记录模式修改为异步
Hdfs-site.xml中添加
<property>
<name>dfs.namenode.audit.log.async</name>
<value>true</value>
</property>
<property>
<name>dfs.namenode.edits.asynclogging</name>
<value>true</value>
</property>
(2) 将hdfs balancer获取存储信息的请求发送到standby namenode以及忽略小的数据块
Hdfs-site.xml中添加
<property>
<name>dfs.namenode.balancer.request.standby</name>
<value>true</value>
</property>
<property>
<name>dfs.balancer.getBlocks.min-block-size</name>
<value>10485760</value>
</property>
Namenode handler的hortonworks经验值,20*log2(cluster size),最大200 开启审计日志异步写 dfs.namenode.audit.log.async true 开启RPC拥塞控制,主要针对client rpc (hadoop-10597) ipc.8020.backoff.enable true 将单独的rpc queue 改为 多优先级队列 (hadoop-10282) ipc.8020.callqueue.impl org.apache.hadoop.ipc.FairCallQueue dfs.namenode.fslock.fair 默认为公平锁,针对读请求比写请求多很多的情况,如果改为非公平锁,会增加整个集群的吞吐
改进内容 |
相关配置 |
相关Patch |
日志异步写 |
hdfs-site.xml: |
无 |
hdfs balancer优化 |
hdfs-site.xml: |
HDFS-13183、HDFS-9412、HDFS-8824以及参考部分hadoop3.1代码 |
yarn日志独立拆分 |
hdfs-site.xml: |
YARN-3269 |
hdfsauditlog添加调用者信息 |
core-site.xml: |
HDFS-9184、HDFS-9343、HDFS-12300、YARN-4349 |
锁细粒度日志和metrics监控 |
hdfs-site.xml: |
HDFS-8893、HDFS-10475、HDFS-10872、HDFS-9145、HDFS-9467 |