2011-06-24 40 views
6

MapReduce có trừu tượng hóa một cách tốt để xử lý các vấn đề ngay cả trong một máy đơn lẻ không? Ví dụ, tôi có một máy 12 lõi và tôi phải đếm các từ trong hàng ngàn tệp (ví dụ MapReduce cổ điển).MapReduce có phù hợp để giải quyết các vấn đề trong môi trường đa lõi trong một bộ máy đơn không?

Sử dụng triển khai MapReduce với Mappers và Reducers trong nhiều chủ đề là một cách hay để giải quyết vấn đề này, xem xét rằng chúng tôi đang làm việc trên một máy duy nhất với một ổ cứng?

Tôi đoán câu hỏi của tôi là: Mô hình MapReduce có tốt để làm việc trong một cụm máy không?

+0

Tôi đặt cược "đĩa đơn" là điểm lớn. Tôi hy vọng một lõi đơn có thể chạy 'isspace (3)' trên các ký tự đến từ một đĩa cứng quay nhanh như ổ đĩa có thể phục vụ chúng. Có bất kỳ tệp nào trong bộ đệm đệm vì chúng thường được sử dụng không? – sarnold

+0

Để làm cho nó thú vị hơn, sau đó, chúng ta có thể nói rằng chúng tôi có một bộ đệm lớn các tập tin trong bộ nhớ. Giả sử chúng ta có 16GB bộ nhớ RAM để giữ các tệp và công việc MapReduce tiêu thụ bộ đệm này. Và nếu không có độ trễ Đĩa? Nếu tất cả dữ liệu trong RAM? –

+0

Trong trường hợp đó, tôi mong đợi nhiều luồng tính toán đáng giá. – sarnold

Trả lời

1

Tôi đoán câu hỏi của tôi là: Mô hình MapReduce chỉ tốt để làm việc trong một cụm máy?

Nói chung, có: MapReduce có thể kém hiệu quả hơn trên một PC. Tôi không thể nghĩ ra nhiều (nếu có) tình huống mà MapReduce sẽ có lợi thế hơn nhiều phương pháp tối ưu hóa tài nguyên khi được sử dụng trong môi trường không phân tán (ví dụ: PC đơn, ổ đĩa cứng đơn). Nói cách khác, nếu bạn đang cố gắng ép từng chút hiệu suất ra khỏi máy tính của bạn, bạn sẽ có khả năng đạt được nó với một giải pháp tùy chỉnh thay vì MapReduce.

Tuy nhiên, nếu bạn dự định thêm nhiều nút hơn và tạo cụm, thì MapReduce sẽ là mô hình đi tới.

+0

Nếu công việc được thực hiện bởi mỗi tác vụ bản đồ là đáng kể hơn (ví dụ, tính toán chuyên sâu), một cách tiếp cận mapreduce có thể là một lựa chọn tốt cho một máy tính duy nhất. –

7

Nói chung bạn có thể có hai trường hợp:

  1. Vấn đề của bạn là đủ nhỏ để phù hợp với bộ nhớ của hệ thống duy nhất của bạn và hệ thống duy nhất của bạn có đủ sức mạnh CPU để giải quyết vấn đề trong thời gian yêu cầu.
  2. Vấn đề của bạn quá lớn. 2.1 Thời gian chạy quá lớn (đĩa IO và/hoặc thời gian CPU) 2.2 Quá lớn để vừa với bộ nhớ (RAM).

Đối với 2.1 và 2.2 mô hình MapReduce giúp chia nhỏ công việc thành nhiều phần nhỏ hơn. Nếu bạn cần nhiều CPU, bạn chỉ cần thêm CPU. Vì vậy, nếu bạn có một hệ thống duy nhất và nó chỉ ra vấn đề của bạn quá lớn để phù hợp với bộ nhớ (điểm 2.2), bạn vẫn có thể hưởng lợi từ thực tế là MapReduce có thể dễ dàng đặt một phần của vấn đề trên đĩa cho đến khi phần đó sẽ được xử lý. Một thực tế quan trọng là nếu bạn có một vấn đề đủ nhỏ để vừa với bộ nhớ và đủ nhỏ để được xử lý trên một hệ thống duy nhất thì giải pháp chuyên dụng (không phải MapReduce) có thể nhanh hơn rất nhiều.

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