地图还原とは
大規模データを解析する際によくある課題として、メモリの工夫や計算時間の短縮が挙げられます。大規模なデータセットを解析するための機能のひとつである地图还原は、フィルター処理や統計などの一般的な解析手法をコンピュータのメモリに収まりきらないようなビッグデータに適用するためのプログラミング手法です。地图还原の仕組みはシンプルです。数据存储を使用して大きなデータを小さいチャンクに分け、それぞれのチャンクごとに2つの解析ステップを行います。その2つの解析ステップが 地图フェーズと 减少フェーズです。地图フェーズでそれぞれのチャンクに対してデータの書式設定や前処理を行った上で、减少フェーズですべての結果を集約します。
例えば、文字カウントに地图还原を適用する状況を考えます。地图フェーズで入力である文章セットをひとつずつの単語に分割し、それぞれの単語(关键)に対する値(价值)のペアを作成します。地图フェーズの段階では重複する単語があっても統合せずに1.としておきます。その钥匙と价值のペアを元に、减少フェーズで各チャンクのペア情報を統合します。
地图还原を文字カウントに適用した例
地图还原を使用せずにワードカウントを行おうとすると、階層のあるループ処理などを使う必要があり、処理のためのコードが複雑になる上に膨大な計算時間がかかってしまいます。
さらに、地图还原では大規模な計算をチャンクに分割することで、計算できない規模の計算を行うことや、並列計算の使用を可能にします。このような並列化されたアルゴリズムである 地图还原を実行することで、デスクトップの処理リソースをより効率的に利用することが可能です。また、アルゴリズムの変更なしに、高性能混凝土環境に展開することもできます。
地图还原を使用したデータ解析のワークフロー
地图还原を使用したデータ解析は以下のような手順をふみます。
地图関数、减少関数はそれぞれ 地图フェーズと 减少フェーズに行われる処理を記した関数で、ユーザー側で作成する必要があります。地图関数は、全体の中の一部のデータセットから、数据存储のチャンクごとの計算結果を中間オブジェクトとして返します。减少関数は、地图関数の出力である各チャンクの中間オブジェクトを統合し、全体での結果を出力します。
地图还原で必要な 地图関数と 减少関数の作成については、地图还原でよく行われる処理のパターンがあります。MATLAB®に付属する地图还原の簡単なデザインパターンのサンプルを利用することで、プロトタイプを迅速に作成することができます。これらの例では、地图还原を使用した単純な平均値計算から機械学習アルゴリズムであるロジスティック回帰モデルの近似などを含んでいます。
デスクトップ環境での 地图还原の使用
Hadoop環境での 地图还原の使用
MATLABの地图还原関数は配列ベースの解析向けに最適化されていますが、Hadoop MapReduceと完全な互換性があるため、作成した 地图还原ベースのアルゴリズムを Hadoop MapReduceフレームワークで実行することが可能です。地图还原の計算のスケールアップとして、以下のような地图还原の高速化と展開を行うことができます。
MATLAB并行服务器™により、MatlabMapReduceベースのアルゴリズムを既存の Hadoop MapReduceと共存して実行し、Hadoopに格納されているデータの調査と解析を行います。
クラスタを利用する2つの方法
地图还原ベースのアルゴリズムをパッケージ化して汎用 Hadoopシステムに展開
MATLAB编译器™により、MatlabMapReduceベースのアルゴリズムのアプリケーションとライブラリを作成し、MATLABがインストールされていない汎用環境の ApacheHadoopインスタンスに展開します。
地图还原コードをHadoop環境に配布するためのアプリケーションやライブラリを作成するHadoop编译器の画面。少ないステップで展開することができる。