Tôi đang cố gắng gửi một JAR với công việc Spark vào cụm YARN từ mã Java. Tôi đang sử dụng SparkLauncher nộp dụ SparkPi:Trình khởi chạy Spark đang chờ hoàn thành công việc vô hạn
Process spark = new SparkLauncher()
.setAppResource("C:\\spark-1.4.1-bin-hadoop2.6\\lib\\spark-examples-1.4.1-hadoop2.6.0.jar")
.setMainClass("org.apache.spark.examples.SparkPi")
.setMaster("yarn-cluster")
.launch();
System.out.println("Waiting for finish...");
int exitCode = spark.waitFor();
System.out.println("Finished! Exit code:" + exitCode);
Có hai vấn đề:
- Trong khi nộp trong "sợi cụm" chế độ, ứng dụng được thành công trình SỢI và thực hiện thành công (nó là hiển thị trong giao diện người dùng YARN, được báo cáo là SUCCESS và pi được in ở đầu ra). Tuy nhiên, ứng dụng gửi không bao giờ được thông báo rằng quá trình xử lý đã hoàn tất - nó treo vô hạn sau khi in "Đang đợi hoàn tất ..." Nhật ký của vùng chứa có thể được tìm thấy here
- Khi gửi ở chế độ "sợi-khách hàng", ứng dụng không xuất hiện trong giao diện người dùng và ứng dụng gửi bị treo ở "Đang đợi hoàn tất ..." Khi mã treo bị giết, ứng dụng hiển thị trong giao diện người dùng và nó được báo cáo là THÀNH CÔNG, nhưng đầu ra trống (pi không được in ngoài). Nhật ký của container có thể được tìm thấy here
Tôi cố gắng để thực hiện các ứng dụng trên Facebook Chia cả với Oracle Java 7 và 8.
Trong trường hợp của tôi, tôi gặp phải sự cố về classpath, vì vậy tia lửa đã thoát ngay lập tức. Vì vậy, nếu có vẻ như một người nào khác mà nó chỉ đơn giản là không gọi đến ứng dụng tia lửa của bạn, câu trả lời này hoạt động như là tốt. – jmmut