我試圖從使用客戶端模式的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
,必須暴露在碼頭網絡之外),我想避免它。
有什麼辦法可以解決驅動程序尋址問題而不暴露碼頭集裝箱?
從星火吉拉相關的問題 - https://issues.apache.org/jira/browse/SPARK-4563 目前可能無法用Spark解決我的問題。 – Ajk