web-dev-qa-db-ja.com

Apache MahoutとApache SparkのMLlibの違いは何ですか?

EコマースWebサイト用に1000万の製品を含むMySQL productsデータベースを検討します。

製品を分類する分類モジュールを設定しようとしています。 Apache Sqoopを使用して、MySQLからHadoopにデータをインポートしています。

機械学習フレームワークとしてMahoutを使用して、そのいずれか 分類アルゴリズム を使用したいと思いました。その後、Sparkが提供されます MLlib

  • 2つのフレームワークの違いは何ですか?
  • 主に、それぞれの利点、欠点、制限は何ですか?
53
eliasah

主な違いは、基盤となるフレームワークから生じます。 Mahoutの場合はHadoop MapReduceで、MLibの場合はSparkです。具体的には、ジョブごとのオーバーヘッドの違いから
MLアルゴリズムが単一のMRジョブにマッピングされている場合、主な違いは起動時のオーバーヘッドのみです。これは、Hadoop MRでは数十秒、Sparkでは1秒です。そのため、モデルトレーニングの場合、それほど重要ではありません。
アルゴリズムが多くのジョブにマッピングされている場合、状況は異なります。この場合、反復ごとのオーバーヘッドに同じ違いがあり、ゲームチェンジャーになる可能性があります。
100回の反復が必要であり、それぞれに5秒のクラスターCPUが必要であると仮定します。

  • Sparkの場合:100 * 5 + 100 * 1秒= 600秒かかります。
  • Hadoop:MR(Mahout)では、100 * 5 + 100 * 30 = 3500秒かかります。

同時に、Hadoop MRはSparkよりはるかに成熟したフレームワークであり、大量のデータがあり、安定性が最も重要な場合-Mahoutを深刻な代替手段と考えます。

43
David Gruzman

警告-主要な編集:

MLlibは、Spark上で実行される高レベルのアルゴリズムの緩やかなコレクションです。これは、MahoutがHadoop Mapreduceにあった昔のMahoutでしかなかったものです。 2014年、MahoutはHadoop Mapreduceコードを受け入れなくなり、完全に新しい開発をSpark(H2Oなどの他のエンジンを使用)に切り替えました。

これから出てくる最も重要なことは、Scalaベースの一般化された分散最適化線形代数エンジンと、インタラクティブなScalaシェルを含む環境です。おそらく最も重要なWordは「generalized」です。 on Spark MLlibで利用可能なものはすべてMahout-Sparkの線形代数エンジンで使用できます。

Rのようなツールが実行する多くの機能を実行する一般的なエンジンが必要な場合、Mahoutをご覧ください。特定のアルゴリズムが必要な場合は、それぞれを見て、そのアルゴリズムを確認してください。たとえば、KmeansはMLlibで実行されますが、A'A(レコメンダーで使用される共起マトリックス)をクラスター化する必要がある場合、MLlibにはマトリックス転置またはA'A(実際にはMahoutはシン最適化A'Aなので、転置は最適化されます)。

Mahoutには、他のOSSにはないものを提供する革新的な 推奨構成要素 も含まれています。

Mahoutにはまだ古いHadoopアルゴリズムがありますが、Sparkなどの高速な計算エンジンがほとんどの人が投資する標準になります。

42
pferrel