我正在处理1.5TB数据的Hadoop作业,并且需要进行大量的模式匹配。我有多台机器,每台机器都有16GB的RAM,但是当我使用Hive运行此作业时,总是出现OutOfMemoryException
的错误。
我想知道如何在文件hadoop-env.sh
中最优地设置选项HADOOP_HEAPSIZE
,以便我的作业不会失败。是否有可能设置此选项,使得我的作业不会失败呢?
当我将HADOOP_HEAPSIZE
设置为1.5 GB并从查询中删除了一半的模式匹配时,作业成功运行。那么,如果这个选项不能帮助避免作业失败,它的作用是什么呢?
我本来打算做更多的实验来确定最佳设置,但由于这些作业需要运行>10小时,所以我请求你的建议。
HADOOP_HEAPSIZE
为什么不能帮助避免失败?根据你的经验,它似乎能够做到。由于只有通过检查你的数据/作业才能知道具体原因,你的情况需要至少这么大的堆大小。你能否重构你的作业,使其不需要如此大的堆? - matt bHADOOP_HEAPSIZE
。但是我并没有看到实际的结果,我的意思是:为什么要将堆设置得比:我的RAM数量/映射器或减速器的数量还小呢? - wlk