Yarn和MapReduce资源配置

时间:2015-05-05 08:51:33

标签: hadoop mapreduce yarn

我目前正在运行伪分布式Hadoop系统。该机器有8个核心(16个虚拟核心),32 GB Ram。

我的输入文件介于几MB到约68 MB之间(gzip压缩日志文件,一旦达到> 60MB就会上传到我的服务器,因此无法修复最大大小)。我想在大约500-600个文件上运行一些Hive作业。

由于输入文件大小不一致,到目前为止我还没有在Hadoop中更改过块大小。据我所知,最好的情况是如果blocksize =输入文件大小,但是如果文件小于blocksize,Hadoop会填充该块直到它满了吗?输入文件的大小和数量如何影响性能,而不是一个大~40 GB的文件?

此设置的最佳配置如何?

根据本指南(http://hortonworks.com/blog/how-to-plan-and-configure-yarn-in-hdp-2-0/),我想出了这个配置:

32 GB Ram,为操作系统保留2 GB,为我提供了30720 MB,可以分配给Yarn容器。

yarn.nodemanager.resource.memory-mb=30720

有8个核心,我认为最多10个容器应该是安全的。因此对于每个容器(30720/10)3072 MB的RAM。

yarn.scheduler.minimum-allocation-mb=3072

对于Map任务容器,我将最小容器大小加倍,这将允许最多5个Map Tasks

mapreduce.map.memory.mb=6144

如果我想要分配最多3个Reduce任务:

mapreduce.map.memory.mb=10240

使JVM堆大小适合容器:

mapreduce.map.java.opts=-Xmx5120m
mapreduce.reduce.java.opts=-Xmx9216m

你认为这种配置会好吗,或者你会改变什么,为什么?

1 个答案:

答案 0 :(得分:2)

是的,这种配置很好。但我想提及的改动很少。

对于减速机内存,它应该是 mapreduce.reduce.memory.mb=10240(我认为这只是一个错字。)

我建议的另一个主要补充是cpu配置。

你应该把

Container Virtual CPU Cores=15

对于Reducer,因为你只运行3个减速器,你可以给出

Reduce Task Virtual CPU Cores=5

对于Mapper

Mapper Task Virtual CPU Cores=3
  

将在(reducer OR)中并行运行的容器数量   mapper)= min(total ram / mapreduce。(reduce OR map).memory.mb,total   cores /(Map OR Reduce)任务虚拟CPU核心。

请参阅http://openharsh.blogspot.in/2015/05/yarn-configuration.html了解详细信息。