0

我使用 hadoop 1.1.1。我的项目正在处理超过 6000 个文档。我的集群包含 2 个节点:主节点(CPU:COREi7,RAM:6G)和从节点(CPU:COREi3,RAM:12G)。MAPPER 的数量是 16。当我在洗牌阶段分配的 REDUCER 数量超过 1(ei 2,...,16) 时,RAM 开始交换,这会导致我的系统速度显着降低。

如何阻止 RAM 交换?在 MAP 和 REDUCE 之间的过程中,RAM 中保存了什么?有没有参考?

非常感谢。

4

1 回答 1

2

所以在主上:

  • 6G物理内存;
  • 每个进程分配 2G;
  • 8个mapper和8个reducer可以同时运行;
  • 8x2 + 8x2,如果所有任务都被最大化,则需要 32G 内存 - 超过您物理量的 5 倍。

在奴隶上:

  • 12G物理内存;
  • 每个任务分配 2G;
  • 4 个映射器,4 个减速器;
  • 4x2 + 4x2,需要 16G 内存 - 比物理多 50%。

现在,如果您一次只运行一个作业,您可以将 slowstart 配置属性设置为 1.0,以确保映射器和减速器不会同时运行,这会有所帮助,但您仍然会在 master 上达到极限.

我建议您将内存分配减少到 1G(如果您真的希望每个节点上有那么多 map / reduce 插槽),或者减少两个节点的最大任务数,这样您就更接近物理量(如果运行超出)。

于 2013-05-16T10:51:14.723 回答