我在执行大量模式匹配的情况下对1,5 TB数据运行Hadoop作业。我有几台机器,每台都有16GB内存,而且我总是通过这些数据获得OutOfMemoryException
这个数据(我正在使用Hive)。如何在运行Hadoop时避免OutOfMemoryException?
我想知道如何在文件hadoop-env.sh
中优化设置选项HADOOP_HEAPSIZE
,所以我的工作不会失败。是否有可能设置此选项,以便我的作业不会失败?
当我将HADOOP_HEAPSIZE
设置为1,5 GB并从查询中删除了一半模式匹配时,作业成功运行。那么,如果这无助于避免工作失败,那么这种选择是什么?
我希望做更多的试验以获得最佳的设置,但由于这些工作需要超过10小时才能运行,所以我在征求您的建议。
什么让你觉得'HADOOP_HEAPSIZE'不*有助于避免失败?听起来像你的经验,它的确如此。由于只能通过检查数据/作业才能知道的原因,您的情况要求堆大小至少是这么大。你可以重构你的工作,以便它不需要这么大的堆? – 2010-08-01 23:29:58
我修改了我的工作,所以它没有使用这么大的堆,但是在这个时候我已经改变了'HADOOP_HEAPSIZE'。我没有看到这个金字塔的真实结果,我的意思是:为什么设置堆比:amount_of_my_RAM/number_of_mappers_or_reducers? – wlk 2010-08-02 07:14:39