2015-01-06 17 views
15

Tôi mới dùng máy tính song song và chỉ bắt đầu thử dùng MPI và Hadoop + MapReduce trên Amazon AWS. Nhưng tôi bối rối khi sử dụng cái kia.Hadoop MapReduce vs MPI (vs Spark vs Mahout vs Mesos) - Khi nào thì sử dụng cái kia?

Ví dụ, một quy tắc chung của ngón tay cái lời khuyên tôi thấy có thể được tóm tắt như ...

  • dữ liệu lớn, không lặp đi lặp lại, lỗi khoan dung => MapReduce
  • Speed, dữ liệu nhỏ, lặp đi lặp lại, loại không Mapper-Giảm => MPI

nhưng sau đó, tôi cũng thấy thi hành MapReduce trên MPI (MR-MPI) mà không cung cấp khả năng chịu lỗi nhưng seems to be hiệu quả hơn trên một số tiêu chuẩn so với MapReduce trên Hadoop, và dường như xử lý lớn d ata sử dụng bộ nhớ ngoài lõi.

Ngược lại, cũng có các triển khai MPI (MPICH2-YARN) trên Sợi Hadoop thế hệ mới với hệ thống tệp phân tán của nó (HDFS). Ngoài ra, có vẻ như có quy định trong phạm vi MPI (Scatter-Gather, Checkpoint-Restart, ULFMfault tolerance) khác bắt chước một số tính năng của mô hình MapReduce.

Và Mahout, Mesos và Spark phù hợp với tất cả điều này như thế nào?

Tiêu chí nào có thể được sử dụng khi quyết định giữa (hoặc kết hợp) Hadoop MapReduce, MPI, Mesos, Spark và Mahout?

+2

dup có thể có của http://stackoverflow.com/questions/1530490/what-are-some-scenarios-for-which-mpi-is-a-better-fit-than-mapreduce?rq=1? –

+2

Tôi đã đọc q & a đó trước khi đăng bài của tôi. Ở đó, bạn sẽ thấy rằng đối với mỗi câu trả lời được đăng, có những nhận xét cho rằng câu trả lời là không chính xác. Lấy câu trả lời đầu tiên, ví dụ. Có các phần tử hữu hạn trên MapReduce [1] (http://milindb.tumblr.com/post/8782567841/mapreduce-pregel-and-fem-framework), [2] (http://ieeexplore.ieee.org/ xpl/login.jsp? tp = & arnumber = 6188175 & url = http% 3A% 2F% 2Fieeexplore.ieee.org% 2Fxpls% 2Fabs_all.jsp% 3Farnumber% 3D6188175). – crackjack

+0

Sau khi tôi đã hỏi câu hỏi này, tôi đã gặp một vài lựa chọn khác (để thêm vào sự nhầm lẫn) - như Akka, dường như không bị giới hạn trong các kịch bản "rõ ràng song song" như MapReduce, đồng thời cũng bị lỗi và có ràng buộc Infiniband (TCP), v.v. – crackjack

Trả lời

8

Có thể có các tiêu chí kỹ thuật tốt cho quyết định này nhưng tôi chưa thấy bất kỳ điều gì được xuất bản trên đó. Dường như có một sự phân chia văn hóa, nơi nó được hiểu rằng MapReduce được sử dụng để sàng lọc thông qua dữ liệu trong môi trường doanh nghiệp trong khi khối lượng công việc khoa học sử dụng MPI. Điều đó có thể là do độ nhạy cơ bản của các tải công việc đó đối với hiệu suất mạng. Dưới đây là một vài suy nghĩ về cách tìm hiểu:

Nhiều triển khai MPI hiện đại có thể chạy trên nhiều mạng nhưng được tối ưu hóa rất nhiều cho Infiniband. Trường hợp sử dụng chuẩn cho MapReduce dường như nằm trong một cụm các hệ thống hàng hóa "hộp màu trắng" được kết nối thông qua ethernet. Một tìm kiếm nhanh về "MapReduce Infiniband" dẫn đến http://dl.acm.org/citation.cfm?id=2511027 cho thấy rằng việc sử dụng Infiniband trong môi trường MapReduce là một điều tương đối mới.

Vậy tại sao bạn muốn chạy trên một hệ thống được tối ưu hóa cao cho Infiniband? Nó đắt hơn đáng kể so với ethernet nhưng có băng thông cao hơn, độ trễ thấp hơn và cân tốt hơn trong trường hợp tranh chấp mạng cao (ref: http://www.hpcadvisorycouncil.com/pdf/IB_and_10GigE_in_HPC.pdf).

Nếu bạn có ứng dụng nhạy cảm với những tác động của tối ưu hóa cho Infiniband đã được đưa vào nhiều thư viện MPI, có thể điều đó sẽ hữu ích cho bạn. Nếu ứng dụng của bạn tương đối không nhạy cảm với hiệu suất mạng và dành nhiều thời gian hơn cho các tính toán không yêu cầu liên lạc giữa các quá trình, có thể MapReduce là một lựa chọn tốt hơn.

Nếu bạn có cơ hội để chạy điểm chuẩn, bạn có thể thực hiện phép chiếu trên bất kỳ hệ thống nào bạn có sẵn để xem hiệu suất mạng được cải thiện sẽ giúp ích bao nhiêu. Hãy thử điều chỉnh mạng của bạn: ép xung GigE thành 100mbit hoặc Infiniband QDR thành DDR, ví dụ, vẽ một đường thẳng qua kết quả và xem liệu việc mua kết nối nhanh hơn được tối ưu hóa bởi MPI có giúp bạn đi đến đâu không.

6

Các liên kết mà bạn đăng tải về FEM được thực hiện trên MapReduce: http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=6188175&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D6188175

sử dụng MPI. Nó nói nó ở đó trong phần tóm tắt. Họ kết hợp mô hình lập trình của MPI (song song không đáng xấu hổ) với HDFS để "giai đoạn" dữ liệu để khai thác địa phương dữ liệu.

Hadoop hoàn toàn là tính toán song song đáng xấu hổ. Bất cứ thứ gì đòi hỏi các quy trình để tự tổ chức và trao đổi dữ liệu theo những cách phức tạp sẽ có được hiệu suất crap với Hadoop. Điều này có thể được chứng minh cả từ quan điểm phức tạp về thuật toán, và cũng từ quan điểm đo lường.

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