読者です 読者をやめる 読者になる 読者になる

ローグウェーブソフトウェアのブログ

開発をシンプルに 安全で高品質のコードを 素早くお客様のもとへ

JMSL数値計算ライブラリを使ったHadoop MapReduce アプリケーションの開発

Javaで書かれたHadoopというMapReduceフレームワークビッグデータ解析などの領域で広く使われています。Javaを使った数値計算・統計解析ライブラリはそれほど多くありませんが、ローグウェーブソフトウェアが開発している数値計算ライブラリIMSLJava版であるJMSLJavaネイティブで記述され、他の言語用のIMSL製品同様高い信頼性をもって利用されています。JMSLをHadoopで使用するためのチュートリアルや関連情報などをホワイトペーパーにまとめて日本語の文書一覧に追加しました。

JMSLとは

JMSL数値計算ライブラリは、Java の環境で利用できる数学、統計、金融、データマイニングおよびチャートのクラスが一つに集約された包括的な数値解析ライブラリです。業界最高レベルのIMSLライブラリの信頼性の高い数値計算・統計解析用のアルゴリズムに豊富なチャート機能を統合した、Javaプログラマ向けの唯一のソリューションです。Java環境での高度な数値解析と可視化機能を組み合わせは、企業の皆様が組織内の価値ある情報を素早く理解し解析結果を即座に共有することを可能にします。

ホワイトペーパーの構成

まず、Hadoop アプリケーションの一般的な構造 として、Mapper、Reducer、Driverクラスの関係について説明し、その後チュートリアルとして 1) 総和 2) 線形回帰 3) アソシエーションルール発見のための Apriori を例にとって具体的なアプリケーションの作成方法を説明しています。ほぼ自明な総和の例から始まって、企業が販売戦略を立てるための実用的なマーケットバスケット分析まで、JMSLを活用しつつMapReduceアプリケーションの作成の仕方を学べるようになっています。

例えば和を求める例のReducerは以下のように簡単に書けます。

public static class SummaryReducer extends
        Reducer<Text, DoubleWritable, Text, DoubleWritable> {
    
    Text out = new Text();
    DoubleWritable result = new DoubleWritable();

    @Override
    public void reduce(Text key, Iterable<DoubleWritable> values,
             Context context) throws IOException, InterruptedException {
        // JMSL
        Summary summary = new Summary();
        for (DoubleWritable val : values) {
            // JMSL
            summary.update(val.get());
        }
        result.set(summary.getMean());
    }
}

一方、Aprioriを求めるアプリケーションはそれに比べると多少複雑で、サンプルの簡単な例でも以下のように4つのMapReduceペアを作成する過程があり、それぞれにReducerが存在します。

f:id:RWSJapan:20150820183429j:plain

  1. トランザクション区分で頻出アイテムセットを見つけます。データの最初の走査で、MapReduce ペア を設定し使用します。
  2. すべての頻出アイテムセットの集合を見つけます。このステップでは、ステップ 1 での別々のタスク の出力を読み込みますが、トランザクションの再読み込みは必要ありません。このステップは、2 番目 の MapReduce ペアで完了します。
  3. 集合のすべてのアイテムセットに対して、各トランザクションセットで発生する回数をカウントします。 これは 2 番目のトランザクションデータセットの走査で必要です。ステップ 3 の出力は、全データに 対して頻出なアイテムセットのすべての集合であり、つまり候補となる頻出アイテムセットである可能性があります。このステップは、ステップ 2 からの中間出力を読み込む Mapper によって実行されま す。このステップで Mapper は、アイテムセットとトータルカウントを書き出します。
  4. 候補アイテムセットの集合に対して、最小サポート のしきい値を満たすアイテムセットをフィルタし ます。このステップは、ステップ 1 と同じ MapReduce ペアで実行されます。

ぜひホワイトペーパーを参照して具体的なコード例をご覧ください。JMSL数値計算ライブラリを用いるとJavaによるMapReduceアプリケーションを容易に構築することができ、高度な分析の醍醐味を味わうことができます。

お問い合わせ

ローグウェーブソフトウェアの製品にご興味をお持ちの方はお気軽にご連絡ください。 http://roguewave.jp/forms/request.htmlroguewave.jp

ローグウェーブ セールスエンジニア 柄澤(からさわ)