4

(この投稿の最後に指定されているように、依存関係を追加することでこの問題を解決しましたが、より良い代替手段があるかどうか、または何か重要なことを見逃していないか疑問に思っていますか?)

mapreduce ジョブを実行しようとすると、行

JobClient.runJob(conf)

次のエラー スタックが表示されます。

Exception in thread "main" java.io.IOException: Cannot initialize Cluster. Please check your     configuration for mapreduce.framework.name and the correspond server addresses.
    at org.apache.hadoop.mapreduce.Cluster.initialize(Cluster.java:119)
    at org.apache.hadoop.mapreduce.Cluster.<init>(Cluster.java:81)
    at org.apache.hadoop.mapreduce.Cluster.<init>(Cluster.java:74)
    at org.apache.hadoop.mapred.JobClient.init(JobClient.java:465)
    at org.apache.hadoop.mapred.JobClient.<init>(JobClient.java:444)
    at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:826)

私のセットアップは次のとおりです。

public static void main(String[] args) throws IOException {
    JobConf conf = new JobConf(Reduce.class);          
    conf.set("mapreduce.framework.name","yarn");
    conf.set("mapreduce.jobhistory.address","s17.myserver.com:10020");
    conf.set("mapreduce.jobhistory.webapp.address","s17.myserver.com:19888");

    conf.set("yarn.resourcemanager.address","s6.myserver.com:8032");
    conf.set("yarn.resourcemanager.scheduler.address","s6.myserver.com:8030");
    conf.set("yarn.resourcemanager.resource-tracker.address","s6.myserver.com:8031");
    conf.set("yarn.resourcemanager.admin.address","s6.myserver.com:8033");
    conf.set("yarn.resourcemanager.webapp.address","s6.myserver.com:8088");

    /// error on the following line
    JobClient.runJob(conf);
}

構成の確認と再確認にかなりの時間を費やした後、次の依存関係をプロジェクトに追加することで問題を解決できました。

hadoop-mapreduce-client-jobclient

ここに何かが欠けていますか、それともエラーメッセージは特に誤解を招くものですか?

4

1 に答える 1

0

このタイプの構成は、クラスター管理者によって行われ、yarn-site の一部として提供されている必要があります。ジョブごとに追加する必要はありません。そうは言っても、エラー メッセージは特に役に立たず、改善される可能性がありますが、それは Hadoop のほとんどすべてのエラー メッセージに当てはまります...

于 2015-07-21T18:37:43.083 に答える