当前位置 博文首页 > Shockang的博客:Hadoop 调优之 HDFS 调优篇

    Shockang的博客:Hadoop 调优之 HDFS 调优篇

    作者:[db:作者] 时间:2021-08-23 19:08

    前言

    本文隶属于专栏《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。

    cs