Hadoop-减少溢出记录的数量
我有一个Ubuntu虚拟机在独立/伪模式下运行,有4gb内存和4个内核 除以下内容外,所有内容均设置为默认值:Hadoop-减少溢出记录的数量,hadoop,hadoop-streaming,Hadoop,Hadoop Streaming,我有一个Ubuntu虚拟机在独立/伪模式下运行,有4gb内存和4个内核 除以下内容外,所有内容均设置为默认值: io.file.buffer.size=65536 io.sort.factor=50 io.sort.mb=500 mapred.tasktracker.map.tasks.maximum=4 mapred.tasktracker.reduce.tasks.maximum=4 这ofc将不会是一个生产机器,但我摆弄它,以掌握微调 我的问题是,当我运行我的基准Hadoop流作业(在1
io.file.buffer.size=65536
io.sort.factor=50
io.sort.mb=500
mapred.tasktracker.map.tasks.maximum=4
mapred.tasktracker.reduce.tasks.maximum=4
这ofc将不会是一个生产机器,但我摆弄它,以掌握微调
我的问题是,当我运行我的基准Hadoop流作业(在1.8gb文本文件上获得不同的记录)时,我得到了大量溢出的记录,而上述调整似乎并没有减少溢出。我还注意到,当我在Ubuntu的系统监视器中监视内存使用情况时,它从未得到充分利用,也从未超过2.2gb
我已经研究了chagingHADOOP\u HEAP
、mapred.map.child.java.opts
和mapred.reduce.child.java.opts
,但我不确定如何设置它们,因为默认值似乎足够了
我是否缺少一个允许Hadoop使用剩余ram从而减少溢出记录(希望加快作业)的设置,或者这是正常行为
非常感谢 分配给map/reduce任务的默认内存为200mb。您可以使用-Dmapred.child.java.opts=-Xmx512M增加该值 无论如何,这是一个关于hadoop tunning的非常有趣的材料
希望有帮助 除了增加内存之外,您是否考虑过在映射步骤之后是否可以为任务运行合并器,这将压缩并减少需要保留在内存中或溢出的记录量 不幸的是,当您使用流媒体时,它似乎必须用Java编码,并且不能用您正在使用的任何语言
这些幻灯片帮助了我。解释得很好。请看一看:看起来这个限制在最新版本的Hadoop中已经被取消了。现在的帮助内容为:-组合器可选。要作为组合器运行的命令