Hadoopをどう基幹バッチに適用したか ~本邦初の導入事例に見る構築の実際~
ノーチラス・テクノロジーズ 代表取締役副社長 神林 飛志 氏
ノーチラス・テクノロジーズ 代表取締役副社長 神林 飛志 氏

【講演概要】分散処理ミドルウエア「Hadoop」によって性能を劇的に向上させた基幹システムが、今年5月に本格稼働しました。基幹システムのバッチ処理にHadoopを適用したのは、世界で初めてだと思います。福岡を中心にスーパーマーケットを展開する「西鉄ストア」が導入しました。その導入を支援した我々が、どのようにシステムを設計、実装、テストしたのか、発生した問題をどう解決したのかを解説します。構築に利用したオープンソースフレームワーク「Asakusa」の効果についても紹介します。

■ 9月16日(金)15:05-15:45 B会場
タイムテーブル・参加登録はこちら

講師へのインタビュー

分散処理ミドルウエア「Hadoop」を基幹バッチ処理に適用するメリットは何でしょうか?

 まず、処理時間が劇的に短くなることです。今回、紹介する西鉄ストアの導入事例では、あるバッチ処理が、これまでの4時間から20分に短縮しました。

 バッチ処理は大きく分けて、メインフレームで実行させているものと、RDBMSをベースにオープン系のシステムで実行させているものがあります。メインフレームは処理の多重度を上げやすいという特徴があり、それが理由でオープン系に移せないままになっているバッチ処理がたくさんあります。そのようなバッチ処理は、分散処理に基づくHadoopに移行することで大幅に性能を向上できます。

 RDBMSで実行しているバッチ処理は、本来ならSQLをチューニングすれば、性能を引き上げることが可能です。しかし一定規模以上のシステムで、そのようなチューニングスキルの高いエンジニアを大量には投入できません。

 我々はHadoop上で、平均的なスキルを持ったエンジニアが容易にバッチ処理を開発できるHadoop用フレームワーク「Asakusa」を開発しました。西鉄ストアのシステムでもこれを採用し、開発効率を大幅に向上させるとともに、劇的に性能を改善することができました。

西鉄ストアが導入したシステムについて教えてください。

 基幹バッチ処理にHadoopを適用したシステムが2011年5月に本格稼働しました。Hadoopの基幹バッチへの適用は、世界で恐らく初めてでしょう。これによって、仕入れや買掛金の確定、請求書の突き合わせなど、これまで月次だったものを日次で処理できるようになりました。

 早ければ8月中にも、次のサブシステムが稼働します。売り上げや売掛金を日次で集計するものです。このサブシステムによって、単品レベルでの売り上げや利益、在庫の状況を日次で確認できるようになります。これまで月次でしか確認できなかったデータが日次で見られるようになり、いま何が売れていて、どれだけの利益が出ているのかが可視化されます。

導入後にトラブルは発生していませんか。

 バッチ処理が途中で異常終了したことはありません。ただし、現在、8ノード(サーバー)でHadoopを動かしています(注1)が、そのうちのノードが故障したことがあります。それに気付いたのは、バッチ処理が正常に終了したあと、ログを確認してみたときでした。故障したサーバー上で動いていたプログラムが異常動作をしていました。

 ところがHadoopは、異常なプログラムの動作を自動的に検知し、正常な別のノードで再実行する機能を持っています。その機能によって、バッチ処理全体としては問題なく処理が終わっていました。

 今回の講演では、このシステムを実際にどのように設計、開発、テストしたのかを解説します。基幹バッチにHadoopを適用する際の注意点なども紹介します。実際のシステム画面なども紹介できる予定ですで、ご期待ください。

注1:実際には、8ノードのHadoopクラスターを二つ動かしており、本番系が故障すると待機系にフェールオーバーする。合計16台のサーバーを利用している。今後データ量の増大に伴いスケールアウトさせる予定。
(聞き手は、安東 一真=日経Linux

タイムテーブル・参加登録はこちら