我已經使用Spark設置了EC2集羣。一切正常,所有的主人/奴隸都在運轉。遠程向Spark EC2集羣提交作業
我想提交一個示例工作(SparkPi)。當我ssh羣集並從那裏提交 - 一切工作正常。但是,當在遠程主機(我的筆記本電腦)上創建驅動程序時,它不起作用。我已經試過這兩種模式爲--deploy-mode
:
--deploy-mode=client
:
從我的筆記本電腦:
./bin/spark-submit --master spark://ec2-52-10-82-218.us-west-2.compute.amazonaws.com:7077 --class SparkPi ec2test/target/scala-2.10/ec2test_2.10-0.0.1.jar
結果在下面的不確定警告/錯誤:
WARN TaskSchedulerImpl:初始工作沒有接受任何資源; 檢查你的集羣用戶界面,以確保工人登記,並 足夠的內存15/02/22 18時三十分45秒
錯誤SparkDeploySchedulerBackend:要求刪除不存在的執行0 15/02/22 18:30: 45
錯誤SparkDeploySchedulerBackend: - 與 「國家= ERROR」 出現在星火Web UI的 「完成驅動程序」 要求刪除不存在的執行1
...和失敗的驅動程序。
我試圖通過對核心和內存提交腳本的限制,但它並沒有幫助...
--deploy-mode=cluster
:
從我的筆記本電腦:
./bin/spark-submit --master spark://ec2-52-10-82-218.us-west-2.compute.amazonaws.com:7077 --deploy-mode cluster --class SparkPi ec2test/target/scala-2.10/ec2test_2.10-0.0.1.jar
結果是:
....驅動程序成功提交爲驅動程序-20150223023734-0007 ... 等待輪詢主驅動程序狀態之前...輪詢主驅動程序 驅動程序狀態驅動程序狀態20150223023734-0007爲錯誤異常 來自羣集:java.io.FileNotFoundException:文件 file:/home/oleg/spark/spark12/ec2test/target/scala-2.10/ec2test_2.10-0.0.1.jar 不存在。 java.io.FileNotFoundException:文件 file:/home/oleg/spark/spark12/ec2test/target/scala-2.10/ec2test_2.10-0.0.1.jar 不存在。在 org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:397) 在 org.apache.hadoop.fs.FilterFileSystem.getFileStatus(FilterFileSystem.java:251) 在org.apache.hadoop.fs .FileUtil.copy(FileUtil.java:329)at org.apache.spark.deploy.worker.DriverRunner.org $ apache $ spark $ deploy $ worker $ DriverRunner $$ downloadUserJar(DriverRunner.scala:150) at org .apache.spark.deploy.worker.DriverRunner $$匿名$ 1.run(DriverRunner.scala:75)
所以,我會很感激的什麼錯誤的指針和一些指導如何部署從工作遠程客戶端。謝謝。
UPDATE: 所以在集羣模式下的第二個問題,文件必須由每個集羣節點全局可見的,所以它必須是某處訪問的位置。這解決了IOException,但導致與客戶端模式中相同的問題。
我認爲驅動程序提供的代碼/東西給工人。你的拉皮可以從你的工人到達嗎?通常情況下,您需要儘可能靠近羣集的驅動程序。 – 2015-02-23 03:14:11
正如@AlisterLee說,你應該檢查你的計算機和EC2節點(防火牆,端口設置等)之間的設置。如果失敗,那麼你可能想嘗試也採取這個郵件列表(然後彙報解決方案:)) – 2015-02-23 03:43:09