Vài năm trước, MapReduce được ca ngợi là cuộc cách mạng của lập trình phân tán. Cũng đã có những người chỉ trích nhưng nhìn chung, có một sự cường điệu nhiệt tình. Nó thậm chí còn được cấp bằng sáng chế! [1]
Cái tên gợi nhớ map
và reduce
trong lập trình chức năng, nhưng khi tôi đọc (Wikipedia)
Bước ánh xạ: Nút chủ lấy đầu vào, chia nó thành các vấn đề phụ nhỏ hơn và phân phối chúng cho các nút worker. Một nút worker có thể thực hiện lại lần lượt, dẫn đến cấu trúc cây đa cấp. Nút worker xử lý vấn đề nhỏ hơn và chuyển câu trả lời trở lại nút chủ của nó.
Giảm bước: Nút chủ sau đó thu thập các câu trả lời cho tất cả các vấn đề phụ và kết hợp chúng theo một cách nào đó để tạo đầu ra - câu trả lời cho vấn đề ban đầu đang cố gắng giải quyết.
hoặc [2]
Nội bộ của MAP: [...] MAP chia giá trị đầu vào thành các từ. [...] MAP có nghĩa là liên kết từng cặp khóa / giá trị đã cho của đầu vào với nhiều cặp khóa / giá trị trung gian.
Nội bộ của GIẢM: [...] [GIẢM] thực hiện tổng hợp bắt buộc (giả sử, giảm): lấy nhiều giá trị và giảm chúng thành một giá trị duy nhất.
Tôi không thể không nghĩ: đây là sự phân chia & chinh phục (theo nghĩa của Mergesort), đơn giản và đơn giản! Vì vậy, có tính mới (khái niệm) trong MapReduce ở đâu đó không, hay nó chỉ là một triển khai mới của các ý tưởng cũ hữu ích trong các tình huống nhất định?