HadoopのデータサイエンスとMapReduceプログラミングモデル


8

mapreduceプログラミングモデルを使用して解決できるデータサイエンス問題のさまざまなクラスは何ですか?

回答:


13

最初にそれを部分に分割しましょう。

データサイエンスは生データから知識を作ることです。機械学習、統計、その他のフィールドを使用して、意思決定を簡素化(または自動化)します。データサイエンステクニックはどのようなデータサイズでも機能しますが、データが多いほど、予測が正確になり、決定がより正確になります。

Hadoopは、大量のデータを処理することを目的とした一連のツールの一般的な名前です。Hadoopの2つの最も重要なコンポーネントは、HDFSとMapReduceです。

HDFS(Hadoop分散ファイルシステム)は、非常に大量のデータを保持できる特別な分散ストレージです。HDFS上の大きなファイルはブロックに分割され、ブロックごとにHDFS APIがその場所を公開します

MapReduceは、データを持つノードで計算を実行するためのフレームワークです。MapReduceは、HDFSによって公開されるデータの局所性を頻繁に使用します。可能な場合、データはノード間で転送されませんが、代わりにコードがデータとともにノードにコピーされます。

したがって、基本的に、データの局所性の原則に違反しない問題(データサイエンスタスクを含む)は、MapReduceを使用して効率的に実装できます(他の多くの問題は、効率的ではなく、それでも十分に解決できます)。


いくつかの例を見てみましょう。たいていの場合、アナリストは表形式のデータについて単純な統計を必要とするだけです。この場合、基本的にMapReduce上のSQLエンジンであるHiveはかなりうまく機能します(Impala、Sharkなどもありますが、HadoopのMapReduceは使用しないため、後で詳しく説明します)。

他の場合では、アナリスト(または開発者)は、以前に構造化されていないデータを使用することを望む場合があります。純粋なMapReduceは、データの変換標準化に非常に適しています。

一部の人々は、Rなどのツールを使用した探索的統計と視覚化に慣れています。RHadoopパッケージを使用して、このアプローチをビッグデータ量に適用することが可能です。

MapReduceベースの機械学習に関しては、Apache Mahoutが最初に言及されます。


ただし、データの局所性が存在する場合でもHadoopで非常にゆっくりと動作するアルゴリズムの1つ、つまり反復アルゴリズムがあります。反復アルゴリズムには、複数のMapおよびReduceステージがある傾向があります。HadoopのMRのフレームワークは、読み出しおよび書き込みデータをディスクに各ステージに(時には間に)、反復(ならびに任意の多段階)タスクがひどく遅いなりいます。

幸いにも、データの局所性を使用し、ステージ間でデータをメモリに保持することの両方が可能な代替フレームワークがあります。おそらく、最も注目すべきものはApache Sparkです。Sparkは、独自のランタイムを使用し、分散データセットを操作するためのかなりリッチなAPIを公開するHadoopのMapReduceの完全な代替品です。Sparkには、データサイエンスに密接に関連するいくつかのサブプロジェクトがあります。

  • Shark Spark SQL は、HDFSに保存されたデータに代替SQLのようなインターフェースを提供します
  • Spark Streamingにより、継続的なデータストリーム(Twitterフィードなど)の操作が簡単になります
  • MLlibは、かなりシンプルで柔軟なAPIを備えた多数の機械学習アルゴリズムを実装しています
  • GraphXは大規模なグラフ処理を可能にします

そのため、Hadoopおよび関連プロジェクトで解決できるかなり大量のデータサイエンス問題があります。


特にMapReduceでの発言についてはよくわかりませんSo basically any problem that doesn't break data locality principle may be efficiently implemented using MapReduce。私の理解では、MapReduceパターンで表現できる問題しか解決できません。
メロウ14

@fxm:MapReduceフレームワークは、さまざまなタスクに使用できます。たとえば、Oozie-さまざまなHadoopコンポーネントのワークフロースケジューラ-には、いわゆるJavaアクションがあり、1つのマッパーを作成し、その中でカスタムJavaコードを実行します。このアプローチを使用すると、基本的にあらゆるコードを実行できます。ただし、これでは、単純なJavaアプリと比較してMRの利点は得られません。これらの利点を得る唯一の方法は、データを持つノード、つまりローカルで並列に(マップを使用して)計算を実行することです。まとめると、MRで任意のコードを実行できますが、パフォーマンスを得るには、データの局所性を保持する必要があります。
ffriend 2014

同意しますが、開発者はデータの局所性(hadoopによって管理されます)の管理について心配する必要はなく、必要なアルゴリズムをMapReduceパターンで表現することについて心配する必要があります。
14

@fxm:開発者はマッパーを使用して局所性を保証します。大まかに言えば、「map(f、data)」は「f()をデータノードに転送してローカルで実行する」ことを意味します。開発者が局所性を考慮しない場合(たとえば、すべての計算をレデューサーに入れるなど)、MRのすべての利点を失います。したがって、アルゴを(効率的な)MRジョブとして表現することは、とにかくデータ局所性の利用を意味します。とはいえ、Sparkなどの純粋なMRよりも柔軟なツールを使用することをお勧めします。
ffriend 2014

9

データサイエンスには、私の投稿で説明したようにさまざまなサブエリアがあります)ほぼ各分野で、科学者と開発者は大きな貢献をしています。何ができるかについて詳しくは、次のWebサイトをご覧ください。

  • データマイニングアルゴリズムと機械学習-> Apache Mahout
  • 統計-> RHadoop
  • データウェアハウジングとデータベースクエリ-> SQL-MapReduce
  • ソーシャルネットワーク分析-> 記事
  • バイオインフォマティクス-> 記事-1記事-2

また、MapReduce + Excel + Cloudの組み合わせに関するいくつかの作業がありますが、リンクが見つかりません。

データサイエンス問題のさまざまなクラスとは...

各「クラス」は、純粋に均一な問題ドメインではありません。つまり、一部の問題は、マップを介して解決できず、通信コストまたはアルゴリズムの動作のためにアプローチを削減できません。動作とは、ある問題では、チャンクではなくすべてのデータセットを制御したいということです。したがって、問題の「クラス」のタイプをリストすることは拒否します。

MapReduceで何ができるかを知るだけではデータサイエンスには不十分であることを忘れないでください。また、MapReduceで実行できないことも知っておく必要があります。



2

map / reduceは、並列化可能なオフライン計算に最適です。より正確には、入力のパーティションの関数の結果から結果が見つかる場合に最適です。平均化は簡単な例です。これを行うには、map / reduceを使用して、各パーティションを合計し、パーティション内の要素の数と合計を返し、これらの中間結果を使用して全体の平均を計算します。中間ステップが他のパーティションの状態に依存している場合は、あまり適切ではありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.