如何优化MapReduce on Yarn集群的性能?
目录
优化MapReduce on Yarn集群的性能
1 提高map和reduce节点的内存容量
Yarn通过内存来控制作业,如果内存很小,MapReduce作业会受到限制,从而影响它的吞吐量和延迟。为了提高Yarn性能,可以增加MapReduce节点的内存容量,防止任务过度起来。针对Java的Mapreduce任务,可以按照以下步骤操作:
1.1 键入yarn-site.xml文件:
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>
1.2 把环境变量YARN_NODEMANAGER_RESOURCE_MEMORT_MB设置为2048或以上。
1.3 重新启动Yarn服务器,使设置生效。
2 增加分片数
每个MapReduce作业都有一个分片数(splits),分片数会通过MapReduce框架将数据输入到Map阶段。如果分片数过少,某些Map任务可能花费更多的时间,从而导致MapReduce作业运行效率低下。因此,在运行MapReduce作业时,应该适当增加分片数,以提高MapReduce作业的性能。可以在作业中指定分片数,或者通过配置文件在全局指定分片数:
2.1 键入mapred-site.xml文件:
<property>
<name>mapreduce.input.fileinputformat.split.minsize</name>
<value>67108864</value>
</property>
2.2 重新启动MapReduce服务,使设置生效。
3 线程池优化
Yarn使用线程池来处理集群中的作业请求,线程池的大小会影响MapReduce作业的性能。如果线程池太小,就会存在性能瓶颈;如果线程池太大,会造成资源浪费。所以,在调节Yarn性能时,需要优化线程池大小:
3.1 键入yarn-site.xml文件:
<property>
<name>yarn.nodemanager.resource.scheduler.maximum-allocation-mb</name>
<value>2048</value>
</property>