私は Mesos クラスターをセットアップしています -- マスターがスレーブを認識できることを確認しました -- しかし、Hadoop ジョブを実行しようとすると、すべてのタスクが LOST のステータスで終わります。すべてのスレーブ stderr ログに同じエラーが存在します。
Error: Could not find or load main class org.apache.hadoop.mapred.MesosExecutor
それが stderr ログの唯一の行です。
http://mesosphere.io/learn/run-hadoop-on-mesos/の指示に従って、各スレーブがアクセスできる修正された Hadoop ディストリビューションを HDFS に配置しました。Hadoop ディストリビューションのlibディレクトリに、 と を追加hadoop-mesos-0.0.4.jarしましmesos-0.14.2.jarた。
各スレーブが実際にこの Hadoop ディストリビューションをダウンロードし、そこにhadoop-mesos-0.0.4.jarclass が含まれていることを確認しorg.apache.hadoop.mapred.MesosExecutorたので、クラスが見つからない理由がわかりません。
CDH4.4.0 と mesos-0.15.0-rc4 の Hadoop を使用しています。
何が問題なのかについて何か提案はありますか? 私は常にCLASSPATH問題から始めることを知っていますが、この場合、mesos-slave は Hadoop TaskTracker をダウンロード、アンパック、および実行しようとしているためCLASSPATH、mesos-slave によってセットアップされると想像できます。
スレーブ ログの stdout に、環境が出力されます。MESOS_HADOOP_HOME空の があります。これは何かに設定する必要がありますか?ダウンロードした Hadoop ディストリビューションに設定することになっている場合、Hadoop ディストリビューションは毎回新しい場所にダウンロードされるため、事前に設定することはできません。
関連するイベント (おそらくいくつかの権限の問題) で、マスター UI を介してスレーブ ログを参照しようとすると、エラーが発生しますError browsing path: ...。mesos-slave を実行しているユーザーは、手動で正しいディレクトリを参照できます。