簡體   English   中英

為什么Oozie在運行MapReduce作業時分配更多的內存?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM