MapReduceは、Hadoopクラスター内の数百、数千のサーバーにわたる大規模な拡張性を可能にするプログラミングのパラダイムです。 プロセッシング・コンポーネントとして、MapReduceはApache Hadoopの心臓部です。 「MapReduce」という用語は、Hadoopプログラムが実行する2つの個別の異なるタスクを指します。 1つ目は、データのセットを取得して別のデータのセットに変換するマップジョブです。ここで、個々の要素がタプル(鍵と値のペア)に分割されます。
reduceジョブは、mapからの出力を入力として受け取り、それらのデータタプルをより小さなタプルのセットに結合します。 MapReduceという名前の順番が示すように、reduceジョブは常にmapジョブの後に実行されます。
MapReduceプログラミングには、ビッグデータから貴重な洞察を得るのに役立ついくつかのメリットがあります。
これはMapReduceの非常に単純な例です。 分析する必要のあるデータの量に関係なく、主要な原則は同じままです。
5つのファイルがあり、各ファイルには、都市と、各測定日にその都市で記録されたそれぞれの温度を表す2つの列(Hadoop用語の鍵と値)が含まれているとします。 都市が鍵で、気温が値です。 例:(トロント、20)。 収集したすべてのデータから、データファイル全体で各都市の最高気温を見つけたいと考えているとします(各ファイルには同じ都市が複数回表されている場合があるので注意してください)。
MapReduceフレームワークを使用すると、これを5つのマップ・タスクに分割できます。各マッパーは5つのファイルの1つで動作します。 マッパー・タスクはデータを調べて、各都市の最高気温を返します。
例えば、上記のデータに対して1つのマッパー・タスクから生成された結果は、(トロント、20)(ウィットビー、25)(ニューヨーク、22)(ローマ、33)のようになります。
他の4つのマッパー・タスク(ここに示されていない他の4つのファイルでの作業)が次の中間結果を生成したと仮定します。
(トロント、18)(ウィットビー、27)(ニューヨーク、32)(ローマ、37)(トロント、32)(ウィットビー、20)(ニューヨーク、33)(ローマ、38)(トロント、22)(ウィットビー、 19)(ニューヨーク、20)(ローマ、31)(トロント、31)(ウィットビー、22)(ニューヨーク、19)(ローマ、30)
これらの5つの出力ストリームはすべてreduceタスクに送られ、入力結果を組み合わせて各都市の単一の値を出力し、(トロント、32)(ウィットビー、27)(ニューヨーク、 33)(ローマ、38)のような最終結果セットを生成します。
アナロジーとして、mapタスクとreduceタスクを、国勢調査がローマ時代に行われた方法と考えることができます。当時の国勢調査局はこれで人々を帝国の各都市に派遣していました。 各都市の各国勢調査担当者は、その都市の人数を数え、その結果を首都に返すように任務を負います。 そこでは、各都市からの結果を1つのカウント(すべての都市の合計)に減らして、帝国の全体的な人口を決定します。 この人々の都市へのマッピングを並行して行い、結果を組み合わせる(削減する)ことは、帝国のすべての人を連続して数えるために1人の人を送るよりもはるかに効率的です。
IBMとClouderaは提携し、製品とサービスから成る統合エコシステムなど、エンタープライズ・グレードで業界最高レベルのHadoopディストリビューションを提供し、大規模な分析を迅速に行います。
オープンソースの拡張性の高いストレージとプログラミング・プラットフォームを使用して、ビッグデータのパワーを活用します。 IBMは、Hadoop互換のソリューションとサービスを提供して、あらゆるタイプのデータを活用し、ビジネスの洞察とデータ駆動型の意思決定を強化します。
Hadoopデータの可能性を最適化するHadoopベースのデータレイクを構築します。 IBMとClouderaのソリューションと製品のエコシステムを使用して、増大するデータの量、速度、多様性をより適切に管理、管理、アクセス、および調査します。