DataSpiderデザインパターンβ 第4回 設計パターン 「Hadoop HDFS I/O Pattern」

Avatar
dstn

DataSpiderデザインパターンβ 第4回 設計パターン 「Hadoop HDFS I/O Pattern」


 

近年、多様な分野でビッグデータの活用が本格化しつつあります。ビッグデータを分析・解析・集計するための並列分散処理のアーキテクチャはさまざまなもの存在しますが、その中でも注目を集めているのがASF(Apache Software Foundation)のオープンソース・プロジェクト、Hadoopです。分散ファイルシステム「HDFS」をデータリソースとして、分散処理プログラミング・モデル「MapReduce」によって分析・集計などの処理を行うこのフレームワーク。日本においてもYahoo! Japanや楽天などの大企業での導入事例が多数あり、ビッグデータ活用の目玉となる技術です。今回は、DataSpider Servista 3.1でリリースされたアダプタ「DataSpider アダプタ for Apache™ Hadoop®」(以下Hadoop HDFSアダプタ)を利用したHadoopとの連携パターンを紹介します。

1 課題


Hadoopを使用した大規模データ処理システムを設計する際に課題となるのが、「処理前にどのようにHDFSにファイルを置くか」そして「処理後にどのようにHDFSからファイルを取得するか」というHDFSに対するデータの入出力である。HadoopはHDFS上にデータが存在することが前提となるフレームワークであるため、Hadoopによる大容量データ処理の恩恵を享受するためにはまずHDFSへのデータの入出力という課題をクリアすることが必要となる。

当然のことながらHDFSに対する入出力データ(特に入力データ)は膨大なデータ量になるため、手動でデータを配置することは現実的ではなく、システムによって自動化することになる。その際は通常は、HDFSのAPI(Java、RESTなど)を使用して手組でシステムを作成することになるが、その場合以下のような問題がある。
・データの入力元となるシステムにはさまざまな種類があることが考えられる(例えばセールスフォースなどのSFA上のデータ、RDB内のレコード、メインフレーム内のファイルなど)。それぞれの入力元に対して独自のプログラムを作成する必要がある
・処理されたデータをどこに出力しどのように活用するかについても様々な選択肢が考えられる。入力元と同様に、それぞれ独自に実装する必要がある
・入出力を手組によりシステム化できたとしても、入力元・出力元の種類・仕様が変更された場合、併せてHDFSに対する入出力プログラムの変更の必要があり、メンテナンス負荷が高い

2 解決方法


DataSpider ServistaのHadoop HDFSアダプタを使用して、HDFSに対する入出力処理を自動化する。

3 説明


DataSpider ServistaのHadoop HDFSアダプタは、HDFSに対するファイルのダウンロード/アップロード、ファイル/ディレクトリ削除、ファイル/ディレクトリ一覧取得などのオペレーションが用意されており、簡単にDataSpiderファイルシステム上のファイルとHDFS上のファイルを連携させることが可能である。さらにHDFS上のXMLファイル、CSVファイルの読み取り/書き込みを直接行うこともでき、これらのオペレーションとDataSpider Servistaのトリガー等を組み合わせてHDFSとのデータ連携処理を自動化するシステムを容易に作ることができる。

png;base64a0a5a9a1796276be

▲Hadoop HDFSアダプタを使用したHadoopとの連携イメージ図

4 メリット


・HDFSのAPI等の知識がなくても、HDFSとのファイル・データ連携システムを構築することができる
・DataSpider Servistaの多数のアダプタを使用して、他のアプリケーションやシステムとHDFSとののデータ・ファイル連携を簡単に作ることが可能
・ファイルトリガーやスケジュールトリガーなどのDataSpider Servistaのトリガーを使用して、HDFSの入出力を自動化することができる
例:

- スケジュールトリガーを使用して毎日夜間にRDBからHDFSにCSVファイルを作成する
- ファイルトリガーを使用して、ファイルが作成されたらHDFS上に配置する
- FTPトリガーを使用して、FTPでファイルがアップロードされたらHDFS上に移動する


・CSVファイル、XMLファイルの書き込み・読み取りを使用した場合、ローカルにファイルを一旦作成しなくてもデータをそのままHDFS上に書き込み・読み取りすることが可能(例:RDBのデータをそのままHDFSにCSVとして書き込む、など)。これにより処理を簡略化できると共にパフォーマンスが向上するなどのメリットがある

5 注意点


・DataSpider Servista 3.1以降で使用可能
・Hadoop HDFSアダプタを使用するには、Hadoopの設定でWebHDFS機能を有効にする必要がある。
[参考リンク]
・HDFS Configuration Options (dfs.webhdfs.enabledプロパティ)
http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/WebHDFS.html#HDFS_Configuration_Options

6 関連事項


・DataSpider Servista 3.1でリリースされた「スマートコンパイラ」機能によって、大規模データを高速・低メモリ負荷で処理するスクリプトを簡単に作成することができるようになった。この機能とHadoop HDFSアダプタを組み合わせることにより、ビッグデータに対してDataSpider Servistaを活用することがより容易になった。
スマートコンパイラについては開発を担当した弊社代表取締役社長、小野和俊の以下のインタビューによって解説されている。
https://dstn.zendesk.com/hc/ja/articles/220074328
また、スマートコンパイラに関するデザインパターンは別稿で紹介する予定である。

・HadoopのMapReduce処理をより簡単に記述することのできるフレームワークはさまざま存在する。例としては、株式会社ノーチラス・テクノロジーズのAsakusa Frameworkは大規模基幹バッチシステムに必要な開発環境・実行環境・運用環境を備えており、Hadoopを意識せずにMapReduce処理を記述することが可能だ。Asakusa Frameworkは本デザインパターンで紹介したHadoop HDFSアダプタとの連携実証も行っている。
これらのフレームワークとHadoop HDFSアダプタにより、より容易にHadoopを使用したビッグデータ処理を導入することができる。
[参考リンク]
・Asakusa FrameworkとDataSpider Servista連携プレスリリース
http://www.appresso.com/news/2012/07/pr20120703.html 

コメント

ログインしてコメントを残してください。

Powered by Zendesk