Hãy để tôi giúp làm rõ về trộn trong chiều sâu và cách Spark sử dụng shuffle manager. Tôi báo cáo một số tài nguyên rất hữu ích:Tìm hiểu trình quản lý phát ngẫu nhiên trong Spark
https://trongkhoanguyenblog.wordpress.com/
https://0x0fff.com/spark-architecture-shuffle/
https://github.com/JerryLead/SparkInternals/blob/master/markdown/english/4-shuffleDetails.md
Reading họ, tôi hiểu có những nhà quản lý phát ngẫu nhiên khác nhau. Tôi muốn tập trung vào hai trong số đó: hash manager
và sort manager
(là trình quản lý mặc định).
Đối phơi bày câu hỏi của tôi, tôi muốn bắt đầu từ một sự chuyển đổi rất phổ biến:
val rdd = reduceByKey(_ + _)
chuyển đổi này gây đồ-side aggregation và sau đó xáo trộn để đưa tất cả các phím tương tự vào cùng một phân vùng .
Câu hỏi của tôi là:
là Map-Side hợp triển khai sử dụng trong nội bộ một chuyển đổi mapPartition và do đó tập hợp tất cả các phím tương tự bằng cách sử dụng chức năng kết hợp hoặc là nó thực hiện với một
AppendOnlyMap
hoặcExternalAppendOnlyMap
?Nếu
AppendOnlyMap
hoặcExternalAppendOnlyMap
bản đồ được sử dụng để tập hợp, là họ cũng sử dụng cho giảm phụ hợp điều đó xảy ra vàoResultTask
?Mục đích ngoại lệ về hai loại bản đồ này (
AppendOnlyMap
hoặcExternalAppendOnlyMap
) là gì?Có phải
AppendOnlyMap
hoặcExternalAppendOnlyMap
được sử dụng từ tất cả các trình quản lý ngẫu nhiên hoặc chỉ từ người quản lý sắp xếp?tôi đọc rằng sau
AppendOnlyMap
hoặcExternalAppendOnlyMap
có đầy đủ, được đổ vào một tập tin, làm thế nào chính xác không bước này xảy ra?Sử dụng trình quản lý sắp xếp ngẫu nhiên, chúng tôi sử dụng appendOnlyMap để tổng hợp và kết hợp các bản ghi phân vùng, phải không? Sau đó, khi bộ nhớ thực hiện được lấp đầy, chúng tôi bắt đầu phân loại bản đồ, đổ nó vào đĩa và sau đó dọn dẹp bản đồ, câu hỏi của tôi là: sự khác biệt giữa tràn vào đĩa và trộn bài là gì? Chúng bao gồm cơ bản trong việc tạo tập tin trên hệ thống tập tin cục bộ, nhưng chúng được xử lý khác nhau, Shuffle ghi hồ sơ, không được đưa vào appendOnlyMap.
Bạn có thể giải thích ở độ sâu điều gì xảy ra khi reduceByKey được thực thi, giải thích cho tôi tất cả các bước liên quan để thực hiện điều đó? Ví dụ như tất cả các bước cho tập hợp bên bản đồ, xáo trộn và vân vân.
@JacekLaskowski Bạn là một chuyên gia trong Spark xáo trộn;) –
Cũng @ 0x0FFF là một chuyên gia trong Spark shuffling – Giorgio