Я запускаю задания MapReduce, используя oozie. Из рабочего процесса я просто вызываю класс класса MapReduce и ничего, кроме этого. Но для этого рабочего процесса oozie требуется много памяти. Для вызова класса драйвера требуется минимум 2 ГБ контейнера. Ниже workflow.xmlПочему Oozie выделяет больше памяти при выполнении заданий MapReduce?
<?xml version="1.0" encoding="utf-8"?>
<workflow-app xmlns="uri:oozie:workflow:0.4" name="My Job">
<start to="start-job" />
<action name='start-job'>
<shell xmlns="uri:oozie:shell-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${jobQueue}</value>
</property>
</configuration>
<exec>${jobScript}</exec>
<argument>${arguments}</argument>
<argument>${queueName}</argument>
<argument>${wf:id()}</argument>
<file>myPath/MyDriver.sh#MyDriver.sh</file>
</shell>
<ok to="end" />
<error to="kill" />
</action>
<kill name="kill">
<message>Job failed
failed:[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name="end" />
Мой сценарий оболочки будет выглядеть, как показано ниже (MyDriver.sh),
hadoop jar myJar.jar MyDriverClass $1 $2 $3
Почему oozie занимает так много памяти. Как уменьшить потребление памяти oozie?
Кроме того, если вы настаиваете на использование Oozie для запуска консоли для запуска MapReduce работы * (почему нет, возможно, это хорошо для кармы) *, тогда вы можете попытаться уменьшить использование ОЗУ исходной оболочки, установив в действие '' свойства 'oozie.launcher.mapreduce.map.memory.mb' и' oozie.launcher. yarn.app.mapreduce.am.resource.mb', скажем, 512 МБ. –
Руслан, я не могу этого сделать. Потому что у меня много связанных заданий. Я построил одну толстую банку и разделил ее по общей дороге. Классы будут загружаться из банки, связанной с определенным заданием. – Vijayakumar
Я дал попробовать, и это работает как шарм. Спасибо :) – Vijayakumar