2017-10-11 60 views
0

我已經安裝了爲遵循系統:Mesos星火從試圖連接到主私用IP而不是公網IP

--mesos主10.xx2私有IP,公共35.xx6

--mesos從屬專用IP 192.xx10,公共111.xx2

現在,主設備將任務成功分配給從設備,但是,任務失敗。作爲跟隨錯誤信息:

異常線程 「main」 17/10/11 22時38分01秒ERROR RpcOutboxMessage: 詢問超時連接成功

造成前:org.apache.spark .rpc.RpcTimeoutException:無法在120秒內收到 任何回覆。這超時由 spark.rpc.askTimeout控制

當我看環境,spark.driver.host點到主10.xx2,而不是它的公網IP地址35的私有IP地址.xx6。我看着Wireshark捕獲,事實上,TCP主包的IP地址是失敗的。

現在,如果我將spark.driver.bindAddress從主設備設置爲其本地IP地址spark.driver.host從主設備到其公共IP地址,我會收到以下消息。

錯誤TaskSchedulerImpl:失落的執行1對 myhostname.singnet.com.sg:無法創建執行人因 無法分配請求地址:

從我的理解中,spark.driver.bindAddress設置它爲主和從屬,因此奴隸得到所述錯誤。 現在我真的很想知道如何正確設置啓動這個羣集上的公共IP?

回答

0

我推薦你有全部私人設置或全部公共設置。不在中間。

一般而言,您希望一切都是私有的,如果您需要暴露於外部的任何數據,則只需公開IP上的數據端點。例如,運行所有的火花作業並將數據存儲在S3中。然後在存儲桶上啓用S3公共訪問。使用專用IP通常更安全。

關於mesos master上的--advertise-ip參數。這是爲了找到mesos master的mesos奴隸。火花問題不支持公共的私人組合,所以你必須做一個或另一個。您可以在連接到公有IP的mesos機器上運行spark工作負載,但這意味着您必須爲這些機器提供可訪問的zookeeper等。

+0

感謝您的回答。據我的網絡知識,我沒有看到一個場景,我可以有一個所有公共設置。每臺暴露給公共IP地址的計算機都會分配一個專用於其內部網絡的地址。公共IP不是機器本身,而是路由器(如果我錯了,請糾正我)。 Mesos通過包含--advertise_IP參數解決了這個問題,所以機器可以通過連接到這個地址(這是公開的)來找到對方。我不確定它是如何在Spark上實現的。 – TheCyberliem

+0

@ TheCyber​​liem當然。檢查我的除了答案 – Rico

+0

感謝您的答覆。然而,如果你仔細閱讀我的問題描述,你會發現,如果沒有私有IP,你不能擁有所有公共設置(正如我所提到的,公共IP永遠不在機器上,而是在路由器上,所以機器擁有私有IP路由器將其映射到公共IP。) – TheCyberliem