map-reduce ジョブ (ワードカウントの例) をリモートで実行しようとしたときに、いくつかの問題に遭遇しました。Googleで検索した後、まだ目標を達成できません。また、map-reduce ジョブをリモートで呼び出すことに関するトピックはほとんど見ませんでした。以下に問題を示します。
最初に、私は許可の問題を満たしています:
SEVERE: PriviledgedActionException as:[user] cause:org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=[user], access=WRITE, inode="mapred":root:supergroup:rwxr-xr-x
hdfsパスへのアクセス許可拒否のようです。設定でチェックをオフにします
dfs.permissions = true
。この問題を克服する他の方法はありますが、それでもチェックを続けます。その後、map-reduce アプリケーション jar にアクセスできないという例外に遭遇しました。
SEVERE: PriviledgedActionException as:[User] cause:java.io.FileNotFoundException: File /home/hduser/WordCount-1.0.jar does not exist.
私のコードは次のとおりです。
JobConf conf = new JobConf(WordCount.class); conf.setJobName("wordcount"); conf.set("fs.default.name", "hdfs://10.97.1.91:54310"); conf.set("mapred.job.tracker", "10.97.1.91:54311"); conf.setJar("/home/hduser/WordCount-1.0.jar"); ... JobClient.runJob(conf);
name ノードのローカル ファイル システムが、jar ファイルへのアクセスを拒否しているようです。どうすればこの問題を克服できますか? stackoverflowでリンクを見つけました。リンクから、jar ファイルの場所は必要ありません。しかし、場所を提供せずに name ノードが jar ファイルを見つけるにはどうすればよいでしょうか?
インターネットで見つけたチュートリアルで、ジョブをリモートで実行する例はほとんど見ませんでした。このようにすることは提案されていませんか?