1

Amazon EC2 で whirr を使用して Yarn 2.2.0 を構成しようとしています。しかし、私はいくつかの問題を抱えています。yarn 2.2.0 をサポートするように whirr サービスを修正しました。その結果、ジョブを開始して正常に実行できます。ただし、仕事の進捗状況を追跡する際に問題に直面しています。

 mapreduce.Job (Job.java:monitorAndPrintJob(1317)) - Running job: job_1397996350238_0001
2014-04-20 21:57:24,544 INFO  [main] mapred.ClientServiceDelegate (ClientServiceDelegate.java:getProxy(270)) - Application state is completed. FinalApplicationStatus=SUCCEEDED. Redirecting to job history server
java.io.IOException: Job status not available 
    at org.apache.hadoop.mapreduce.Job.updateStatus(Job.java:322)
    at org.apache.hadoop.mapreduce.Job.isComplete(Job.java:599)
    at org.apache.hadoop.mapreduce.Job.monitorAndPrintJob(Job.java:1327)
    at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1289)
    at com.zetaris.hadoop.seek.preprocess.PreProcessorDriver.executeJobs(PreProcessorDriver.java:112)
    at com.zetaris.hadoop.seek.JobToJobMatchingDriver.executePreProcessJob(JobToJobMatchingDriver.java:143)
    at com.zetaris.hadoop.seek.JobToJobMatchingDriver.executeJobs(JobToJobMatchingDriver.java:78)
    at com.zetaris.hadoop.seek.JobToJobMatchingDriver.executeJobs(JobToJobMatchingDriver.java:43)
    at com.zetaris.hadoop.seek.JobToJobMatchingDriver.main(JobToJobMatchingDriver.java:56)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:212

問題はApplicationMasterにあります。ホスト名と rpc ポートがあり、ホスト名は、Amazon ネットワーク内からのみ解決できる内部ホスト名です。理想的には、パブリック Amazon DN 名である必要があります。しかし、私はまだそれを設定できませんでした。のようなパラメータを設定してみました

yarn.nodemanager.hostname yarn.nodemanager.address

しかし、ApplicationMaster のホスト名またはポートに変更を見つけることができませんでした。それらはまだプライベート amazon 内部ホスト名です。私は何かが欠けていますか?または、ノード マネージャがパブリック アドレスで始まるように、すべてのノード マネージャ ノードの /etc/hosts を変更する必要があります。進行状況をリモートで追跡できること

ジョブをリモートで送信する必要があるため、これをすべて行っています。この機能を妥協するつもりはありません。私を案内してくれる人は誰でも

historyserver の設定に成功し、リモート クライアントからアクセスできるようになりました。構成を使用してそれを行いました。

mapreduce.jobhistory.webapp.address

デバッグすると、

 MRClientProtocol MRClientProxy = null;
      try {
        MRClientProxy = getProxy();
        return methodOb.invoke(MRClientProxy, args);
      } catch (InvocationTargetException e) {
        // Will not throw out YarnException anymore
        LOG.debug("Failed to contact AM/History for job " + jobId + 
            " retrying..", e.getTargetException());
        // Force reconnection by setting the proxy to null.
        realProxy = null;

プライベート アドレスが原因で、プロキシが接続に失敗しました。上記の抜粋されたコードは ClientServiceDelegate からのものです

4

3 に答える 3

0

私も同じ問題を抱えていました。に次の行を追加することで解決しましたmapred-site.yml。ステージング ディレクトリをデフォルトの tmp ディレクトリから、アクセス許可のあるホーム ディレクトリに移動します。

  <property>
    <name>yarn.app.mapreduce.am.staging-dir</name>
    <value>/user</value>
  </property>

これに加えて、hdfs に履歴ディレクトリを作成する必要があります。

hdfs dfs -mkdir -p /user/history
hdfs dfs -chmod -R 1777 /user/history
hdfs dfs -chown mapred:hadoop /user/history

このリンクは、Hadoop クラスターの構成に非常に役立ちます。

于 2016-12-09T16:24:49.783 に答える
-1
conf.set("mapreduce.jobhistory.address", "hadoop3.hwdomain:10020");
conf.set("mapreduce.jobhistory.intermediate-done-dir", "/mr-history/tmp");
conf.set("mapreduce.jobhistory.done-dir", "/mr-history/done");
于 2014-08-14T03:32:23.353 に答える