【发布时间】:2015-05-05 08:51:32
【问题描述】:
我目前正在运行一个伪分布式 Hadoop 系统。该机器有 8 个核心(16 个虚拟核心),32 GB 内存。
我的输入文件在几 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
对于地图任务容器,我将最小容器大小翻了一番,这将允许最多 5 个地图任务
mapreduce.map.memory.mb=6144
如果我想分配最多 3 个 Reduce 任务:
mapreduce.map.memory.mb=10240
使用 JVM 堆大小来适应容器:
mapreduce.map.java.opts=-Xmx5120m
mapreduce.reduce.java.opts=-Xmx9216m
您认为这种配置会很好吗,或者您会改变什么,为什么?
【问题讨论】:
-
hortonworks 的链接已失效。我们可以有一个等价物吗?
标签: hadoop mapreduce hadoop-yarn