【问题标题】:Yarn and MapReduce resource configurationYarn 和 MapReduce 资源配置
【发布时间】: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


【解决方案1】:

是的,这个配置不错。但我想提几个变化。

对于reducer内存,应该是 mapreduce.reduce.memory.mb=10240(我觉得是打错字了。)

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

你应该放

Container Virtual CPU Cores=15

对于 Reducer,因为你只运行 3 个 reducer,你可以给

Reduce Task Virtual CPU Cores=5

对于映射器

Mapper Task Virtual CPU Cores=3

将在(reducer 或 mapper) = min(总内存/mapreduce.(reduce OR map).memory.mb,总计 cores/(映射或减少)任务虚拟 CPU 核心)。

详细了解请参考http://openharsh.blogspot.in/2015/05/yarn-configuration.html

【讨论】:

  • 感谢您的建议!我不能查看那个博客,因为它只是邀请。我明白了,因为我有 16 个内核,我应该为 map 和 reduce 容器分配 3cores*5map=15cores5cores*3reduce=15cores,但为什么你为容器选择 12 个内核?容器不应该是 15 核吗?
  • 是的,它应该只有 15 个。错字。我还更改了博客的读取权限。现在你可以看到它了。
  • 链接已失效。任何等价物?
猜你喜欢
  • 2018-12-07
  • 2018-03-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-03
  • 2015-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多