一、HDFS
hdfs-site.xml
<!-- NameNode有一个工作线程池,用来处理不同DataNode的并发心跳以及客户端并发的元数据操作。对于大集群或者有大量客户端的集群来说,通常需要增大参数--> <property> <name>dfs.namenode.handler.count</name> <value>10</value> <description>The number of server threads for the namenode.</description> </property>
经验公式
dfs.namenode.handler.count=20 * log2(Cluster Size) ,
比如集群规模为8台时,此参数设置为20 * log2(8) = 60
二、Yarn
当集群内存占用率是50%左右,但是任务跑的很慢,高峰期还会挂掉,一般是内存利用率不高可从以下参数着手
yarn-site.xml
<!-- 表示该节点上YARN可使用的物理内存总量--> <property> <description>Amount of physical memory, in MB, that can be allocated for containers.</description> <name>yarn.nodemanager.resource.memory-mb</name> <value>8192</value> </property>
<!-- 单个任务可申请的最多物理内存量--> <property> <description>The maximum allocation for every container request at the RM, in MBs. Memory requests higher than this will throw a InvalidResourceRequestException.</description> <name>yarn.scheduler.maximum-allocation-mb</name> <value>8192</value> </property>
三、Hadoop宕机
3.1MR造成系统宕机。
此时要控制Yarn同时运行的任务数,和每个任务申请的最大内存,即yarn.scheduler.maximum-allocation-mb。
3.2因为写入文件过多NameNode宕机
启用Kafka,调高Kafka的存储大小,控制从Kafka到HDFS的写入速度。