7

Cụm tia lửa của tôi có 1 bản chính và 3 công nhân (trên 4 máy riêng biệt, mỗi máy có 1 lõi) và các cài đặt khác như trong hình bên dưới, trong đó spark.cores.max được đặt thành và spark.executor.cores cũng (trong pic-1)tại sao Spark không phân phối công việc cho tất cả các nhà thực thi, mà chỉ cho một người thực hiện?

Nhưng khi tôi gửi công việc của tôi để Spark cụm, từ Spark web UI tôi có thể thấy chỉ có một chấp hành viên được sử dụng (theo bộ nhớ đã sử dụngkhối RDD trong pi c-2), nhưng không phải tất cả những người thi hành. Trong trường hợp này tốc độ xử lý chậm hơn nhiều so với dự kiến ​​của tôi.

Vì tôi đã đặt các lõi tối đa thành 3, nên không phải tất cả các nhà thực thi đều được sử dụng cho công việc này?

Cách định cấu hình Spark để phân phối công việc hiện tại cho tất cả các người thực thi, thay vì chỉ một người thực thi đang chạy công việc hiện tại?

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

------------------ pic-1: spark settings

--------------- --- pic-2: enter image description here

Trả lời

2

Bạn nói bạn đang chạy hai máy thu, những loại Receivers là họ (Kafka, HDFS, Twitter ??)

Phiên bản spark bạn đang sử dụng?

Theo kinh nghiệm của tôi, nếu bạn đang sử dụng bất kỳ Người nhận nào khác ngoài bộ thu thập tệp, thì nó sẽ chiếm vĩnh viễn 1 lõi. Vì vậy, khi bạn nói bạn có 2 máy thu, thì 2 lõi sẽ được sử dụng vĩnh viễn để nhận dữ liệu, vì vậy bạn chỉ còn lại 1 lõi đang thực hiện công việc.

Vui lòng đăng ảnh chụp màn hình chính của Spark master. Và ảnh chụp màn hình trang của công việc.

+0

cho loại Bộ thu, tôi không chắc chắn, chỉ cần sử dụng bộ mặc định sau khi tải xuống gói Spark 1.3. Phải là Kafka. – keypoint

+0

Tôi đang phát trực tuyến từ AWS Kinesis tới Spark, tôi đoán là người nhận này tương ứng với mảnh Kinesis, vì tôi có 2 mảnh cho luồng Kinesis của tôi. – keypoint

+1

Bạn có thể đăng ảnh chụp nhanh của trang phát trực tuyến chính Spark không. docs "Khi chạy một chương trình Spark Streaming cục bộ, không sử dụng" local "hoặc" local [1] "làm URL chính, hoặc chỉ có một luồng sẽ được sử dụng để chạy các tác vụ cục bộ. DStream dựa trên một bộ thu (ví dụ ổ cắm, Kafka, Flume, vv), sau đó một sợi đơn sẽ được sử dụng để chạy bộ thu, không để lại luồng để xử lý dữ liệu nhận được. ] ”Làm URL chính nơi n> số người nhận để chạy" Áp dụng ở trên cho cụm là tốt. –

0

Chỉ phát trực tiếp 1 máy thu phát tia lửa để nhận dữ liệu từ nguồn đầu vào tới RDD.

Phân vùng lại dữ liệu sau lần chuyển đổi thứ nhất có thể làm tăng tính song song.

+0

Xin chào, tôi đã khởi chạy 2 máy thu. Và bạn có thể đưa ra ví dụ về cách phân vùng lại không? – keypoint

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