9

問題: Hadoop 2.2.0 クラスターにジョブを送信すると、ジョブ トラッカーには表示されませんが、ジョブは正常に完了します。これにより、出力が表示され、正しく実行され、実行中に出力が出力されます。

複数のオプションを試しましたが、ジョブ トラッカーにジョブが表示されません。2.2.0 Hadoop を使用してストリーミング ジョブを実行すると、タスク トラッカーに表示されますが、hadoop-client API を介して送信すると、ジョブ トラッカーに表示されません。ジョブを確認するために、ポート 8088 の UI インターフェイスを見ています。

環境 OSX Mavericks、Java 1.6、Hadoop 2.2.0 シングル ノード クラスタ、Tomcat 7.0.47

コード

    try {
        configuration.set("fs.defaultFS", "hdfs://127.0.0.1:9000");
        configuration.set("mapred.jobtracker.address", "localhost:9001");

        Job job = createJob(configuration);
        job.waitForCompletion(true);
    } catch (Exception e) {
        logger.log(Level.SEVERE, "Unable to execute job", e);
    }

    return null;

etc/hadoop/mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

    <property>
         <name>mapred.job.tracker</name>
         <value>localhost:9001</value>
    </property> 
</configuration>

etc/hadoop/core-site.xml

<configuration>
     <property>
       <name>hadoop.tmp.dir</name>
       <value>/tmp/hadoop-${user.name}</value>
       <description>A base for other temporary directories.</description>
    </property>

    <property> 
      <name>fs.default.name</name> 
      <value>hdfs://localhost:9000</value> 
    </property>

</configuration>
4

2 に答える 2

6

この問題の解決策は、yarn の追加の構成オプションを使用してジョブを構成することでした。java hadoop-client api が構成ディレクトリの構成オプションを使用するという誤った仮定をしました。単体テストで log4j.properties を使用して詳細ログを有効にすることで、問題を診断できました。ジョブがローカルで実行されており、yarn リソース マネージャーに送信されていないことがわかりました。少し試行錯誤して、ジョブを構成し、yarn リソース マネージャーに送信することができました。

コード

    try {
        configuration.set("fs.defaultFS", "hdfs://127.0.0.1:9000");
        configuration.set("mapreduce.jobtracker.address", "localhost:54311");
        configuration.set("mapreduce.framework.name", "yarn");
        configuration.set("yarn.resourcemanager.address", "localhost:8032");

        Job job = createJob(configuration);
        job.waitForCompletion(true);
    } catch (Exception e) {
        logger.log(Level.SEVERE, "Unable to execute job", e);
    }
于 2014-01-25T20:00:20.147 に答える