2014-05-07 20 views
49

Xem xét cơ sở dữ liệu MySQL products với 10 triệu sản phẩm cho trang web thương mại điện tử.Sự khác biệt giữa Apache Mahout và MLlib của Apache Spark là gì?

Tôi đang cố gắng thiết lập mô-đun phân loại để phân loại sản phẩm. Tôi đang sử dụng Apache Sqoop để nhập dữ liệu từ MySQL sang Hadoop.

Tôi muốn sử dụng Mahout qua nó như là một khuôn khổ Learning Machine sử dụng một trong đó là Classification algorithms, và sau đó tôi chạy vào Spark được cung cấp với MLlib

  • Vì vậy, sự khác biệt giữa hai khuôn khổ là gì?
  • Chủ yếu, các ưu điểm, điểm yếu và hạn chế của mỗi loại là gì?

Trả lời

40

Sự khác biệt chính sẽ đến từ các khuôn khổ cơ bản. Trong trường hợp Mahout đó là Hadoop MapReduce và trong trường hợp MLib nó là Spark. Để cụ thể hơn - từ sự khác biệt trong mỗi chi phí công việc
Nếu thuật toán ML của bạn được ánh xạ tới công việc MR đơn lẻ - sự khác biệt chính sẽ chỉ là chi phí khởi động, đó là hàng chục giây cho Hadoop MR và giả sử 1 giây cho Spark. Vì vậy, trong trường hợp đào tạo mô hình nó không phải là quan trọng.
Mọi thứ sẽ khác nếu thuật toán của bạn được ánh xạ tới nhiều công việc. Trong trường hợp này, chúng tôi sẽ có sự khác biệt tương tự về chi phí trên mỗi lần lặp lại và nó có thể thay đổi trò chơi.
Giả sử rằng chúng ta cần 100 lần lặp, mỗi lần cần 5 giây của CPU cụm.

  • Trên Spark: sẽ mất 100 * 5 + 100 * 1 giây = 600 giây.
  • Trên Hadoop: MR (Mahout), nó sẽ mất 100 * 5 + 100 * 30 = 3500 giây.

Đồng thời Hadoop MR là khuôn khổ trưởng thành hơn Spark và nếu bạn có nhiều dữ liệu, và ổn định là tối quan trọng - tôi sẽ coi Mahout là sự thay thế nghiêm túc.

+7

Phiên bản tương lai của Mahout cũng sẽ sử dụng Spark thay vì (hoặc ngoài) MapReduce, như được thông báo vào tháng 4 năm 2014. – herman

+3

Điều cần biết. Nhưng điều gì sẽ khác biệt với MLib? –

+0

Sau đó, bây giờ Mahout được dựa trên Spark, sự khác biệt giữa Mahout và Spark là gì? – skan

38

Cảnh báo - chỉnh sửa chính:

MLlib là một tập hợp lỏng lẻo của các thuật toán cao cấp chạy trên Spark. Đây là những gì Mahout từng chỉ là Mahout cũ là trên Hadoop Mapreduce. Vào năm 2014, Mahout tuyên bố sẽ không còn chấp nhận mã Hadoop Mapreduce nữa và hoàn toàn chuyển sang phát triển mới cho Spark (với các động cơ khác có thể trong quá trình offing, như H2O).

Điều quan trọng nhất để thoát ra khỏi đây là một công cụ đại số và môi trường đại số tuyến tính được tối ưu hóa phân tán dựa trên Scala bao gồm một vỏ Scala tương tác. Có lẽ từ quan trọng nhất là "tổng quát". Kể từ khi nó chạy trên Spark bất cứ điều gì có sẵn trong MLlib có thể được sử dụng với các công cụ đại số tuyến tính của Mahout-Spark.

Nếu bạn cần một công cụ chung sẽ thực hiện rất nhiều công cụ như R nhưng trên dữ liệu thực sự lớn, hãy xem Mahout. Nếu bạn cần một thuật toán cụ thể, hãy xem từng thuật toán để xem chúng có gì. Ví dụ Kmeans chạy trong MLlib nhưng nếu bạn cần phải cluster A'A (một ma trận cooccurrence được sử dụng trong giới thiệu) bạn sẽ cần cả hai vì MLlib không có một transpose ma trận hoặc A'A (thực sự Mahout không một tối ưu hóa mỏng A'A để transpose được tối ưu hóa ra).

Mahout cũng bao gồm một số sáng tạo recommender building blocks cung cấp những thứ được tìm thấy trong không có PMNM nào khác.

Mahout vẫn có các thuật toán Hadoop cũ hơn nhưng các công cụ tính toán nhanh như Spark trở thành tiêu chuẩn mà hầu hết mọi người sẽ đầu tư ở đó.

+1

Sau đó, bây giờ Mahout được dựa trên Spark, sự khác biệt giữa Mahout và Spark là gì ?. Liệu Spark có thay thế dần dần Mahout? – skan

+2

The hadoop mapreduce cũ dựa trên Mahout - vâng. Nhưng tôi không nghĩ rằng như chưa được đặt tên Mahout-Spark DSL, mà là một giải quyết đại số tổng quát và môi trường là bất cứ điều gì giống như MLlib. Kể từ khi nó chạy trên Spark và có thể sử dụng bất cứ điều gì trong MLlib nó không tìm cách reimplement tất cả những gì nhưng tập trung vào được một cái gì đó chung như R nhưng trên bộ dữ liệu khổng lồ. – pferrel

+0

Mahout tái tạo lại chính nó và - như được ám chỉ bởi pferrel - đã trở nên có liên quan và thú vị một lần nữa. Nó có trong một số khu vực một đại số tuyến tính vững chắc hơn nền tảng hơn mllib – javadba

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