Estoy ejecutando un trabajo de Hadoop de más de 1,5 TB de datos haciendo muchas coincidencias de patrones. Tengo varias máquinas con 16 GB de RAM cada una, y siempre obtengo OutOfMemoryException
en este trabajo con estos datos (estoy usando Hive).Cómo evitar OutOfMemoryException al ejecutar Hadoop?
Me gustaría saber cómo establecer de forma óptima la opción HADOOP_HEAPSIZE
en el archivo hadoop-env.sh
, por lo tanto, mi trabajo no fallaría. ¿Es posible incluso configurar esta opción para que mis trabajos no fallen?
Cuando configuré HADOOP_HEAPSIZE
en 1,5 GB y eliminé la mitad de la coincidencia de patrones de la consulta, la tarea se ejecutó correctamente. Entonces, ¿para qué sirve esta opción si no ayuda a evitar fallas en el trabajo?
Voy a hacer más experimentos con la configuración óptima, pero dado que esos trabajos tardan más de 10 horas en ejecutarse, les pido su consejo.
¿Qué te hace pensar que 'HADOOP_HEAPSIZE' no * ayuda a evitar la falla? Suena como si tu experiencia lo hiciera. Por razones que solo pueden conocerse al examinar sus datos/trabajo, su situación requiere un tamaño de almacenamiento dinámico al menos tan grande. ¿Puede refactorizar su trabajo para que no necesite un montón tan grande? –
He modificado mi trabajo, por lo que no usa un montón tan grande, pero también en este momento he cambiado 'HADOOP_HEAPSIZE'. Y no veo el resultado real de este chagne, quiero decir: ¿Por qué configurar el montón más pequeño que: amount_of_my_RAM/number_of_mappers_or_reducers? – wlk