DataSpiderデザインパターンβ 第5回 スクリプトパターン 「Smart Compiler」
近年、データの巨大化は留まるところを知りません。"ビッグデータ"という概念の普及もあり、飛躍的にシステムが扱うデータの大容量化は進んでいると言えるでしょう。海外を見ても、例えば中国では人口に比例して、日本とは扱うデータの桁が違うと言われています。
そこで今回は、超大容量時代に向けてDataSpider Servista 3.1で搭載された新機能「スマートコンパイラ」を紹介します。
1 課題
大容量データを扱う際に懸念事項となるのは処理速度とメモリである。
すべてメモリ上で処理を行うと高速だが、メモリサイズ以上のデータ量を扱うとメモリが溢れてしまう。(Javaでは、OutOfMemoryErrorが発生する。)
一般的にメモリで扱いきれない大容量のデータはHDDにファイルとして書き出すようにする対策が取られるが、この方法ではファイルへの読み書きが発生するため、今度は処理速度が犠牲になってしまう。
この相反する要素とどう折り合いを付けるか、これが大容量データを扱う際の一番の課題となる。
2 解決方法
DataSpider Servistaの「スマートコンパイラ」を使用して、高速・低メモリ処理が可能なPSPをスクリプトに自動適用する。
3 説明
DataSpider Servista 3.1では、従来からあったPSP(パラレルストリーミング処理)機能をスクリプトに自動で適用する「スマートコンパイラ」機構を導入した。
これまではPSPを使用するために専用のスクリプトを用意する必要があったが、「スマートコンパイラ」では通常のスクリプトの処理を解析し、PSPが使用可能な箇所に自動で適用することにより、システムから最適解を提案する。
これにより、ユーザーが意識せずとも高速・低メモリというPSPの特徴を最大限発揮した処理を構築することができる。
PSPはメモリ消費を抑えながら大容量データを高速に処理する機構であり、読み込み処理、変換処理、書き込み処理という一連の流れをブロック単位で同時に別々のスレッドで処理することにより、高速・低メモリ処理を実現している。
読み込み処理、変換処理、書き込み処理という流れであれば、処理速度は理論上書き込み処理のコストのみである。また、データ容量に従って使用メモリが増加することもないため、メモリ溢れも発生しない。
▲PSPの処理イメージ図
4 メリット
・メモリ消費の抑制
入力データを全てメモリに保持せず、1000件ずつ「読み取り」-「変換」-「書き込み」の処理を行う。そのため、大量のメモリを必要とすることなく大容量のデータを処理することができる。
・超大容量データ処理
入力データを一定容量ずつメモリに保持せず処理するため、データ容量の制限はない。
・パフォーマンスの向上
「読み取り」-「変換」-「書き込み」を順番に処理する場合、CPU資源を有効に使えていない。
PSPを使用することにより、読み取り、変換、書き込みの各処理をマルチスレッドで動作し処理を分散させるため、1つの処理がI/O待ちになっている状態でも、他のスレッドで変換などの処理を並行で行えるようになる。
5 注意点
・スマートコンパイラはDataSpider Servista 3.1以降で使用可能。
・PSPはオペレーション単位で適用可能。
・PSPに対応しているオペレーションとしていないオペレーションがある(詳細は各オペレーションのヘルプに記載)
・スマートコンパイラはデフォルトは有効だが、PSPが適用されているかどうかは非表示になっている。どこの処理がPSP適用されているかどうか確認する場合には、デザイナの [表示]- [PSPデータフローの表示]にチェックを入れる必要がある。
[PSPデータフローの表示]を有効にすると、PSPが適用されている処理のアイコンとフローが点滅する黄色の太線で表現され、通常の処理と区別できるようになっている。
・DataSpider Servista 3.0以前で作成したスクリプトはスマートコンパイラが無効になっている。有効にするためには、マイプロジェクトやデザイナのプロジェクトエクスプローラの右クリックメニュー [PSPデータフローの操作]- [一括で有効にする]から一括変更することができる。
6 関連事項
「スマートコンパイラ」と「Hadoop HDFS I/O Pattern」との組み合わせは、ビッグデータ活用に強い力を発揮する。
詳細については、「 DataSpiderデザインパターンβ 第4回 設計パターン 「Hadoop HDFS I/O Pattern」を参照してほしい。
また、スマートコンパイラについては開発を担当した弊社代表取締役社長、小野和俊の以下のインタビューでも言及されている。使用前にぜひ一読いただきたい。
https://dstn.zendesk.com/hc/ja/articles/220074328