我们有一个很好的大,复杂的弹性 - mapreduce作业,对Mapper VS Collector VS Reducer的硬件具有非常不同的限制。

问题是:对于映射器,我们需要吨轻量级机器,并行运行多个映射器(所有那里);收藏家饥饿的记忆更多,但它仍然可以为他们提供大约6GB的峰值堆。 。 。但是,问题是减速剂。当其中一个启动时,它将抓住约32-64GB以进行处理。

结果是,我们获得一个圆形robbin类型的任务死亡,因为盒子的完整内存是消耗的,这导致一个映射器和减速器都在别处重新启动。

如果我们可以以某种方式指定具有在不同的“群组”(少数几种少量盒子)上的Reducer运行的方式,则最简单的方法是如果我们可以在较小的框中运行的映射器/收集器,则可以在不同的“组”上指定有剪辑器/收集器的方法。这也可能导致显着的成本节约,因为我们真的不应大调节点映射器正在运行减速器的需求。

替代方案是“分解”工作,以便有一个第二群集可以旋转以处理映射器收集器的输出 - 但是,这显然是“次优”。

所以,问题是:

    有没有办法指定“组”映射器或减速器的方式 在弹性mapreduce和/或hadoop时运行?
  • 有没有办法防止减速器从所有映射器完成之前开始?
  • 有没有人有其他想法如何接近这个?

欢呼!

有帮助吗?

解决方案

在Hadoop MapReduce作业期间,在完成所有映射器后,还原器启动运行。从地图阶段的输出在分区之前播放并排序,以确定哪些减速器接收到哪些数据。因此,减速器在Shuffle / Sort阶段结束后开始运行(在映射器完成后)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top