NetApp Tech OnTap NetApp Logo
NetApp Tech OnTap
     
「NetApp ビッグデータソリューション
NetApp Open Solution for Hadoop の全貌」
シェアする NetAppオフィシャルFacebook

ホワイトボックスの Hadoop が抱える課題

前回の繰り返しとなりますが、Hadoop はオープンソースソフトウェアです。オープンソースソフトウェアを一般企業で活用・運用するにあたっては、プロプライエタリの商用ソフトウェアに比べてノウハウや運用などを心配される事はあるでしょう。特にホワイトボックスで構成されるような従来の Hadoop クラスタをイメージされているお客様には「自分達では難しい」と思われているところもあるのではないでしょうか。確かにドットコム企業の例にみるような構成・運用での活用は難しくいくつか課題もあります。それは、SLA を重んじるエンタープライズな領域では避けてとおれないポイントでもあります。NetApp Open Solution for Hadoop ではそこをお手伝いできます。今回はまず、もう少し Hadoop の中身の話にも触れながら下記の課題を提起し、次回の NetApp Open Solution for Hadoop のアプローチにつなげたいと思います。

SPOF の存在
ディスク障害・データノード障害時のパフォーマンス劣化
運用・拡張性・柔軟性の課題

SPOF の存在

システム基盤構築において重要なポイントとして上げられるのが可用性です。このブログを読まれているみなさんにとっては釈迦に説法かもしれませんが、システム全体の可用性を上げるためにはいかにこの SPOF(Single Point of Failure) を取り除くかが鍵となります。実は Hadoop クラスタの中には SPOF が存在します。それは Hadoop Distributed File System(HDFS) の 「NameNode」 です。しかもこの部分はとても重要な部分で、ここに障害が発生するとデータにアクセス不能となる致命的なものとなります。データは企業の資産です。大量に格納していたこれらのデータの損失はみなさん想像のつくところかとおもいます。


  図 1: Hadoop の SPOF

ここで HDFS のアーキテクチャにふれます。HDFS は複数のコンピュータ(の内蔵 HDD )を1つの HDD のように扱うことができるファイルシステムで、中身は 2 つのコンポーネントで構成されています。NameNode と DataNode です(図1)。HDFS にデータを格納する時、NameNodeでファイルシステムのメタデータ、および分散されたすべてのデータブロックの配置を管理し、実際の分散されたデータブロックは DataNode は上に格納されます。DataNode に格納される分散ブロックは複数の DataNode に複製が担保されるため、1、2 つの DataNode に障害が発生してもデータ損失にはなりません。しかし、 NameNode のもつメタデータが破損してしまった場合、データにアクセスできなくなってしまいます。この時、 DataNode でいくら複製していても関係なく、データ損失と同義となります。よってこの事態は絶対に避けなければなりません。つまり、エンタープライズの要件として高可用性が必要となるわけです。

ディスク障害・データノード障害時のパフォーマンス劣化

従来の Hadoop クラスタにおいては、DataNode の内蔵ディスクを分散ブロックの格納場所とします。DataNode は分散処理のワーカーにもなり複数存在しますので、スケールさせ大きなクラスタになればなるほどクラスタ全体としてノードの障害発生率は大きくなりますし、HDD 単体でいうともっと高頻度になります(大規模クラスタでは1日1ノードの障害が当たり前というほど)。DataNode は分散されたブロックの複製を別の DataNode に担保していますので DataNode の障害によりデータそのものの損失につながる事態が発生する確率は限りなく低くなります。しかしながら、頻繁に発生した障害により起こされる別の問題があります。それはデータを処理するジョブ完了までの時間です。Hadoop の HDFS はデータを管理する仕事をするだけであり、HDFS に格納されたデータを扱う処理が存在します。その代表が MapReduce です。 MapReduce のジョブが走る時、各 DataNode にはタスクという単位で処理が分散されます。例えば、ある DataNode のディスクに障害が発生し、最悪はそのノードが停止に陥るような場合、タスクの再実行が別の DataNode に振り分けられ、且つ DataNode がクラスタから喪失することにより、Hadoop クラスタ全体で分散されたブロックの複製を回復するために、再複製処理が行われます。これは各 DataNode に I/O 負荷をかけるだけでなく、複製のため余計なネットワークトラフィックも発生し、最終的なジョブ完了までの時間を大きく遅延させる原因にもなります(図2)。これではリアルタイムな意思決定には使えませんし、一瞬の遅れが損失につながる可能性も出てきます。


  図 2: 障害発生時におけるジョブ完了時間の比較

ここで追加情報として、HDFS では分散ブロックの複製数としてデフォルトでは "3" となっています。つまりファイルシステム内で 3 面ミラーしており、この意味するところは容量が"3 倍"必要になるということです。そして複製される際のネットワークトラフィック量も応じて増えることになります。この数と前述の障害時に引き起こされる再複製のインパクトは大きくなります。

こういった障害時のパフォーマンス劣化は、Hadoop の有用性がわかっても思い切って着手できない要因となるでしょう。せっかくの並列分散処理基盤の特性を殺さず構成・運用したい、と考えるポイントになります。

運用・拡張性・柔軟性の課題

どのようなものでもそうですが、システム運用は楽な方が良いにきまっています。何故ならば複雑な場合、難しさわかりにくさから様々なトラブル(オペレーションミスなど)を誘うリスクがあるためです。Hadoop の活用にもこれは同じ事が言えます。導入時はもちろんですが Hadoop の特性上ノードを追加していきパフォーマンスと容量をスケールさせクラスタを大きくしていくため、このオペレーションは簡単に迅速にできるように準備したいところです。障害発生時のメンテナンスも同じです。正直なところコミュニティ版の Hadoop を導入・運用するのはお世辞にも容易なものとはいえません。難しすぎるということもないですが、Hadoop は Linux 上で動作するミドルウェアということもあり、構築や運用にコマンドラインを使ったりある程度 Linux 運用に精通した技術力も必要となってきます。

例えば、ホワイトボックスの Hadoop を構築されているユーザーは自らを手組で構成し、運用している事が多く、基盤に対して何か要求がある場合は自らで解決策を見出し、コードを変えてでも自分達がやりやすいように好きなように構成し、不具合がでるものなら修正し使っています。自分たちだけの要求を満たすように活用していけるのも OSS の特徴でもあるので正しい姿と言えます。しかし、このような運用をエンタープライズのユーザーを含めて誰もが同じようにできるかというとそうはならないでしょう。ここで、同じ OSS である Linux はどうこの隙間をうめているでしょうか。 Red Hat Enterprise Linux や SUSE Linux Enterprise Server などディストリビューションの活躍によりエンタープライズ領域で広く利用されている事は読者のみなさんも感じているのではないでしょうか。実は Hadoop も同じ道をたどっており、この点を解決できるようになっています。


       図 3:OSS のエンタープライズへの道

そして、Hadoop の特徴として忘れてならないのが拡張性です。Hadoop のクラスタを大きくする場合、ノード(コンピューティングリソースと容量)を増やすことになります。一見してシンプルに見えますが、果たしてこの拡張だけが最適でしょうか。当然ながらすべてのお客様のビジネスの成長スピードが同じにはならないことを鑑みるとそうではないかもしれません。我々はリソースの柔軟性という観点でもアプローチします。

次回はいよいよ NetApp Open Solution for Hadoop

ここまで、前置きが長くなりましたが次回はいよいよ本ソリューションを明かします。今回あげたようなポイントをどのように解決しているかをご紹介します。


倉持健史(くらもちたけし)
パートナーSE 部 システムズエンジニア
NetApp




東京電機大学情報科学科卒、UNIX 系 SIer、Linux HA クラスタソフトウェアメーカを経て 2011 年 9 月パートナー SE として入社
プリセールス SE としてパートナー支援を中心に活動、本年度からは BigData ソリューションも担当
1978 年 8 月 22 日 東京生まれ
基本はインドアだが登山も好き、TEKKEN はポールでゴリ押し
関連情報
関連情報
Tech OnTap 9 月号
第二回: NetApp ビッグデータソリューション
関連情報
 
Go further, faster TRUSTe
お問い合わせ   |   購入方法   |   フィードバック   |   採用情報  |   登録   |   プライバシーポリシー   |   © 2012 NetApp