1.开启带外心跳
mapred-site.xml 文件:mapreduce.tasktracker.outofband.heartbeat设置为True,,当任务完成时,带外心跳自动获取排除任务执行,提升集群利用率
2.针对小集群,缩短心跳间隔
mapred-site.xml 文件:mapreduce.jobtracker.heartbeat.interval.min
3.集群资源
Hadoop集群资源CPU/Memory及Hadoop 3.0支持的GPUs和云资源。
先确定YARN能使用的内存,通常是总内存-为操作系统保留内存
以下是不同配置的机器,操作系统保留内存建议值:
然后确定单个Container内存设置,不同机器推荐推荐值不一样
这样就可以确定YARN能使用的内存范围
对于单个结点上开户Container的计算,有个公式:
# of containers = min (2*CORES, 1.8*DISKS, (total available RAM) / MIN_CONTAINER_SIZE)
也就是Cpu cores 2倍,配载磁盘数的1.8倍,还有根据内存公式(total available RAM) / MIN_CONTAINER_SIZE)算出可用开启的containers数的综合考量。
参考:https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.6.5/bk_command-line-installation/content/determine-hdp-memory-config.html
再往下就是JOB和AM的虚拟内存和JVM实际分配内存配置
yarn.nodemanager.resource.cpu-vcores YARN所能获取到的CPU资源,通常为Total Cores减掉本结点开户Daemon数,如datanode、node manage等。
4.Map缓存设置 mapreduce.task.io.sort.mb 默认100MB改到256MB 能加速Map tasks io。
5.HDFS IO Buffer优化,io.file.buffer.size 默认4K,可以加大到128K,以提升 hdfs io operation。
6.Map spill file merge 优化,mapreduce.task.io.sort.factor,默认10,当map task output spilled到磁盘时,会有很多的spilled file,本参数控制同时merge的spilled 临时文件数。
7.Reduce Shuffle copy 优化,mapreduce.reduce.shuffle.parallelcopies 默认5个并发从Map 取output
整个优化过程关键在于3,以资源被全部使用为原则。
8.日志优化
曾经在400台机器的集群做过测试,各Deamon、Job日志级别在Info和Warn级别,性能相关10%。
网友评论