Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为hadoop mapreduce配置java内存堆空间?_Java_Hadoop_Mapreduce_Heap_Shuffle - Fatal编程技术网

如何为hadoop mapreduce配置java内存堆空间?

如何为hadoop mapreduce配置java内存堆空间?,java,hadoop,mapreduce,heap,shuffle,Java,Hadoop,Mapreduce,Heap,Shuffle,我尝试在大约20GB的数据上运行mapreduce作业,但在reduce shuffle阶段出错。它说这是因为内存堆空间。然后,我在许多源代码中读到,我必须将mapreduce.reduce.shuffle.input.buffer.percent属性(mapreduce.reduce.shuffle.input.buffer.percent)减少为默认值0,7。所以,我把它减少到0,2 我想问,属性对我的mapreduce工作的时间性能有影响吗。那么,如何正确配置使我的mapreduce作业永

我尝试在大约20GB的数据上运行mapreduce作业,但在reduce shuffle阶段出错。它说这是因为内存堆空间。然后,我在许多源代码中读到,我必须将mapreduce.reduce.shuffle.input.buffer.percent属性(mapreduce.reduce.shuffle.input.buffer.percent)减少为默认值0,7。所以,我把它减少到0,2


我想问,属性对我的mapreduce工作的时间性能有影响吗。那么,如何正确配置使我的mapreduce作业永远不会出错?

mapreduce.reduce.shuffle.input.buffer.percent 0.70在shuffle过程中从最大堆大小分配到存储映射输出的内存百分比。 从这一点来看,如果将其减少到任意值,可能会降低洗牌阶段的性能。 默认值后面会有一定的推理和测试 您可以在此处查看其他相关属性

地图绘制者输出的近似数据是多少,如果数据量很大,则可能需要增加地图绘制者的数量 同样,如果reducer的数量较低,则在reduce阶段可能会发生堆空间错误

您可能需要检查作业计数器并增加映射器/还原器的数量 您还可以尝试增加映射器/还原器内存
通过设置属性mapreduce.reduce.memory.mb和mapreduce.map.memory.mb

非常感谢您的回答,我想再问一次,这样hadoop mapreduce就可以在内存配置错误时让任务失败。所以,我们可以说,这个问题取决于记录的数量,那么,hadoop如何处理这个问题或者最小化失败风险呢?Thanks shuffle不应该有这个问题。这就是大数据,东西不应该放在内存中。有一个bug。你使用的是旧版本吗?如果reduce任务内存不足,那么这是程序员的错误(reducer的数量过低或自定义分区不好)。通过使用hadoop 2.6.0,我将reduce任务的数量设置为与从节点的数量相同,你觉得呢?我现在也遇到了类似的问题,这是一个公开的错误。为你的数据集和内存系统找到一个合适的值可能是一个解决方法。谢谢,顺便问一下,我可以问一些其他问题吗。在hadoop中,我们如何从应用程序中获得总内存和cpu使用率。我们可以根据每个作业或每个应用程序的总使用率来获取它,或者我们可以根据每个节点的使用率来获取它?谢谢