HadoopTimes

ストリーミングアーキテクチャ Apache Kafka とMapR Streams による新しい設計手法
最新動向

Hadoopの基幹システム適用による新たなビジネス価値の創造

近年、企業が取り扱うデータ量は加速度的に増えているのが現状だ。これらの大量データを迅速に処理し、その中に潜む有益な情報から競争優位の戦略転換に活かすことが企業にとって重要なのは言うまでもない。その一方で、大量データを処理するためには相応のIT投資が不可欠である。そこで注目を集め始めたのが、並列分散処理により高速にデータをハンドリング可能な「Hadoop(ハドゥープ)」(以下、Hadoop)だ。桁違いに高速なその処理は、あらゆるコストに直結する。果たして、Hadoopは企業内の大量データ処理を高速かつ信頼性を両立した上で安価に構築する救世主となりうるのか。本記事では初歩的なHadoopの説明から、基幹系システムにHadoopを適用するための考慮事項や方法などをご紹介する。

Hadoopの本質:大量データを分散処理で高速化するHadoop

Hadoop(ハドゥープ)は、米グーグル社が開発した技術が基になっており、Apacheプロジェクトの1つとしてオープンソースで提供されている。
その特徴は、PCサーバーなど安価なサーバーを複数連携させ、大量のデータを並列分散処理できることにある。それらは分散処理システムに必要不可欠であった複雑なプログラム開発を隠蔽する。そして、Hadoopはサーバー台数に比例して性能がスケールする特徴を持つ。つまり、Hadoopとは大量データを簡単かつ安価、高速に処理するための並列分散処理フレームワークであるといえよう。
さて、企業システムにおける大半のトランザクション処理では、CPUやメモリではなく、ディスクI/Oがボトルネックになりやすい。昨今のディスクI/O性能は、CPU処理性能に対して、さほど向上していないのが原因の一つだ。つまり、CPU処理能力を使い切る前にディスクI/Oがボトルネックになり、システム全体のスループットが向上しないのだ。Hadoopは、これを解消するための仕組みである。あらかじめ定義したキーに基づきデータを分散し、ディスクI/Oを分散させるのだ。逆説的ではあるが、データとそれにともなう処理を分散させることによりCPUリソースを使い切るためハードウェア資源の有効活用がHadoopを用いれば可能となる。

Hadoopはそもそもデータベースではないため、RDBMSでは必須のトランザクション分離レベルやACIDなどは、考慮していないが、それ故に劇的な演算性能を獲得している。
rdbms_to_hadoop

Hadoopの技術概要

大量データを並列分散処理するためにHadoopは、大きく2つの技術要素から構成される。データ保管場所であるファイルシステムの「HDFS(Hadoop Distributed File System)」とデータ処理フレームワークの「Map Reduce」だ。

HDFS (Hadoop Distributed File System)

HDFSは、分散処理することを前提に設計された分散ファイルシステムである。データをデータブロックとして定量で断片化させ、Hadoopクラスターを構成する複数サーバー(DataNode)が保有するローカルディスクに書き込むのだ。Hadoopクラスターの中にはNameNodeと呼ぶ単一のマスターサーバーがあり、データブロックの格納先情報を一元管理する構造だ。Hadoopでは、耐障害性を高めるため、各データブロックをDataNodeに書き込む際、そのコピーが複数に分散保存されるようになっている。これらは、障害を自動検知し自立的に修正が行われるので運用を損なうことはない。

MapReduce

MapReduceは、HDFSと連携して機能するデータ処理フレームワークである。Hadoopでは、Map処理とReduce処理の2段階でデータ処理を行う。
Map処理では、元データを分解、必要な情報を抽出、有用な形へと変換して中間ファイルを作成する役割を果たす。Reduce処理では、作成された中間ファイルを集計し最終的なデータを作成する。それぞれの動作は、マスターサーバーが全体を制御し、処理自体は各サーバーで実行される。各処理が独立性を保った形で構成されるため並列分散処理に向くようなアーキテクチャになっているのが特徴だ。
mapreduce_image

Hadoopの代表的な適用領域

それでは企業のHadoop適用領域は、どのようなところにあるのだろうか。まずは、Hadoopを導入する国内企業の公開事例をいくつかご紹介する。
ヤフーは、2008年よりHadoopの導入を開始し、今ではHadoop導入促進のための全社横断的な組織も存在するほどの企業だ。ヤフーがHadoopを使用する主な用途はデータマイニングである。サイトコンテンツの閲覧履歴を分析し、お勧め情報を表示させる「リコメンデーション」、地図検索におけるランキング表示、行動ターゲティング広告のためのデータ解析、システムログ解析など、Hadoop利用は多岐にわたる。地図データのログの集計で、かつて6時間以上かかっていた処理が約5分で終わるということが報告されている。
クックパッドは、月間1000万人近いユーザーが毎日の献立を検索する料理レシピサイトを運営している。その検索結果を利用し、地域別、週別、月別で閲覧可能な「たべみる」というサービスを提供している。いわば大量のアクセスログからの分析を可能とするビジネスインテリジェンス的な使い方をしている。
楽天では、行動ターゲティング広告やユニークユーザーの分析などの解析処理に要していた約26時間のバッチ処理を、Hadoopを利用することで4時間半まで短縮していることが報告されている。

これらの公開事例より、膨大なデータを保有する多くのインターネット系企業がHadoopを利用していることがわかる。その適用業務は、大量データの分析結果から経営などの意思決定に活用する手法「ビジネスインテリジェンス(BI)」や大量ログデータから情報を導き出す「データマイニング」などの処理に利用されているのだ。それではその恩恵を授かるのはインターネット系企業だけなのだろうか、という疑問を抱くと思う。実は、金融や通信、製造業などの一般企業においても、Hadoopの利用は一般化されつつあるのだ。たとえば、三菱UFJインフォメーションテクノロジー社は、顧客向けの大量明細データを、Hadoopを利用してデータ処理するための性能検証などに着手することを発表している。

このような状況の中、各企業では基幹系バッチ処理をHadoopで実装するためのさまざま取組みを実施している。Hadoopを基幹系システムに適用させるためのフレームワークを活用し、各種サービスを提供している。Hadoopの一般企業への適用は、実験段階から実用段階に入ったのだ。

基幹バッチ処理こそ並列分散処理で実現すべき

基幹システムにおいては、Hadoop をどのような領域で利用するのが効果的なのだろうか。Hadoopでは、処理の並列性を確保することが重要であることは言うまでもない。オンライントランザクションといった並列処理が困難な処理よりも、バッチ処理といった並列可能なものの方がHadoop による高速化を期待できると言われている。多くの企業では一般的に、夜間に数時間~8時間かけてバッチ処理を行う。これらの時間をHadoopにより数十分というレベルに短縮させることが出来るのであれば、そのビジネス上の効果は計り知れない。

Hadoopの基幹システム適用の課題

Hadoop を基幹システムに適用する際に問題や考慮すべきことなどはあるのだろうか。ログ解析やビジネスインテリジェンスなどへの適用が進んでいるHadoop だが、これらは、極論を言うと多少のデータ損失や若干の計算違いが発生しても問題ない。全体のデータに対して「これこれの傾向がある」「これこれの仮説が成り立ちそうだ」といった結論を導くことが目的であり、多少の誤差はこれらの結論にそれほど影響がないからである。それに対して基幹バッチ処理は、少しのデータ取りこぼしが企業システム全体に影響し、社会的信用を失落させるだけでなく、企業存続をも危ぶむことになりかねない。Hadoop がビジネスの現場で使えるのかという疑問を抱いているお客様が多いなかで、MapRなどの企業が、それらを解決するためのノウハウの蓄積からソフトウェアの提供、ハードウェアの最適化、運用面での支援などを実施している。企業の基幹バッチシステムにHadoop を適用する際の課題をいくつかご紹介する。

Hadoopでは安価なPCサーバーを並列化しパフォーマンスを向上させることが唱われているが、実質的な問題としてマシンが増加することにより監視対象が増加し、運用管理の煩雑化が欠点となる。企業の情報システム部門にとって運用管理コストの増大が問題となるのは言うまでもない。

また、パブリッククラウド環境であれば並列化されたマシン環境は手に入りやすい。しかし、基幹系システムはオンプレミスやプライベートクラウド環境で実現する企業が大多数である。その場合に果たしてPCサーバーをスケールアウトさせることが得策なのかという疑問が生じる。基幹バッチ処理で扱うデータは、たいていは数百ギガバイトから数テラバイト単位の範囲で収まる。この場合、基幹バッチ処理にHadoopを適用する主なメリットは、大規模データを処理できることではなく、分散並列処理によってバッチ処理時間を大幅に短縮可能な点につきるのだ。その際にはスケールアウトのアプローチばかりではなくスケールアップによって分散した1台あたりの処理時間を短縮するアプローチの方が費用対効果の点で有益である場合が多い。
また、信頼性の問題もある。基幹システムのデータは、微塵の取りこぼしも許されないほど厳格に管理されるべきである。Hadoop において、NameNode は単一障害点であり、その対処は運用上不可欠だ。HDFSは時に不安定になり、データ消失の恐れがある。このような状況から、MapRでは単一障害点をなくすアーキテクチャをHadoopにもたらしている。

Hadoopに管理性、信頼性、パフォーマンスを付与するMapR

MapRは、HiveやPig、Oozieといったエコシステムについて検証したうえで製品パッケージとして提供されます。また、企業利用を見据え、優れた運用性に焦点をあてた革新的なアーキテクチャをApache Hadoopにもたらします。さらに、MapRの最大のポイントである100%標準Hadoopインターフェイスを備えた先進的なデータ基盤は、圧倒的な高いパフォーマンスはもとより、高可用性や障害回復、セキュリティ、データ保護などの企業向け機能を提供します。読み書き可能なNAS(Network Attached Storage)としてHadoopに容易にアクセスすることを可能にしています。
cata-image3
cata-image4MapRは、企業システムに必要不可欠な信頼性や運用性、そしてパフォーマンスを考慮しApache Hadoopと100%の互換性を保ちながら、アーキテクチャを設計・再実装しました。たとえば、Hadoopでデータを保管するHDFSは、Javaで実装されています。MapRではC/C++で実装することで、いつ実行されるかわからないJavaガベージコレクションを避けられます。それ以外にも数多くの機能やツールを用意することで企業レベルに必要なHadoop環境を提供しています。

詳細はこちら

Apache Hadoop for the MapR Converged Enterprise Edition

Apache Hadoop for the MapR Converged Enterprise Edition
MapRコンバージド・データ・プラットフォーム向けHadoopは、オープンソースのHadoopソフトウェアとエンタープライズグレードのMapRプラットフォームを結合させることで、Hadoopをより強力で安全かつ安定したものにしています。

詳細についてデータシートをご確認ください。

無料ダウンロードはこちら