2012-05-17 32 views
23

Tôi chỉ cố gắng để xác nhận sự hiểu biết của tôi về sự khác biệt giữa 0 giảm và nhận dạng giảm.hadoop: sự khác biệt giữa 0 giảm và nhận dạng giảm?

  • 0 giảm có nghĩa là giảm bước sẽ bị bỏ qua và đầu ra mapper sẽ là thức ra
  • nhận dạng giảm có nghĩa là sau đó xáo trộn/sắp xếp vẫn sẽ diễn ra?

Trả lời

34

Bạn hiểu chính xác. Tôi sẽ định nghĩa nó như sau: Nếu bạn không cần phân loại kết quả bản đồ - bạn đặt 0 giảm và công việc chỉ được gọi là bản đồ.
Nếu bạn cần sắp xếp kết quả ánh xạ, nhưng không cần bất kỳ tập hợp nào - bạn chọn trình giảm nhận dạng.
Và để hoàn thành hình ảnh chúng tôi có trường hợp thứ ba: chúng tôi cần tập hợp và, trong trường hợp này, chúng tôi cần bộ giảm tốc.

3

Tùy thuộc vào yêu cầu kinh doanh của bạn. Nếu bạn đang làm một số từ, bạn nên giảm đầu ra bản đồ của bạn để có được một kết quả tổng. Nếu bạn chỉ muốn thay đổi các từ thành chữ hoa, bạn không cần giảm bớt.

4

Trường hợp sử dụng khác để sử dụng Nhận dạng giảm tốc là kết hợp tất cả các kết quả vào < # bộ giảm tốc> tệp đầu ra. Điều này có thể hữu ích nếu bạn đang sử dụng Dịch vụ web của Amazon để ghi trực tiếp vào S3, đặc biệt nếu đầu ra của trình ánh xạ nhỏ (ví dụ: grep/tìm kiếm bản ghi) và bạn có rất nhiều người lập bản đồ (ví dụ: 1000).

+0

Xin chào Dolan, bạn có thể giải thích một chút về việc sử dụng Identity Reducer để kết hợp các kết quả thành ít tệp hơn không? Tôi đã phải đối mặt với các vấn đề tương tự - có rất nhiều tệp nhỏ được tạo bởi các công việc chỉ có bản đồ. Nó sẽ kém hiệu quả hơn so với các công việc chỉ có bản đồ? –

+0

Yitong - có thêm chi phí khi sử dụng Identity Reducers trên tất cả vì đầu ra Mapper cần được băm thành nhóm X và sau đó được gửi tới bộ giảm X (nghĩa là X là số tệp đầu ra mong muốn của bạn), được sắp xếp, và sau đó được lưu vào thư mục đầu ra trên HDFS/S3/etc. Nếu bạn có một tấn dữ liệu, thì bạn sẽ cần phải cẩn thận với chi phí bổ sung này vì nó có thể có ý nghĩa trong một số trường hợp. Thay vào đó, nếu lưu vào HDFS, bạn có thể sử dụng 'hdfs cat' để truyền tất cả đầu ra của tệp vào một vị trí. Tôi không biết liệu S3 có cơ chế đọc luồng tương tự hay không. –

3

Sự khác biệt chính giữa "Không giảm tốc" (mapred.reduce.tasks = 0) và "giảm tốc tiêu chuẩn" đó là IdentityReducer (mapred.reduce.tasks = 1 vv) là khi bạn sử dụng "Không giảm tốc "không có phân vùng & quy trình xáo trộn sau giai đoạn MAP. Do đó, trong trường hợp này, bạn sẽ nhận được kết quả 'thuần' từ những người lập bản đồ của bạn mà không cần xử lý thêm. Nó giúp phát triển và gỡ lỗi các học sinh, nhưng không chỉ.

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