2016-07-22 17 views
4

我試圖從使用客戶端模式的dockerized Apache Spark應用程序連接到獨立Apache Spark羣集。解決Docker容器在客戶端模式下運行的Apache Spark應用程序的問題

驅動程序給火花大師和工人的地址。在碼頭集裝箱內運行時,它將使用some_docker_container_ip。碼頭地址從外部不可見,所以應用程序將無法工作。

Spark有spark.driver.host屬性。這個屬性被傳遞給主人和工人。我最初的直覺是在那裏傳遞主機地址,以便集羣可以訪問可見機器。

不幸的是,spark.driver.host也被用來由Driver建立一個服務器。在此處傳遞主機地址將導致服務器啓動錯誤,因爲docker容器無法綁定主機機器主機下的端口。

這似乎是一個雙輸的局面。我既不能使用主機地址也不能使用碼頭容器地址。

理想情況下,我想有兩個屬性。 spark.driver.host-to-bind-to用於設置驅動程序服務器和spark.driver.host-for-master將由主和工作人員使用。不幸的是,它似乎只是一個屬性卡住了。

另一種方法是在運行碼頭集裝箱時使用--net=host。這種方法有很多缺點(例如,其他碼頭集裝箱無法鏈接到集裝箱,--net=host,必須暴露在碼頭網絡之外),我想避免它。

有什麼辦法可以解決驅動程序尋址問題而不暴露碼頭集裝箱?

+0

從星火吉拉相關的問題 - https://issues.apache.org/jira/browse/SPARK-4563 目前可能無法用Spark解決我的問題。 – Ajk

回答

相關問題