Giả sử sau đây chỉ có một công việc Spark đang chạy tại mọi thời điểm.Các giai đoạn được chia thành các nhiệm vụ trong Spark như thế nào?
Những gì tôi có được cho đến nay
Đây là những gì tôi hiểu những gì xảy ra trong Spark:
- Khi một
SparkContext
được tạo ra, mỗi nút công nhân bắt đầu một chấp hành viên. Executors là các quá trình riêng biệt (JVM), kết nối trở lại chương trình điều khiển. Mỗi người thi hành có bình của chương trình điều khiển. Bỏ lái xe, đóng cửa các nhà điều hành. Mỗi người thi hành có thể chứa một số phân vùng. - Khi công việc được thực hiện, kế hoạch thực hiện được tạo theo biểu đồ đường truyền.
- Công việc thực hiện được chia thành các giai đoạn, trong đó các giai đoạn chứa nhiều chuyển đổi và hành động lân cận (trong biểu đồ đường truyền) và hành động, nhưng không có xáo trộn. Vì vậy, các giai đoạn được phân cách bởi các xáo trộn.
Tôi hiểu rằng
- Một tác vụ là một lệnh được gửi từ người lái xe đến một chấp hành viên của serializing đối tượng Function.
- Người thực thi deserializes (với các trình điều khiển jar) lệnh (nhiệm vụ) và thực hiện nó trên một phân vùng.
nhưng
Câu hỏi (s)
Làm thế nào để chia giai đoạn thành những nhiệm vụ?
Cụ thể:
- Are nhiệm vụ xác định bởi biến đổi và hành động hoặc có thể có nhiều biến đổi/hành động được trong một nhiệm vụ?
- Các tác vụ được xác định bởi phân vùng (ví dụ: một nhiệm vụ cho mỗi giai đoạn trên mỗi phân vùng).
- Các tác vụ được xác định bởi các nút (ví dụ: một nhiệm vụ trên mỗi giai đoạn trên mỗi nút)?
Những gì tôi nghĩ (chỉ trả lời một phần, ngay cả khi phải)
Trong https://0x0fff.com/spark-architecture-shuffle, shuffle được giải thích với hình ảnh
và tôi có ấn tượng rằng sự cai trị là
mỗi giai đoạn được chia thành các tác vụ # số phân vùng, không liên quan đến số lượng các nút
Đối với hình ảnh đầu tiên của tôi, tôi muốn có 3 nhiệm vụ bản đồ và 3 tác vụ giảm.
Đối với hình ảnh từ 0x0fff, tôi muốn nói có 8 tác vụ bản đồ và 3 tác vụ giảm (giả sử chỉ có ba tệp màu cam và ba tệp màu lục đậm).
Câu hỏi mở trong mọi trường hợp
Có đúng không? Nhưng ngay cả khi điều đó là chính xác, các câu hỏi trên của tôi không được trả lời, vì câu hỏi vẫn mở, cho dù nhiều hoạt động (ví dụ: nhiều bản đồ) nằm trong một tác vụ hoặc được tách thành một nhiệm vụ cho mỗi thao tác.
gì người khác nói
What is a task in Spark? How does the Spark worker execute the jar file? và How does the Apache Spark scheduler split files into tasks? tương tự, nhưng tôi không cảm thấy rằng câu hỏi của tôi đã được trả lời rõ ràng ở đó.
Cảm ơn! Hãy xây dựng câu trả lời của bạn liên quan đến văn bản của tôi: 1) Định nghĩa của tôi về các giai đoạn không toàn diện? Có vẻ như tôi đã bỏ lỡ yêu cầu rằng một giai đoạn không thể chứa các hoạt động có thể song song. Hay là mô tả của tôi có ngụ ý nghiêm chỉnh điều đó? 2) Số nhiệm vụ phải được thực hiện cho công việc được xác định bởi số lượng phân vùng, nhưng không phải số lượng bộ xử lý hoặc nút, trong khi số lượng tác vụ có thể được thực thi cùng một lúc phụ thuộc vào số lượng bộ vi xử lý, phải không? 3) Một tác vụ có thể chứa nhiều thao tác? – Make42
4) Bạn có ý gì với câu cuối cùng của bạn? Sau khi tất cả, các phân vùng số có thể thay đổi từ giai đoạn này sang giai đoạn khác. Ý bạn là đây là cách bạn cấu hình công việc của mình cho tất cả các giai đoạn? – Make42
@ Make42 Tất nhiên số lượng phân vùng có thể thay đổi theo từng giai đoạn - bạn chính xác. Đó là ý định của tôi bằng cách nói 'sum (..)' để xem xét sự thay đổi đó. – javadba