Dữ liệu đi lần lượt qua các bộ sau:
- Một trình đọc đầu vào (tương ứng trong hình là khối InputFormat) - Một chức năng Map (khối map)
- 36 - - Một chức năng phân vùng (khối Partitioner) - Một chức năng reduce (khối reduce)
- Một trình ghi đầu ra (OutputFormat)
Hình 7: Sơ đồ luồng dữ liệu
Trình đọc đầu vào: chia dữ liệu vào thành các mảnh từ 16M đến 128MB và
framework sẽ gán mỗi phần cho mỗi chức năng Map. Bộ đọc đầu vào đọc dữ liệu từ các kho ổn định và sinh ra các cặp khóa/ giá trị.
- 37 -
Một ví dụ phổ biến là đọc một thư mục đầy đủ của tập tin văn bản và trả lại từng dòng như là một bản ghi.
Chức năng Map: mỗi chức năng Map lấy một loạt các cặp khóa/dữ liệu, xử lý từng
cặp, sinh ra 0 hoặc nhiều hơn các cặp khóa/dữ liệu output. Các kiểu đầu vào và đầu ra của map có thể khác nhau từng cặp một .
Nếu ứng dụng đang đếm từ, chức năng Map sẽ phá vỡ đường tới các từ và ở đầu ra thì từ được coi như khóa và „1‟ là giá trị.
Chức năng phân vùng: Đầu ra của tất cả các Mapper được giao cho một Reducer
cụ thể bởi chức năng phân vùng của ứng dụng. Chức năng phân vùng được nhận khóa và số reducer và trả lại chỉ số mong muốn được giảm thiểu.
Chức năng reduce: Framework gọi chức năng reduce của ứng dụng một lần cho
mỗi khóa duy nhất theo thứ tự đã sắp xếp. Việc giảm thiểu có thể được lặp lại qua các giá trị được liên kết với khóa đó 0 hoặc nhiều hơn giá trị đầu ra.
Trình ghi đầu ra: ghỉ kết quả output tới các kho lưu trữ ổn định, thường là các hệ
thống file phân tán, ví dụ như Google File System.