インタビュー

Hadoopは分散処理のプラットフォームになる〜米Clouderaエンジニア

 Hadoopの活用が広がるにつれ、HDFSやHBaseだけでは対応しきれないケースが増えてきた昨今。Hadoop用の新しいデータストレージ テクノロジー「Kudu(クドゥ)」が注目を集めている。

 今回は、米Clouderaで「Kudu」の開発を行っているエンジニアのトッド・リプコン(Todd Lipcon)氏が、日本で開催されたHadoop/Sparkコンファレンスに合わせて来日したのを機に、HadoopとSpark、そしてKuduについて話を聞いた。

 なおKuduは2015年11月、Apache Software Foundation(Apacheソフトウェア財団)に寄贈され、オープンソースでの開発が行われているが、リプコン氏はApache HBaseとApache HadoopのコミッターかつPMC(Project Management Committees)メンバーでもある。

Clouderaのトッド・リプコン氏。KuduをApacheのプロジェクトにしてから、多くの開発者からメールが届いているという。それだけ、Kuduに対する開発者の興味が大きいのだろう

普及期に入ったHadoopと、今後新しい市場を切り開くSpark

――ここ2年ほど、Hadoopに関しては、テクノロジー面よりもビジネス面にフォーカスが当たっていたと思います。テクノロジー面では大きな進化が起こっていないように感じるのですが、いかがでしょうか?

リプコン氏
 確かにそうですね。これは、さまざまなテクノロジーが持っている普及曲線と同じことだと思います。Hadoopは、アーリーアダプターが利用するテクノロジー優先のソフトウェアから、多くの企業が利用する一般的なソフトウェアに進化してきているのだと思います。

 われわれClouderaもHadoopを企業で安心して使っていただけるように、アクセス制御、データの暗号化、管理ツールなど、さまざまな面で開発を行ってきました。テクノロジーの先端を見ている人たちにとっては、こういったことが、あまり進化を果たしていないように見えるのかもしれません。ただ、多くの企業がHadoopをビジネスに利用してもらうためには、必要な作業なのです。

 もちろん、Hadoopの進化は止まっているわけではありません。例えば、HDFSにイレイジャーコーディング(Erasure coding:消失訂正符号)という新しい機能を追加しています。この機能は、ストレージの効率を上げるモノです。

 HDFSでは、常にデータを3つのノードにコピーしています。耐障害性を高く保つために、1TBのデータを保存するのに、Hadoopシステム全体としては3TB使っているわけです。しかし、3つのデータが必要になることは非常にまれです。

 イレイジャーコーディングでは、データをチャンクとして分割した上で、各チャンクには、チャンクが失われたときに復元するための情報を付与しておきます。この、復元するために必要な情報を複数のノードに分散保存しておくことで、もし、あるチャンクが失われても、容易に復元できます。

 今までの、3カ所にコピーをしていたHDFSでは大きなオーバーヘッド(2倍以上)が生まれてしまっていましたが、イレイジャーコーディングを使うことで、オーバーヘッドが1.4倍と小さくなっています。

 Hadoopは、エンタープライズで実際の運用フェーズに入っているため、革新的な新機能よりも、セキュリティやパフォーマンスの向上という面が重視されるようになっているのです。

Hadoopは、順調に進化してきている。特に近年は、エンタープライズで利用できるように、セキュリティやパフォーマンス、SQLへの対応などが重視されている(資料提供:Cloudera、以下同じ)

――一方、Sparkに関しては、コミュニティ活動も活発化して、大きな注目が集まってきています。

 Sparkには現在、多くの注目が集まっています。Spark自体は非常に優れたテクノロジーだと思いますし、今後のHadoopにとっては重要なソフトウェアだと思います。ただ、多くの企業がSparkを本格的に利用していくには、まだまだアーリーなテクノロジーだと思います。

 現在、Sparkのコミュニティでは、Spark 2.0の開発を進めています。このバージョンでは大きなテクノロジージャンプが起こり、Sparkの利用範囲を大きく広げていくでしょう。

 Hadoopは普及期に入っていますが、Sparkは今後新しいマーケットを切り開いていくテクノロジーという違いがあるので、多くの開発者の目には、Hadoopが盛り上がっていないように見えるのかもしれません。

 Sparkに関しては、非常にホットなテクノロジーということで、多くの開発者やIT企業が注目をしていますが、(前述したように)まだまだアーリーなテクノロジーです。Sparkは、数年前のHadoopと同じように、多くの開発者からさまざまなコードを提供され、エンタープライズ向けに多くの機能を追加していくことになるでしょう。その後は、Sparkを安定して動作させるということになっていきます。その時期には、先端的なIT企業だけでなく、いろいろな業界の企業が本格的に利用するようになるでしょう。

――一般的には、Hadoop=ビッグデータ処理というイメージを持たれていますが、Sparkを使ってさまざまな処理が行えることを考えれば、Hadoopは、分散コンピューティングのプラットフォームになってきている印象を持つのですが?

 もともと、Hadoopはフレームワークなんです。Hadoop 2.0より前は処理系が整理されていなくて、MapReduceと一体化されていました。その当時でも、NoSQLのHBaseなどのデータベースはありましたし、ImpalaのようにSQLデータベースへのアクセスを可能にするものもありました。Hadoop 2.0になり、Yarnという処理系のフレームワークが整ったことで、SparkやKafkaなどの新しい処理系がHadoopというフレームワーク上で動くようになってきました。

 Hadoopは、ひんぱんにディスクアクセスが必要な処理に対し、それを複数のサーバーに分散させて処理するクラスタリングのフレームワークです。こういったことを考えれば、ビッグデータだけでなく、さまざまな処理系が搭載されることになるでしょう。

 もちろん、Hadoopがオールマイティだというつもりはありませんが、データ量が飛躍的に増えてきた状況に対応しようという場合や、リアルタイムに近いタイムフレームで処理を繰り返すことなどには、ぴったりなシステムだと思っています。

Kuduとは?

――ご自身が担当されているKuduは、Hadoopにとっては新しいテクノロジーですよね。Kuduは、どういったモノですか?

 Hadoopが多くの企業で利用されてくるようになると、データストレージ・テクノロジーのHDFSとHBaseだけでは、対応できないことが増えてきました。そこで、新しいデータストレージとしてKuduを開発したのです。

 Kuduの目的としてはもう1つ、サーバーテクノロジーの大きな変化への対応があります。Intelが開発を進めているフラッシュメモリの3DXpointなどでは、単なるストレージデバイスとしてだけでなく、メインメモリとしても利用していこうと考えられています。最初にHadoopを開発したときに比べると、サーバーのメインメモリも大きくなっていますが、3DXpointが出てくれば、さらに大容量で高速なメモリ空間を利用することができます。

現在のHadoopのストレージは、エンタープライズでの利用に対応するために、アクセスコントロール、SQLのサポート、HDFSのパフォーマンスアップ、クラウドストレージへの対応などが行われている
将来的には、フラッシュメモリがメインメモリに搭載されることで、Hadoopのデータストレージも大きな進化が必要になる

 Kuduは、構造化データのテーブルのためのストレージシステムです。テーブルは、あらかじめ定義された数字の型を持つ列から構成されたスキーマを持っています。各テーブルには、1つ以上の列で構成される主キーがあります。主キーは一意性制約(2つの行が同じキーを共有することができない)を持ち、効率的な更新と削除のためにインデックスとしてふるまいます。

 Kuduのテーブルは、リレーショナルデータベースシステムのパーティションに似た、タブレットと呼ばれるデータの一連の論理サブセットで構成されています。複数のサーバーにタブレットをコピーすることにより、データの耐久性とハードウェア障害に対する保護を提供します。タブレットの容量は、通常、数十GBであり、個々のノードには、10〜100タブレットが保存されることになります。

 また、複数のタブレットを管理するためのカタログが管理サーバーに保存されています。もちろん、この管理サーバーは冗長化されているため、高い可用性を有しています。将来的には、タブレットを管理する管理サーバーをクラスタ化して、システム全体のパフォーマンスを向上させ、ボトルネックにならないようにしていく計画です。

 Kuduでは、テーブルに対するデータの更新、挿入、そして削除などは、ストレージの保存されているデータに直接行うのではなく、タブレットをできるだけメモリ上に展開し、そこで処理が行われるようにしています。最終的には、タブレットはストレージに保存されますが、できるだけメモリ上で処理を行うことにより、パフォーマンスを高めています。

 C++やJavaに対してのAPIを持っているため、多くの開発者にとっては使いやすいと考えています。現状のベータ版ではImpala、MapReduce、Sparkなどと連携が可能になっていますし、将来的には、すべてのHadoop上で動作する処理系においてKuduがサポートされると思っています。

 現在、Kuduはまだまだアーリーなテクノロジーですからベータ版として提供されていますが、2016年後半にIntelが3DXpointメモリを出荷するタイミングに合わせて、多くのユーザーが利用するようになるでしょう。3DXpointを使えば、Kuduの高いパフォーマンスを実感してもらいやすくなるのでは、と考えています。

Kuduは、HDFSとHBaseを埋めるデータストレージだ
Kuduの特徴として、高いスケーラビリティ、オンメモリを使うことでの高いパフォーマンスを実現している。また、テーブル形式のデータフォーマットを採用している
Kuduは、高いパフォーマンスを持ち、リアルタイムで処理ができるようになる。このため将来的には、HDFSやHBaseを置き換えていくようになると考えている
Hadoopでリアルタイムの分析を行うには、複雑なシステム構成になった
Kuduを使えばシンプルな構成にできる。このことは、パフォーマンスを高める要素になっている

 Kudu自体はApacheにコードを寄贈し、インキュベータプロジェクトとしてコミュニティで開発が進んでいます。現在、中国の携帯電話メーカーのXiaomiがビッグデータ解析に使用しています。テストの要素が強いシステムですが、今までは丸1日かかっていた処理が、数十秒で行えるようになりました。

Xiaomiでは、ApacheのKuduを利用して、毎日100億レコードが増えるデータの分析を行っている
以前は、HBase、HDFS、Impalaを使っていた。このシステム構成では、データ処理のパイプラインが長く、結果を得るのに最短1時間、最長だと丸1日かかった
Kuduを採用してからは、システム構成がシンプルなり、データ処理のパイプラインも短くなった。これにより、リアルタイムもしくは、数十秒で分析が行えるようになった
Ziaomiのベンチマークでは、ParguetとKuduでこれだけの差が出ている
Kuduは、まだまだアーリーテクノロジー。Apacheのインキュベータ プロジェクトになり、今年0.7.0をリリース。現状ではベータ版といえる。しかし、今年後半に向かって、開発を進め、安定性を高めていく

*****

 リプコン氏は、新しいハードウェアに対応するために、Kuduというデータストレージ技術によりHadoopも進化していると話している。

 実はHadoopの進化は、Yarnなどの処理系のフレームワーク部分でも起こっている。今回インタビューを行ったHadoop/Sparkコンファレンス ジャパンの基調講演でも、Hadoopコミッターの小沢健史氏(NTT)と鯵坂明氏(NTTデータ)は、YarnのフレームワークにFPGAやGPGPUなどの計算リソースを扱えるようにしていき、最新のハードウェアテクノロジーに対応していきたいとしている。

 このように、Hadoopは、分散処理のフレームワークとして、ビッグデータだけでなく、機械学習など、さまざまな処理に利用されていくのだろう。

(山本 雅史)