Chương trình Java "đơn giản" và triển khai dựa trên MapReduce dựa trên Hadoop là những con thú rất khác nhau và khó so sánh. Nó không giống như Hadoop song song một chút chương trình của bạn; nó được viết dưới dạng hoàn toàn khác từ trên xuống dưới.
Hadoop có chi phí đầu tư: chỉ là phí tổn bắt đầu công việc và bắt đầu công nhân như người vẽ bản đồ và bộ giảm tốc. Nó giới thiệu rất nhiều thời gian dành cho việc tuần tự hóa/deserializing dữ liệu, viết nó cục bộ, và chuyển nó sang HDFS.
Triển khai dựa trên Hadoop sẽ luôn sử dụng nhiều tài nguyên hơn. Vì vậy, nó là một cái gì đó để tránh trừ khi bạn không thể tránh nó. Nếu bạn có thể chạy một phép tính không phân tán trên một máy, lời khuyên thực tế đơn giản nhất là không phân phối. Tiết kiệm cho mình những rắc rối.
Trong trường hợp người giới thiệu Mahout, tôi có thể cho bạn biết rằng rất thô lỗ, một công việc Hadoop phải tính toán thêm 2-4 lần so với việc triển khai không phân phối trên cùng một dữ liệu. Rõ ràng là phụ thuộc vô cùng vào thuật toán và lựa chọn điều chỉnh algo. Nhưng để cung cấp cho bạn một số: Tôi sẽ không bận tâm với một cụm Hadoop có dưới 4 máy.
Rõ ràng, nếu tính toán của bạn không thể khớp với một trong các máy của bạn, bạn không còn cách nào khác ngoài phân phối. Sau đó, sự cân bằng là loại thời gian đồng hồ treo tường bạn có thể cho phép so với bao nhiêu công suất tính toán bạn có thể cống hiến. Tham chiếu đến luật của Amdahl là đúng, mặc dù nó không xem xét chi phí đáng kể của Hadoop. Ví dụ, để song song N cách, bạn cần ít nhất N trình lập bản đồ/bộ giảm tốc, và phát sinh N lần trên chi phí cho mỗi bản đồ/bộ giảm tốc. Có một số thời gian khởi động/tắt máy cố định.
Nguồn
2011-07-13 18:58:56
Bao lâu là một đoạn chuỗi? –
@Shaggy Frog, Jeff Foster. Xin lỗi, lúc đầu tôi không rõ ràng hơn. Câu hỏi không phải là "nó có thể đi nhanh hơn bao nhiêu", đó là "tôi cần bao nhiêu máy để nó nhanh hơn nhiều, chứ không phải là chậm hơn hoặc chỉ phá vỡ ngay cả". Đó là, nó là về chi phí tính toán của hadoop chạy, bản đồ giảm, mahout. Lỗi của tôi vì không rõ ràng hơn. –