06:00)Hadoopの活用が広がるにつれ、HDFSやHBaseだけでは対応しきれないケースが増えてきた昨今。テクノロジー「Kudu(クドゥ)」が注目を集めている。Lipcon)氏が、日本で開催されたHadoop/Sparkコンファレンスに合わせて来日したのを機に、HadoopとSpark、そしてKuduについて話を聞いた。Committees)メンバーでもある。Clouderaのトッド・リプコン氏。KuduをApacheのプロジェクトにしてから、多くの開発者からメールが届いているという。それだけ、Kuduに対する開発者の興味が大きいのだろう普及期に入ったHadoopと、今後新しい市場を切り開くSpark――ここ2年ほど、Hadoopに関しては、テクノロジー面よりもビジネス面にフォーカスが当たっていたと思います。これは、さまざまなテクノロジーが持っている普及曲線と同じことだと思います。Hadoopは、アーリーアダプターが利用するテクノロジー優先のソフトウェアから、多くの企業が利用する一般的なソフトウェアに進化してきているのだと思います。われわれClouderaもHadoopを企業で安心して使っていただけるように、アクセス制御、データの暗号化、管理ツールなど、さまざまな面で開発を行ってきました。テクノロジーの先端を見ている人たちにとっては、こういったことが、あまり進化を果たしていないように見えるのかもしれません。多くの企業がHadoopをビジネスに利用してもらうためには、必要な作業なのです。Hadoopの進化は止まっているわけではありません。coding:消失訂正符号)という新しい機能を追加しています。この機能は、ストレージの効率を上げるモノです。HDFSでは、常にデータを3つのノードにコピーしています。耐障害性を高く保つために、1TBのデータを保存するのに、Hadoopシステム全体としては3TB使っているわけです。3つのデータが必要になることは非常にまれです。イレイジャーコーディングでは、データをチャンクとして分割した上で、各チャンクには、チャンクが失われたときに復元するための情報を付与しておきます。この、復元するために必要な情報を複数のノードに分散保存しておくことで、もし、あるチャンクが失われても、容易に復元できます。今までの、3カ所にコピーをしていたHDFSでは大きなオーバーヘッド(2倍以上)が生まれてしまっていましたが、イレイジャーコーディングを使うことで、オーバーヘッドが1.4倍と小さくなっています。Hadoopは、エンタープライズで実際の運用フェーズに入っているため、革新的な新機能よりも、セキュリティやパフォーマンスの向上という面が重視されるようになっているのです。Hadoopは、順調に進化してきている。近年は、エンタープライズで利用できるように、セキュリティやパフォーマンス、SQLへの対応などが重視されている(資料提供:Cloudera、以下同じ)――一方、Sparkに関しては、コミュニティ活動も活発化して、大きな注目が集まってきています。Sparkには現在、多くの注目が集まっています。Spark自体は非常に優れたテクノロジーだと思いますし、今後のHadoopにとっては重要なソフトウェアだと思います。多くの企業がSparkを本格的に利用していくには、まだまだアーリーなテクノロジーだと思います。2.0の開発を進めています。このバージョンでは大きなテクノロジージャンプが起こり、Sparkの利用範囲を大きく広げていくでしょう。Hadoopは普及期に入っていますが、Sparkは今後新しいマーケットを切り開いていくテクノロジーという違いがあるので、多くの開発者の目には、Hadoopが盛り上がっていないように見えるのかもしれません。Sparkに関しては、非常にホットなテクノロジーということで、多くの開発者やIT企業が注目をしていますが、(前述したように)まだまだアーリーなテクノロジーです。Sparkは、数年前のHadoopと同じように、多くの開発者からさまざまなコードを提供され、エンタープライズ向けに多くの機能を追加していくことになるでしょう。その後は、Sparkを安定して動作させるということになっていきます。その時期には、先端的なIT企業だけでなく、いろいろな業界の企業が本格的に利用するようになるでしょう。――一般的には、Hadoop=ビッグデータ処理というイメージを持たれていますが、Sparkを使ってさまざまな処理が行えることを考えれば、Hadoopは、分散コンピューティングのプラットフォームになってきている印象を持つのですが?もともと、Hadoopはフレームワークなんです。2.0より前は処理系が整理されていなくて、MapReduceと一体化されていました。その当時でも、NoSQLのHBaseなどのデータベースはありましたし、ImpalaのようにSQLデータベースへのアクセスを可能にするものもありました。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は、まだまだアーリーテクノロジー。プロジェクトになり、今年0.7.0をリリース。現状ではベータ版といえる。今年後半に向かって、開発を進め、安定性を高めていく*****リプコン氏は、新しいハードウェアに対応するために、Kuduというデータストレージ技術によりHadoopも進化していると話している。実はHadoopの進化は、Yarnなどの処理系のフレームワーク部分でも起こっている。ジャパンの基調講演でも、Hadoopコミッターの小沢健史氏(NTT)と鯵坂明氏(NTTデータ)は、YarnのフレームワークにFPGAやGPGPUなどの計算リソースを扱えるようにしていき、最新のハードウェアテクノロジーに対応していきたいとしている。このように、Hadoopは、分散処理のフレームワークとして、ビッグデータだけでなく、機械学習など、さまざまな処理に利用されていくのだろう。