2015-04-07 17 views
2

我在YARN上運行Apache Spark(1.3.0)。 YARN_CONF_DIR指向YARN配置。 core-site.xml從該目錄加載。它包含io.compression.codecs的設置,此列表包含com.hadoop.compression.lzo.LzoCodec,它不包含在預先構建的Spark中。使用Apache Spark的YARN壓縮編解碼器

這導致啓動時出現ClassNotFoundException。作爲一種解決方法,我們可以使用修改後的core-site.xml運行,或者我們可以在--jars中包含必需的Jar文件。

這些解決方法都不是非常健壯。我不是YARN集羣的管理員。我不知道集羣管理員可以更改core-site.xml。如果我使用修改後的副本,我將錯過重要更改。如果我使用--jars,則添加新編解碼器時,我的Spark應用程序將中斷。

這些編解碼器存儲在標準的地方嗎?我怎麼能把那個地方添加到我的類路徑中?我希望我的應用程序能夠在配置更改後不受任何干擾。

回答

1

一個可能的答案是,包括所有Hadoop的罐子,是這樣的:

--jars $HADOOP_HOME/../hadoop-yarn/lib/*.jar 

我的這個問題是:

  • 我不知道如何規範這個路徑是。
  • 這將導致每次啓動應用程序時將jar複製到工作人員。我期望在部署編解碼器的時候,它的jar放在所有的YARN節點上,或者至少它放在共享位置的HDFS上。必須有更好的方法來訪問它!
+1

這就是我所做的。我還沒有找到解決辦法! – eliasah