2013-11-25 18 views
2

我有一個Mesos集羣設置 - 我已證實主人可以看到奴隸 - 但是當我嘗試要運行Hadoop作業,所有任務都處於狀態爲「丟失」狀態。同樣的錯誤出現在所有從屬stderr日誌中:Mesos上的Hadoop失敗,出現「無法找到或加載主類org.apache.hadoop.mapred.MesosExecutor」

Error: Could not find or load main class org.apache.hadoop.mapred.MesosExecutor 

並且這是stderr日誌中的唯一行。

按照有關http://mesosphere.io/learn/run-hadoop-on-mesos/的說明,我在HDFS上放置了一個修改後的Hadoop發行版,每個從站都可以訪問它。 在Hadoop發行版的lib目錄中,我添加了hadoop-mesos-0.0.4.jarmesos-0.14.2.jar

我已經驗證過,每個奴隸確實下載了這個Hadoop發行版,並且hadoop-mesos-0.0.4.jar包含了類org.apache.hadoop.mapred.MesosExecutor,所以我不知道爲什麼找不到類。

我使用CDH4.4.0和mesos-0.15.0-rc4的Hadoop。

有沒有人有什麼建議可能是什麼問題?我知道我總是會從CLASSPATH問題開始,但在這種情況下,mesos-slave正在下載,解包並嘗試運行Hadoop任務跟蹤器,因此我想可以通過mesos-slave設置任何CLASSPATH

在從站日誌的標準輸出中打印環境。有一個空的MESOS_HADOOP_HOME。這應該設置成什麼?如果應該將其設置爲下載的Hadoop發行版,則無法預先設置它,因爲Hadoop發行版每次都會下載到新的位置。

如果相關事件(可能是某些權限問題),當嘗試通過主UI瀏覽從屬日誌時,出現錯誤Error browsing path: ...。 手動運行mesos-slave的用戶可以瀏覽到正確的目錄。

回答

3

我發現了這個問題。下載的Hadoop發行版的bin/hadoop嘗試通過運行which $0來查找其位置。但是,如果存在Hadoop(即/usr/lib/hadoop),將會找到當前的Hadoop安裝,並且會在該安裝的lib目錄下而不是下載的目錄下加載罐子。

我不得不修改bin/hadoop的下載分配,找到自己的位置dirname $0而不是which $0

相關問題