我使用hadoop 1.1.1。我的项目正在处理6000多个文件。我的集群包含2个节点:主站(CPU:COREi7,RAM:6G)和从站(CPU:COREi3,RAM:12G)。 MAPPER的数量是16.当我在洗牌阶段将REDUCER的数量设置为大于1(例如2,...,16)时,RAM开始交换,这导致我的系统速度显着降低。在HADOOP中混洗时交换内存
如何停止交换RAM? MAP和REDUCE之间的过程中保存在RAM中的是什么? 有没有参考?
非常感谢。
我使用hadoop 1.1.1。我的项目正在处理6000多个文件。我的集群包含2个节点:主站(CPU:COREi7,RAM:6G)和从站(CPU:COREi3,RAM:12G)。 MAPPER的数量是16.当我在洗牌阶段将REDUCER的数量设置为大于1(例如2,...,16)时,RAM开始交换,这导致我的系统速度显着降低。在HADOOP中混洗时交换内存
如何停止交换RAM? MAP和REDUCE之间的过程中保存在RAM中的是什么? 有没有参考?
非常感谢。
:
在从属:
现在,如果你一次只能运行一个作业,可以将软启动配置属性设置为1.0,以确保映射器和减压器不要同时运行,这将有所帮助,但你仍然最大的主人。
我建议你减少内存分配到1G(如果你真的想要在每个节点上有很多映射/减少插槽),或者减少两个节点的最大任务数,这样你就更接近物理金额(如果跑出最大)。
此外,您可以将mapred.reduce.slowstart.completed.maps设置为1.00,这意味着减速器将等待所有映射器完成,因此没有并行运行减速器和映射器。这可以减少内存需求。 – darkjh
你在'mapred-site.xml'('mapred.child.java.opts','mapred.map.child.java.opts'和'mapred.reduce.child)中设置了什么jvm标志。 java.opts')?还有,为每个节点配置的映射和减少任务的最大数量是多少(在mapred-site.xml中) –
master:'mapred.child.java.opts = -Xmx2g','mapred.tasktracker.map。 task.maximum = 8'和'mapred.tasktracker.reduce.task.maximum = 8'.And in slave'mapred.child.java.opts = -Xmx2g','mapred.tasktracker.map.task.maximum = 4'和'mapred.tasktracker.reduce.task.maximum = 4'。 – user90723014