エンタープライズ×Hadoop
分散処理技術を活用することにより、大容量データを効率的かつ低コストで処理できるといったメリットから、Hadoopはエンタープライズ用途においても注目を集めています。またHadoopの導入支援やシステム構築など、多くのベンダーがHadoopを組み合わせたソリューションの提供を行い始めています。
日立製作所はこのHadoopも含めてビッグデータに取り組むベンダーの一つです。ハードウェアや要素技術が進化したことで、処理時間やコストなどの問題により今までは諦めていたデータから、新たな知見を得てビジネス活用できる機会が広がっています。そのため、データ量が膨大になっても安定した処理を実現するために、分散処理技術などを利用したソリューションの構築を進めています。
具体的には、インメモリ処理や差分計算処理などの技術を組み込んだ「ストリームデータ処理」 、そしてバッチ処理の並列化によって時間短縮を実現する「並列分散処理」 、あるいは東京大学と共同で開発を進めている「超高速データベースエンジン」などが挙げられます。こうした取り組みの一つとして、Hadoopを活用したサービス開発や自社ソリューションとの連携が進められているわけです。
アセスメントサービスでHadoopもサポート
日立製作所では「大量データ活用ソリューション」として、Hadoopやミドルウェアの紹介、課題ヒアリング、適用提案などを行っているほか、分析計画の策定やコンサルティング、分析方式検証支援などを提供するアセスメントサービスを実施しています。Hadoop MapReduce 環境のサポートもこのサービス内に含まれます。
アセスメントサービス
この中で特に注目したいのがアセスメントサービスです。いわゆるビッグデータをビジネスに活用したいと考えても、その分散処理基盤の構築や分析モデルの設計は容易ではありません。もちろん開発や既存環境からの移行、あるいは性能評価などへの対応も求められるほか、当然分析処理のノウハウも蓄積する必要があります。Hadoopの導入を検討している企業にとっては、力強い助っ人だと言えるのではないでしょうか(表1 ) 。
表1 大量データ分散処理アセスメントサービス
アセスメントサービス 概要
分析計画策定コンサルティング ✔ 大量データ分散処理システムの計画立案を支援
✔ 日立の豊富なノウハウを用いて分析モデルを提案
技術研修 ✔ Hadoopや日立オープンミドルウェアによる大量データ分析処理技術を習得
✔ 2日間の座学・マシン演習(月1回開催)
分析方法検証支援(※ ) ✔ 日立の分析処理ノウハウを提供
✔ 適切な基盤や処理方式を決定
基盤導入検証支援(※ ) ✔ 開発・移行・性能評価などの技術支援
✔ 効率良く検証を推進
※ 環境構築済みのクラウド環境により、すぐに検証に着手できる
統合運用環境
日立製作所の既存ソリューションとの連携としては、JP1 によるHadoopの統合運用管理が挙げられます。JP1は統合型のシステム運用管理ツールであり、ユーザ管理やジョブ管理、あるいはイベントの収集と管理など、さまざまな管理機能を統合的に提供しています。日立製作所では、このJP1をHadoopの運用に適用することを可能にしました。
BIツール
さらに、BI(Business Intelligence)プラットフォームのQlikView とHadoopを連携させることも可能です。QlikViewはクリックテック・ジャパン( 株) が提供するインメモリ型BIプラットフォームであり、日立INSソフトウェア( 株) が国内の販売代理店です。
BIツール[1] を利用した分析において、課題となるのは処理時間です。データを素早く集計できれば、BIツールを活用した、さまざまな視点での分析情報を社内のエンドユーザに提供できます。
QlikViewであれば、すべての処理をメモリ上で行うため、ボトルネックとなりがちなディスクへのアクセスを排し、高速なレスポンスを実現します。
ただし分析するデータをメモリ上に展開するため、データ量に合わせてメインメモリを搭載する必要がありますが、サーバに搭載できるメモリ量には限りがあります。非構造データなどの、より高解像度で多様なデータを取得する機会が増えている現状において、メモリに乗り切らないビッグデータを分析する場合も増えており、そのようなケースでは、複数のサーバへのデータ分散や階層化させて使うといった工夫が必要となります。
しかしHadoopを組み合わせれば、事前に不要データの排除や非構造データの構造化、分析データとして意味あるデータへの集計処理を実行しておくことでデータサイズを最適化し、限られたメモリの中でもQlikViewを使って解析できます。
PaaSの提供
もう一つ注目したいのが、大量データ分散処理プラットフォーム提供サービスです。これはHadoop対応の関連製品や同社の大量データ分散処理に必要な各種ソフトウェアをPaaS(Platform as a Service)として提供するというもの。
いくらHadoopがオープンソースとして公開されているといっても、実際に環境を整えるには相応のコスト負担が必要になります。しかしPaaSとして提供されているこの大量データ分散処理プラットフォーム提供サービスを利用すれば、自前で環境を構築するよりもはるかに安価にHadoop環境を利用できるというわけです。
サーバの提供
同社のブレードサーバである「HA8000-bd/BD10」に対し、Hadoop環境のインストールや設定作業を代行する「HA8000-bd/BD10 ユーザ環境設定サービス」も用意されています。Hadoopにより複数台のサーバを使って分散処理を行う場合、それぞれのサーバごとに環境を構築する必要がありますが、その負担はけっして小さくありません。しかしこのサービスを利用すれば、Hadoop環境構築の手間を大幅に省くことが可能になるでしょう。
Hadoop CommonとHadoop MapReduce、そしてHDFS(Hadoop Distributed File System)についてのサポートサービスも用意されており、こちらは対象ソフトウェアの機能や使い方についてのQ&Aを提供するほか、問題発生時の回避策の調査や確認といったサービスを提供しています。
Hadoopにおける現状の弱点とは?
既存バッチ処理を並列分散させる
Hadoopのエンタープライズ用途として、大きな期待が寄せられているのはバッチ処理の高速化でしょう。Hadoopを利用し、複数台のサーバを使って分散処理を行うことで、バッチ処理に要する時間を短縮しようというわけです。
実はこうしたバッチ処理の高速化を実現するソリューションとして、日立製作所では「uCosminexus Grid Processing Server(以下グリッドバッチ) 」をリリースしています。これは既存バッチ処理を並列分散させるための製品であり、具体的には処理対象となるデータを複数のマシンに並列分散することで、バッチ処理のスケールアウトを可能にするというものです(図1 ) 。
図1 uCosminexus Grid Processing Server
既存環境を再利用する
グリッドバッチは、まだまだ利用されることが多いCOBOLアプリケーションに対応しています。特に金融業などにおいて、COBOLで記述されたプログラムを利用してバッチ処理を行うケースは少なくありません。Hadoopをはじめとする最新のテクノロジをフルに活用することを考えると、Javaなど他言語への移植を検討すべきでしょう。
ただ当然そこにはコストが発生するうえ、基幹系など重要な業務で使われている場合であれば、改修によって新たなリスクも生じるため、容易にJavaなどへ移行できないというケースが少なくありません。こうした環境においても、グリッドバッチであれば分散処理によるバッチの高速化を実現できるというわけです。
この両者の違いについて、日立製作所の飯田恒雄氏は次のように説明します。
「Hadoopとグリッドバッチ、それぞれ得意とする領域が違うと考えていて、厳密な処理が必要になるケースではグリッドバッチを提案しています。たとえば金融業のバッチでは、1レコードごとに正確に計算を行い、結果を正しく出力しなければならないような処理が求められます。そういった厳密さが求められる場面では、現状のHadoopにはまだ不足している点があると考えています。一方Hadoopが向いている用途としては、たとえば膨大なデータを解析し、内容の傾向を見るといった用途があるでしょう」( 図2 )
図2 グリッドバッチとHadoopの関係
調整次第で処理時間を半分に
ここからは、日立製作所で実際に行われたHadoopの性能検証の結果を紹介します。検索処理をチューニングによってどれだけ高速化できるかを調べたとのこと。この検証で使われたのは、同社のハードウェアである「HA8000-bd/BD10」( ※2 )です。
処理内容は100バイト/レコードのログデータに対し、15バイトの文字列キーワードを含むレコードを全件検索して抽出するというもので、これに要した時間を計測しています。結果から見ると、初期環境では675秒もかかっていましたが、チューニングによって305秒まで短縮できています。
[2] スペックはCPUがCore i7-610E(2コア/2.53GHz) 、メモリは8GBを搭載し、160GBの内蔵HDDを利用しています。各々のノードの接続に利用されているのは1000BASE-Tです。
Hadoopチューニング内容
チューニング内容は、1ノードあたりのMapタスクの上限をCPUのコア数に合わせて「2」から「4」( 物理コアは2コアだが、HyperThreadingが有効なため2コア×2)に変更したほか、タスク再利用の有効、そしてI/O時のバッファサイズとHDFSのブロックサイズの調整です。まずこのチューニングによって372秒まで短縮、さらにOS をRed Hat Enterprise Linux 5.4から同6.1にアップグレードや、ファイルシステムのext3 からext4 への変更、JDK(Java Development Kit)の変更によって最終的に305 秒まで短縮したという結果が得られたとのこと。
もしHadoopを使っていて、十分な性能が得られていないのではないかと考えているのであれば、参考にしてみてはいかがでしょうか。このテストの意義について、日立製作所の中島雅彦氏は次のように説明します。
「業務でHadoopを使う場合、やはり重要になるのは異常系の処理や運用です。つまり、トラブルが発生した際にどうするか。正常系はちゃんと動くのです。ただ業務システムに適用することを考えた場合、何かが起きたときにどう検知して、どう対処するかという運用も考慮したシステム設計をしなければいけません。お客様に安定してシステムを利用していただくために、日立製作所では本番環境を想定した事前検証としてこうしたテストを行い、ノウハウの蓄積を進めています」
Hadoopを導入するために
ミッションクリティカルなシステムはもちろん、業務に何らかの形で関わるシステムであれば、そのトラブルが何らかの形で事業に影響します。その影響をどうやって最小限にとどめるのか、また障害の発生を極力抑えるにはどういった構成にすべきかなど、検討すべき事項は少なくないでしょう。
Hadoopの本格導入にあたっては、こうしたノウハウを十分に蓄積できるか、あるいはHadoopに精通したエンジニアの支援を受けられるかがポイントになりそうです。
参考リンク
HA8000-bd/BD10 X2販売開始