2015-11-09 20 views
5

Tôi có hai cụm, một cụm trong máy ảo cục bộ khác trong đám mây từ xa. Cả hai cụm ở chế độ Độc lập.Cách gửi mã đến cụm từ xa Spark từ IntelliJ IDEA

Môi trường của tôi:

Scala: 2.10.4 
Spark: 1.5.1 
JDK: 1.8.40 
OS: CentOS Linux release 7.1.1503 (Core) 

Cụm địa phương:

Spark Master: spark: // local1: 7077

Cụm từ xa:

Spark Master: spark: // remote1: 707 7

Tôi muốn kết thúc chuyện này:

Viết mã (chỉ đơn giản word-count) trong IntelliJ IDEA tại địa phương (về laptp của tôi), và thiết lập các URL Spark Sư Phụ spark://local1:7077spark://remote1:7077, sau đó chạy của tôi mã trong IntelliJ IDEA. Đó là, tôi không muốn sử dụng spark-submit để gửi một công việc.

Nhưng tôi gặp một số vấn đề:

Khi tôi sử dụng cụm cục bộ, mọi thứ diễn ra tốt đẹp. Chạy mã trong IntelliJ IDEA hoặc sử dụng trình phát tia lửa có thể gửi công việc để nhóm và có thể hoàn thành công việc.

Nhưng Khi tôi sử dụng cụm từ xa, tôi nhận được một bản ghi cảnh báo:

TaskSchedulerImpl: công việc ban đầu đã không được chấp nhận bất kỳ tài nguyên; kiểm tra UI cluster của bạn để đảm bảo rằng nhân viên được đăng ký và có đủ nguồn lực

Đó là đủ nguồn lực không đủ bộ nhớ!

Và nhật ký này tiếp tục in, không thực hiện thêm thao tác nào. Cả hai số spark-submit và mã chạy trong IntelliJ IDEA đều giống nhau.

Tôi muốn biết:

  • Có thể nộp mã số từ IntelliJ IDEA đến cụm từ xa?
  • Nếu được, có cần cấu hình không?
  • Lý do có thể có thể gây ra sự cố của tôi là gì?
  • Làm cách nào để xử lý sự cố này?

Cảm ơn rất nhiều!

Cập nhật

Có một câu hỏi tương tự here, nhưng tôi nghĩ cảnh của tôi là khác nhau. Khi tôi chạy mã của mình trong IntelliJ IDEA và đặt Spark Master thành cụm máy ảo cục bộ, nó hoạt động. Nhưng thay vào đó, tôi nhận được cảnh báo Initial job has not accepted any resources;....

Tôi muốn biết liệu chính sách bảo mật hoặc pháo hoa có thể gây ra điều này không?

+0

Có thể trùng lặp [Chạy mã tia lửa trên nhật thực với tia lửa đang được cài đặt trên máy chủ khác] (http://stackoverflow.com/questions/33591481/running-spark-code-on-eclipse-with-spark-being-install -on-another-server) –

+0

@AlbertoBonsanto Nhưng bài đăng khác (đó là của bạn) không * không * cho thấy cách chạy trực tiếp từ IJ: nó yêu cầu xây dựng bình và sử dụng 'spark-submit'. – javadba

Trả lời

3

Gửi mã theo chương trình (ví dụ: qua SparkSubmit) khá phức tạp. Ít nhất có một loạt các thiết lập môi trường và cân nhắc được xử lý bởi kịch bản spark-submit - đó là khá khó khăn để tái tạo trong một chương trình scala. Tôi vẫn chưa chắc chắn làm thế nào để đạt được nó: và đã có một số chủ đề chạy dài trong cộng đồng phát triển tia lửa về chủ đề này.

câu trả lời của tôi ở đây là về một phần của bài viết của bạn: đặc biệt là

TaskSchedulerImpl: công việc ban đầu đã không được chấp nhận bất kỳ tài nguyên; kiểm tra UI cluster của bạn để đảm bảo rằng nhân viên được đăng ký và có đủ nguồn lực

Lý do thường là có sự không phù hợp trên bộ nhớ được yêu cầu và/hoặc số lượng lõi từ công việc của bạn so với những gì đã có sẵn trên cụm . Có thể khi nộp từ IJ các

$ SPARK_HOME/conf/spark-defaults.conf

không đúng phù hợp với các thông số cần thiết cho công việc của bạn trên cụm hiện có. Bạn có thể cần phải cập nhật:

spark.driver.memory 4g 
spark.executor.memory 8g 
spark.executor.cores 8 

Bạn có thể kiểm tra tia lửa trên cổng 8080 để xác minh rằng thông số bạn yêu cầu thực sự có sẵn trên cụm.

Các vấn đề liên quan