Hadoopはバッチ処理の課題への解決策となり得るか
企業のあらゆる領域にITが浸透し、それに伴って会計や在庫管理、あるいは販売管理などシステムから出力されるデータ量も拡大し続けています。このデータ量の増大によって、多くの企業において新たな課題となりつつあるのがバッチ処理の遅延です。
たとえば、毎日の売上を集計するために、販売管理システムからデータを吸い上げてバッチ処理を行うといった場合、サーバリソースに余裕がある夜間にバッチを走らせ、翌朝担当者が出社する頃には集計データが出力されているという形が一般的でしょう。しかし、ITが事業のさまざまな領域で活用されるようになったことから、バッチ処理すべきデータ量は増大し続けています。これにより、バッチ処理が時間内に終わらない、「突き抜け」と呼ばれる事態に頭を悩ませる企業が増えているのです。
突き抜けが発生すると、さまざまな領域に大きな影響が及ぶ恐れがあります。たとえば日中はオンライン処理、夜間はバッチ処理とシステムを使い分けている場合、バッチ処理が終わらなければオンライン処理が始められず、日常業務にシステムが使えないという事態に陥ります。また、バッチ処理で得られた集計結果をもとに翌日の業務を行う場合、業務を開始できる時間が遅れることになるでしょう。
こうした問題への解決策としては、まずハードウェアの高速化が考えられます。大量のデータでも高速に処理できるハードウェアを利用することにより、データの増加に対処するという方法です。しかし、高性能なハードウェアの導入には膨大なコストが必要となるため、容易には決断できません。そこで現在注目されているのが、分散処理基盤である「Hadoop」のバッチ処理への適用です。
ソフトバンクモバイルがHadoopを検討した理由
ソフトバンクモバイルにおいても、日々大量のバッチ処理が行われており、将来的なデータ量の増加にどのように対応していくべきかが大きな課題となっていました。そこで、同社においてもHadoopを使ったバッチ処理の検証が進められています。
ソフトバンクモバイルの山中健氏(写真1)は、Hadoopを検討することになった背景を次のように説明します。
「現在は大手ベンダのRDBを基盤とする環境でバッチ処理を行っていますが、データ量の増大といった要因により、バッチウィンドウの中で処理が終わらなくなってきています。この課題を解決するために、既存の環境をスケールさせるという方向も考えられますが、コスト負担が大きくなってしまいます。そこで、処理時間を短縮しつつコスト面でもメリットを出していくにはどうすればいいかを考えたとき、新しい分散処理技術を採り入れていくべきではないかということでHadoopに注目したわけです(山中氏)」
なおソフトバンクモバイルでは、オラクルが提供するデータベースと高速なハードウェアを組み合わせたアプライアンス製品である「Oracle Exadata」も活用しています。山中氏は、領域に応じてExadataとHadoopを使い分ける戦略について話しました。
「Exadataを適用する領域は確かに拡大していますが、何にでもExadataを使うわけにはいきません。そこで、領域に応じてHadoopと使い分けることを考えています。現在はHadoopの検証を進め、『この領域にはHadoopを適用しましょう』という判断ができるように準備を進めている段階です(山中氏)」
自分たちで汗をかいて技術を習得することが大切
山中氏のチームにおいて、現在検証を進めているHadoopを本格的に意識するようになったのは、2010年の春に行われたある研修会に荻林裕憲氏(写真2)が参加したのがきっかけだったようです。
「研修会に参加して感じたのは、データベースがあってアプリケーションサーバがあってという、これまでの自分たちの環境とは完全にアーキテクチャの考え方が違うんだなということです。もちろん、従来の環境のほうが強い部分もありますが、一方で既存のアーキテクチャでは解決が難しい問題に対処できるようになる、そういう可能性を感じました(荻林氏)」
研修会に参加したあと、さっそく社内に検証環境を作り、自分たちで試すことを少しずつ始めます(図1)。さらに、2012年には実際に開発に取り組んだり、特定のユースケースにおいてHadoopでのバッチ処理を試すといったことも行われるようになりました。
とはいえ、とくにミッションクリティカルな領域では、新しい技術の採用に慎重にならざるを得ないでしょう。たとえば、バッチ処理中にトラブルが発生してその問題の解決に時間がかかれば、業務に大きな影響が生じてしまいます。さらに山中氏は、オープンソース特有の課題もあると話しつつ、Hadoopに大きな期待を寄せます。
「オープンソースだと、他社の事例で『こういったトラブルが起こる』ということはわかっても、それに対応するためには、結局自分たちでソースコードを見ながら1つずつ問題を解決していく必要があるわけです。さらに、外部のベンダにその対応を委託すると、その解決に日単位で時間がかかってしまうでしょう。そういうところも含めて、Hadoopをバッチ処理に使うかどうかを判断する必要があると思います(山中氏)」
このように課題を挙げる山中氏ですが、一方で、現在多くのベンダから提供されているバッチ処理の短縮を目的としたソリューションを使って済ませるのではなく、Hadoopを使ったバッチ処理にこだわりを見せます。
「Hadoopを使ったバッチ処理の事例は増えていますし、それによって多くの情報が流通するようになっているので、まずはHadoopでやってみようというところです。もう1つ大切だと感じているのは『自分で汗をかく』ことなんです。まず自分たちで汗をかいて使ってみて、そのスキルを習得して実際に使っていこうと。その中で自分たちの業務に合っているかどうかを判断し、合っていれば使っていく。そこを外部に任せてしまうとブラックボックス化しかねないので、まずは自分たちでやることが大切だと考えています(山中氏)」
外部に任せっきりにしたことでコントロールを失い、いわゆる「ベンダロックイン」の状態に陥ってしまうケースは少なくないでしょう。それを避けるためには、自分たちで汗をかく必要があるというわけです。
Hadoopの本格導入に向けて解決するべき課題
このようにノウハウを蓄積し、Hadoopが使えると判断したとき、どのような領域に適用しようと考えているのでしょうか。
「大きなところでは、大量データを扱う基幹システムです。確かにミッションクリティカルな領域ですが、そこのバッチ処理に一番時間がかかっているんです。スマートフォンが普及したことによってパケット量が増大し続けており、それが処理時間にも大きく影響しています。従来のように高速なハードウェアに移行するというスケールアップ型の考え方では、対応に時間がかかるでしょう。そこで、計算量が急増しても迅速に対応できるよう、スケールアウトで処理能力を逐次高められるHadoopを基幹システムのバッチ処理に使いたいと思っているのです(山中氏)」
同社における検証では、既存環境からHadoopに移行することで十数倍速くなるということで、十分に時間をかけて検証する価値はあると山中氏と荻林氏は声をそろえます。ただ実際に本番環境に適用するには、乗り越えなければならないハードルがいくつも存在すると指摘しました。
「実際に置き換えることを考えたとき、社内のエンジニアにノウハウが蓄積されていないと、何かあったときに対応できません。そのため、本番運用するのであれば会社全体として、あるいは私たちの部門全体として技術力をつけていく必要があります。さらに検証で問題がなくても、開発から運用、インフラの提供まで全部うまく回るのかと言われると、そこはまだ答えが出し切れていない状態です。そういったことを考えていくと、Hadoopの本格的な利用にはまだちょっと時間がかかると考えています(山中氏)」
従来拾い切れなかったデータをオープンソースで有効な資源に
山中氏や荻林氏は、Hadoop以外のオープンソースも注目しているようです。具体的なプロダクトとしては、分散KVSである「MongoDB」や「Cassandra」といった名前が挙がりました。
「社内で拾い切れていないデータというのはたくさんあり、それをMongoDBやCassandraといったNoSQLに蓄え、社内に見せられる環境を整えていくということをトライアルで行っています。やはりペタバイト級のデータになると、既存のRDBMSでは扱い切れないですよね。ただ、そうしたログを蓄積して分析することによって、新しい気づきが得られたり、これまでできなかったことができるようになる可能性がある。そうしたところをオープンソースで実現できないかというわけです(山中氏)」
ログの収集には、やはりオープンソースである「fluentd」を活用しており、荻林氏は「Fluentd Casual Talks #2」というイベントで発表も行うなど、コミュニティ活動にも参加しています(図2)。その荻林氏にオープンソースの魅力を伺うと「中が見られること」と即答しました。
「いわゆるプロプラエタリなソフトウェアは中を覗くことができず、そこがフラストレーションになっていたんですね。しかしオープンソースであれば、ソースコードを自分の目で確かめることができる。その点はオープンソースのいいところだと感じています。最終的にわからない部分があったとしても、少なくとも調べるための手段が提供されているわけですから(荻林氏)」
このようにオープンソースや新たな技術にも積極的に取り組むソフトバンクモバイルでは、現在IT技術者を積極的に募集しています。そこで、山中氏と荻林氏にどういった人材を求めているのかを伺いました。
「まず、スキルを習得することに貪欲で、やる気がある人ですね。教えられて何かをするというのではなく、必要なスキル、自分が身につけたいスキルがあれば積極的に自分で動くという人が私たちのチームには合っているのかなと思います(山中氏)」
「やっぱり仕事を楽しめる人がいいのかなと思います。たとえば『これがもうちょっとよくなるとうれしいよね』という題材があって、その解決策を普段から探して、見つかったら自分で動かしてみて、『これでできますよ』って人に見せて、フィードバックがあれば対応する。そういった一連の流れを楽しんでできる人は向いているんじゃないでしょうか(荻林氏)」
ちなみに山中氏のチームは、エンジニアとしてチャレンジできる空気を大切にしていると言います。エンジニアとしてスキルを伸ばしていきたい、オープンソースを活用したシステム構築に携わってみたいと考えている人には、非常にやりがいのある職場だと言えるでしょう。