我目前运行的是一个伪分布式hadoop系统。该机器有8个内核(16个虚拟内核),32 gb ram。
我的输入文件在几mb到~68 mb之间(gzip日志文件,一旦它们达到>60mb,就会上传到我的服务器,因此没有固定的最大大小)。我想在大约500-600个文件上运行一些配置单元作业。
由于输入文件大小不一致,到目前为止我还没有在hadoop中更改blocksize。据我所知,最好的情况是blocksize=input file size,但是如果文件小于blocksize,hadoop会填充该块直到其满吗?输入文件的大小和数量如何影响性能,而不是说一个大的~40gb文件?
我的最佳配置是什么样的?
基于本指南(http://hortonworks.com/blog/how-to-plan-and-configure-yarn-in-hdp-2-0/)我想到了这个配置:
32gbram,为操作系统预留了2gb,给了我30720mb,可以分配给容器。
yarn.nodemanager.resource.memory-mb=30720
有8个核心,我认为最多10个容器应该是安全的。所以对于每个容器(30720/10)3072MB的ram。
yarn.scheduler.minimum-allocation-mb=3072
对于map任务容器,我将最小容器大小增加了一倍,这将允许最多5个map任务
mapreduce.map.memory.mb=6144
如果我想减少最多3个我分配的任务:
mapreduce.map.memory.mb=10240
使jvm堆大小适合容器:
mapreduce.map.java.opts=-Xmx5120m
mapreduce.reduce.java.opts=-Xmx9216m
你认为这个配置会很好,或者你会改变什么,为什么?
1条答案
按热度按时间g0czyy6m1#
是的,这个配置很好。但我想提及的变化很少。
对于reducer内存,应该是
mapreduce.reduce.memory.mb=10240
(我想这只是一个打字错误。)还有一个主要的补充,我将建议将是cpu配置。
你应该把
对于减速机,由于您只运行3个减速机,您可以给出
对于mapper
将在中并行运行的容器数(reducer或mapper)=min(总ram/mapreduce.(reduce或map).memory.mb,总内核数/(map或reduce)任务虚拟cpu内核数)。
请参考http://openharsh.blogspot.in/2015/05/yarn-configuration.html 详细了解。