2017-04-04 13 views
5

Tôi đã cố gắng hiểu một chương trình MapReduce. Trong khi làm điều đó, tôi nhận thấy rằng các nhiệm vụ giảm bắt đầu thực hiện gần như ngay lập tức sau khi tất cả các bản đồ được giao nhiệm vụ được hoàn thành. Bây giờ, điều này là đáng ngạc nhiên, bởi vì các nhiệm vụ giảm có làm việc với dữ liệu được nhóm theo khóa, có nghĩa là có bước trộn/sắp xếp được thực hiện ở giữa. Cách duy nhất điều này có thể xảy ra là nếu việc xáo trộn được thực hiện song song với ánh xạ.Bước shuffle trong chương trình MapReduce có chạy song song với Ánh xạ không?

Thứ hai, nếu xáo trộn thực sự được thực hiện song song với ánh xạ, tương đương với điều đó trong Apache Spark là gì? Có thể lập bản đồ và nhóm theo các khóa và/hoặc phân loại xảy ra song song ở đó không?

+0

câu trả lời rất ngắn (quá ngắn cho câu trả lời bình thường): bạn có thể thấy shuffles như giai đoạn mới trong Spark của DAG. Giai đoạn mới = shuffle mới, có thể với một vài ngoại lệ –

+0

cho phần mapReduce của câu hỏi, bạn có thể thấy bài đăng này hữu ích: http://stackoverflow.com/questions/22141631/what-is-the-purpose-of-shuffling- và sắp xếp-pha-in-the-reducer-in-map-reduce/22169760 # 22169760 – vefthym

Trả lời

5

MapReduce Hadoop của không chỉ bản đồ và giảm các giai đoạn có những bước bổ sung như tổ hợp (bản đồ phía giảm) và hợp nhất như minh họa dưới đây (lấy từ http://www.bodhtree.com/blog/2012/10/18/ever-wondered-what-happens-between-map-and-reduce/) source: http://www.bodhtree.com/blog/2012/10/18/ever-wondered-what-happens-between-map-and-reduce/ Trong khi bản đồ vẫn đang chạy và khi họ phát ra phím các phím có thể được định tuyến và sáp nhập và theo bản đồ thời gian hoàn thành tất cả thông tin cần thiết cho một số nhóm giảm có thể đã được xử lý và sẵn sàng giảm.

Spark tạo DAG (biểu đồ tuần hoàn trực tiếp) của các giai đoạn cần thiết để xử lý và nhóm chúng thành các giai đoạn mà dữ liệu cần được xáo trộn giữa các nút. Không giống như Hadoop nơi dữ liệu được đẩy trong bản đồ, các bộ giảm tia lửa kéo dữ liệu và do đó chỉ thực hiện điều đó khi chúng bắt đầu chạy (mặt khác, Spark cố gắng chạy nhiều hơn trong bộ nhớ (so với đĩa) và làm việc với DAG. tốt hơn)

Alexey Grishchenko có một lời giải thích tốt của Spark shuffle here (lưu ý rằng tính Spark 2 chỉ loại ngẫu nhiên tồn tại)

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