项目经验之Hadoop参数调优

    科技2022-07-16  114

    项目经验之Hadoop参数调优

    1)HDFS参数调优hdfs-site.xml

    dfs.namenode.handler.count= ,比如集群规模为8台时,此参数设置为41

    The number of Namenode RPC server threads that listen to requests from clients. If dfs.namenode.servicerpc-address is not configured then Namenode RPC server threads listen to requests from all nodes.

    画图解释:

    服务器启动,dn会上报数据块.注册成功之后nn会返回注册成功.一上电,多个dn都会上报,比如说只能处理3个,一下来了12个.还有9个数据块在等待,找了三个兄弟来帮他.这个参数就是指设置多少个客户端合适.

    NameNode有一个工作线程池,用来处理不同DataNode的并发心跳以及客户端并发的元数据操作。

    对于大集群或者有大量客户端的集群来说,通常需要增大参数dfs.namenode.handler.count的默认值10。

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

    2)YARN参数调优yarn-site.xml

    (1)情景描述:总共7台机器,每天几亿条数据,数据源->Flume->Kafka->HDFS->Hive

    面临问题:数据统计主要用HiveSQL,没有数据倾斜,小文件已经做了合并处理,开启的JVM重用,而且IO没有阻塞,内存用了不到50%。但是还是跑的非常慢,而且数据量洪峰过来时,整个集群都会宕掉。基于这种情况有没有优化方案。

    (2)解决办法:

    内存利用率不够。这个一般是Yarn的2个配置造成的,单个任务可以申请的最大内存大小,和Hadoop单个节点可用内存大小。调节这两个参数能提高系统内存的利用率。

    (a)yarn.nodemanager.resource.memory-mb

    表示该节点上YARN可使用的物理内存总量,默认是8192(MB),注意,如果你的节点内存资源不够8GB,则需要调减小这个值,而YARN不会智能的探测节点的物理内存总量。

    (b)yarn.scheduler.maximum-allocation-mb

    单个任务可申请的最多物理内存量,默认是8192(MB)。

    单节点默认内存8G,128G的生产环境,一般分配100G左右,如果是64G,分配50G.

    单个任务的默认内存是8G.那么这个数据怎么调呢?

    ​ 需要根据你的数据量来决定.128M的数据对应1G内存.

    ​ 如果你的数据到了2G,那就需要调到16G的内存了.

    如果前端的数据不支持切片,那maptask和reducetask的内存也需要适当的调整.

    maptask可以提高到4-6G

    不支持切片,那maptask和reducetask的内存也需要适当的调整.

    maptask可以提高到4-6G

    reducetask可以调高一点.4-6G

    Processed: 0.009, SQL: 8