[英]Why Oozie allocates more memory when running MapReduce jobs?
我正在使用oozie運行MapReduce作業。 從工作流中,我只是調用MapReduce驅動程序類,僅此而已。 但是為此,oozie工作流需要大量內存。 至少需要2GB的容器大小才能調用驅動程序類。 以下是workflow.xml
<?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" />
我的shell腳本如下所示( MyDriver.sh ),
hadoop jar myJar.jar MyDriverClass $1 $2 $3
為什么oozie需要那么多內存。 如何減少oozie的內存消耗?
Shell操作將至少啟動2個映射器來運行Java類。
您可以使用java操作避免這種情況。 將jar放在$ {workflow-path} / lib /目錄中,然后更改工作流程:
<action name='start-job'>
<java>
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${jobQueue}</value>
</property>
</configuration>
<main-class>MyDriverClass</main-class>
<arg>${arguments}</arg>
<arg>${queueName}</arg>
<arg>${wf:id()}</arg>
</java>
<ok to="end" />
<error to="kill" />
</action>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.