hadoop-logo
ようこそ Tech blogへ!
「これからHadoopを勉強しよう」という方はまず下記のページから

サイトの移行に伴って画像が表示されないなどの不具合が生じています

Kuduリリース!

オープンソースの新しいストレージエンジン、Kudu
kudulogoついに本日アナウンスされた Kudu (クドゥ)、次世代ハードウェアにも対応するオープンソースのストレージエンジンです。まだベータ版ですが、3年もの開発期間を経てついに公開されました!


数日前にリークされた記事に「KuduはHDFSやHBaseを置き換えるものだ」と書かれていましたが、それは間違いです。詳細はFAQなどにも書かれていますが、HDFSとHBaseを補う新しいストレージエンジンです。

Kudu情報まとめページ

※KuduはImpalaと同じ偶蹄目ウシ科の動物です。日本名ではクーズーとも言いますが、残念ながら両方とも日本の動物園にはいません。

 書き込み読み込みユースケース
HDFSライトワンス
(追記可能)
スキャンストレージ。分析用の組み合わされたされた構造化データ
HBase挿入/更新行のルックアップ高速にオンラインデータの取得と提供
Kudu挿入/更新スキャン高速なデータ上で高速な分析

分析を行う場合、HDFSの読み出し処理はスキャンで行われるため、良い性能になります。(例えばParquet形式のファイルとして保存しておく)。しかし、データが頻繁に追加、変更される場合には適していません。
一方でHBaseは高速に書き込む(挿入、更新)ことができます。しかし、行のルックアップには優れているものの、大量にスキャンを行うような処理にはあまり適していません。
これらの間にあるギャップを補完するのがKuduです。
 
日本語ドキュメントがないので、ウェブページが翻訳されるまでのつなぎとして、ざっと抜粋して日本語化してみました。かなり端折っているので、詳細は原文をご確認ください。また、間違いを見つけた方はご指摘ください。

Kuduのホームページからの抜粋

Apache Kudu - Fast Analytics on Fast Data
A new open source Apache Hadoop ecosystem project, Apache Kudu completes Hadoop's storage layer to enable fast analytics on fast data

効率化されたアーキテクチャ

Kuduは単一ストレージ層に渡って複数のリアルタイム分析のワークロードを可能にさせる、高速な挿入/更新と、効率的なカラムナスキャンを提供します。HDFSとApache HBaseの新しい補完として、風変わりなワークアラウンドを行うことなく、多様なユースケースに対処するためにKuduはアーキテクトに柔軟性を提供します。

高速な分析

Kuduは、高速な(素早く変更される)データが必要なユースケースに特別に設計されています。エンジニアが次世代ハードウェアとインメモリでの処理を利用するために、KuduはCloudera ImpalaとApache Spark(初めは。他の実行エンジンも来るでしょう)のクエリを著しく低レイテンシにします。

貢献に対して開かれている

Hadoopエコシステムに長く関わっているコントリビュータ達によって創設されたKuduプロジェクトは、Apache 2ライセンスの下でリリースされ、長期間の成功の重要な要因としてコミュニティの参加を尊重しています。私たちは今までのコントリビュータに感謝し、もっと多くの方に会うのを楽しみにしています!

Kudu Overviewからの抜粋

Apache Kudu - Overview
A new open source Apache Hadoop ecosystem project, Apache Kudu completes Hadoop's storage layer to enable fast analytics on fast data

データモデル

  • SQLで使用されているようなテーブル形式
  • 主キーとひとつ以上の列
  • 主キーによる効率の良い読み込み、更新、削除
  • データ型(boolean, 8/16/32/64bit signed int, timestamp, double,float, UTF8, binary )

低レイテンシランダムアクセス

  • 個々の行に対して、ミリ秒スケールの低レイテンシでのアクセスに対応するストレージシステム(Kuduはファイルシステムやファイルフォーマットではない)
  • Java, C++でアクセス可能(Pythonは今後対応予定)
  • OLTPのために設計されていない
  • YCSBを使った10億行に対するランダムアクセスのワークロードでは、99パーセンタイルのレイテンシが6ms

Hadoopエコシステムと統合

  • ライブストリーミングデータをJavaクライアントからストリームで格納し、Spark、Impala、MapReduceですぐに処理できる

オペレータによって、オペレータのために作られた

  • Kuduは数百のエンタープライズのユースケースで重要なHadoopクラスタのサポートに関わっていたエンジニアによって作られた
  • 従って、デバッグのためには良いメトリクス、トレース、管理ツールなしにデバッグするのはフラストレーションがたまると知っている
  • 今回のβ版でさえ、トレース機能、広範囲なメトリクスのサポート、ウォッチドッグスレッドなどが含まれている

オープンソース

  • Apache 2.0 ライセンスのオープンソース
  • 最初はコードレビュート日々の議論をオープンにする
  • また、Apache Software Foundationのincubatorになるようにする

Kuduのアーキテクチャ

非常に高速なカラムナ(列指向)ストレージ

  • ほとんどの現代の分析データストアと同様に、Kuduは内部ではデータを列形式で保存する
  • カラムナストレージは効率的なエンコードと圧縮ができる
  • カラムナストレージは分析クエリをサービスするためのデータのI/Oの量も劇的に削減する

分散とフォールトトレランス

  • Kuduは大規模なデータセットを「Tablet」という小さなユニットに分割する
  • この分割は設定により、ハッシュ、レンジパーティション、その組み合わせによりテーブル単位で調整できる
  • KuduはRaftコンセンサスアルゴリズムを使用

次世代ハードウェアのための設計

  • Kuduチームは次世代ハードウェア技術のパワーに手綱をつけるために、インテルのエンジニアと密接に作業している
  • KuduのストレージはSSDのIO特性を利用できるように設計されており、永続化メモリにデータを保存できるlibpmemライブラリに基づいた実験的なキャッシュ実装を含んでいる
  • KuduはC++で開発されており、ノードごとに大量のメモリを使用できる
  • 10コアを超えるように簡単にスケールできる
  • SSE4およびAVXインストラクションセットからSIMDオペレーションを使用して、良好なインストラクションレベルでの並列性を達成

 

コメント