前言

本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和参考文献请见1000个问题搞定大数据技术体系

姊妹篇

Hadoop 调优之 Linux 操作系统调优篇
Hadoop 调优之 MapReduce 调优篇
Hadoop 调优之 YARN 调优篇
Hive 如何进行企业级调优?

正文

1. hdfs-site.xml

<propertv> 
    <name>dfs.block.size</name>
    <value>134217728</value>
</property>

解释: 该参数表示 Hadoop 的文件块大小,通常设为128MB或者256MB。

<property> 
    <name>dfs.namenode.handler.count</name> 
    <value>40</value>
</property> 

解释: 该参数表示 NameNode 同时和 DataNode 通信的线程数,默认为10,将其增大为40。

<property> 
    <name>dfs.datanode.max.xcievers</name> 
    <value>65536</value>
</property> 

解释: dfs.datanode.max.xcievers 对于 DataNode 来说就如同 Linux 上的文件句柄的限制,当 DataNode上面的连接数超过配置中的设置时, DataNode就会拒绝连接,修改设置为65536。

<property> 
    <name>dfs.datanode.balance.bandwidthPerSe</name>
    <value>20485760</value>
</property>

解释: 该参数表示执行 start-balancer.sh 的带宽,默认为1048576(1MB/s),将其増大到20MB/s

<property> 
    <name>dfs.replication</name> 
    <value>3</value> 
</property>

解释: 该项参数表示控制HDFS文件的副本数,默认为3,当许多任务同时读取一个文件时,读取可能会造成瓶颈,这时增大副本数可以有效缓解这种情况,但是也会造成大量的磁盘空间占用,这时可以只修改 Hadoop 客户端的配置,这样,从 Hadoop 客户端上传的文件的副本数将以 Hadoop 客户端的为准

<property> 
    <name>dfs.datanode.max.transfer.threads</name> 
    <value>4096</value> 
</property>

解释: 该参数表示设置 DataNode 在进行文件传输时最大线程数,通常设置为8192,如果集群中有某台 DataNode 主机的这个值比其他主机的大,那么出现的问题是,这台主机上存储的数据相对别的主机比较多,导致数据分布不均匀的问题,即使 balance 仍然会不均匀。

2. core-site.xml

<property> 
    <name>io.file.buffer.size</name>
    <value>131072</value> 
</property>

解释: Hadoop的缓冲区大小用于 Hadoop 读HDFS的文件和写HDFS的文件,还有map 的中间结果输出都用到了这个缓冲区容量,默认为4KB,增加为128KB。

上一篇 下一篇