Giả sử như sau rằng chỉ có một công việc Spark đang chạy tại mọi thời điểm.
Những gì tôi nhận được cho đến nay
Đây là những gì tôi hiểu những gì xảy ra trong Spark:
- Khi a
SparkContext
được tạo, mỗi nút worker bắt đầu một tệp thực thi. Các bộ điều hành là các quy trình riêng biệt (JVM), kết nối lại với chương trình trình điều khiển. Mỗi người thực hiện có các chương trình điều khiển. Thoát khỏi một trình điều khiển, tắt các giám đốc điều hành. Mỗi người thực thi có thể giữ một số phân vùng. - Khi một công việc được thực thi, một kế hoạch thực hiện được tạo ra theo biểu đồ dòng.
- Công việc thực thi được chia thành các giai đoạn, trong đó các giai đoạn chứa nhiều biến đổi và hành động lân cận (trong biểu đồ dòng dõi), nhưng không có sự xáo trộn. Do đó các giai đoạn được phân tách bằng xáo trộn.
tôi hiểu điều đó
- Một tác vụ là một lệnh được gửi từ trình điều khiển đến một người thực thi bằng cách tuần tự hóa đối tượng Hàm.
- Người thực thi giải tuần tự hóa (với trình điều khiển jar) lệnh (tác vụ) và thực thi nó trên một phân vùng.
nhưng
Câu hỏi
Làm thế nào để tôi chia giai đoạn thành các nhiệm vụ?
Đặc biệt:
- Là các nhiệm vụ được xác định bởi các biến đổi và hành động hoặc có thể là nhiều biến đổi / hành động trong một nhiệm vụ?
- Là các nhiệm 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 tác 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 đúng)
Trong https://0x0fff.com/spark-arch architecture-shuffle, shuffle được giải thích với hình ảnh
và tôi có ấn tượng rằng quy tắc là
mỗi giai đoạn được chia thành các nhiệm vụ # số phân vùng, không liên quan đến số lượng nút
Đối với hình ảnh đầu tiên của tôi, tôi muốn nói rằng tôi có 3 nhiệm vụ bản đồ và 3 nhiệm 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ử rằng chỉ có ba tệp màu cam và ba màu xanh đậm).
Câu hỏi mở trong mọi trường hợp
Đúng không? Nhưng ngay cả khi điều đó là chính xác, các câu hỏi của tôi ở trên vẫn chưa được trả lời, bởi vì nó vẫn mở, cho dù nhiều thao tác (ví dụ như nhiều bản đồ) nằm trong một nhiệm vụ hoặc được tách thành một nhiệm vụ cho mỗi hoạt động.
Những gì người khác nói
Nhiệm vụ trong Spark là gì? Làm thế nào để công nhân Spark thực hiện các tập tin jar? và Trình lập lịch biểu Apache Spark chia các tệp thành các tác vụ như thế nào? tương tự nhau, 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 ở đó.