2011-06-20 12 views
0

私の質問に興味をお持ちいただきありがとうございます。 始めに、私はHadoop & HBaseの新機能をご紹介します。これまでのところ、Hadoopは非常に興味深く、将来的にはより多くの貢献をしたいと考えています。HBaseのキーバリュー圧縮?

私は主にHBaseのパフォーマンスを向上させることに興味があります。これを行うために、HBaseの/io/hfile/Hfile.javaのメソッドをWriterに変更しました。これは、高速バッファリングされたデータアセンブリを行い、HBaseによって後でロードできるように直接Hadoopに書き込む方法です。

ここで、帯域幅を節約できるように、キーと値のペアを圧縮する方法を考え出しています。私はどのように把握するために多くの研究をしました。 HBaseに圧縮ライブラリが組み込まれていることに気付きました。

私は現在SequenceFileを見ています(1); setCompressMapOutput (2)(非推奨)。クラス圧縮(3)です。また、ApacheのMapReduceにtutorialが見つかりました。

誰かが "SequenceFile"とは何か、そしてそれらの圧縮ライブラリとアルゴリズムをどのように実装できますか?これらの異なるクラスとドキュメントは、私にとってとても混乱しています。

ご協力いただき誠にありがとうございます。

-

ハイパーリンク:

(1):hadoop.apache.org/common/docs/current/api/org/apache/hadoop/io/SequenceFile.html

( 2):hadoop.apache.org/common/docs/current/api/org/apache/hadoop/mapred/JobConf.html#setCompressMapOutput%28boolean%29

(3):www.apache.org/dist/ hbase/docs/apidocs/org/apache/hadoop/hbase/io/hfile/Compression.html

答えて

0

SequenceFileは、Hadoopで使用されるキーと値のペアのストリームです。あなたはそれについての詳細を読むことができますon the Hadoop wiki

4

SequenceFileは、Hadoopで実装されたキー/値ペアファイル形式です。先読みログを格納するためにHBaseでSequenceFileが使用されても、SequenceFileのブロック圧縮の実装はありません。

CompressionクラスはHadoopの圧縮フレームワークの一部であり、HBaseのHFileブロック圧縮で使用されます。

HBaseのは、すでに組み込まれている次の種類の圧縮:ディスク上の

  • HFILEブロック圧縮。これはHadoopのコーデックフレームワークを使用し、LZO、GZIP、SNAPPYなどの圧縮アルゴリズムをサポートします。このタイプの圧縮は、ディスクに格納されているHFileブロックにのみ適用されます。これは、キー/値のペアを取得するためにブロック全体を圧縮解除する必要があるためです。
  • キャッシュ内キー圧縮(HBaseの用語では「データブロックエンコーディング」と呼ばれます) - HBASE-4218を参照してください。実装されたエンコーディングアルゴリズムにはさまざまな種類のプレフィックスとデルタエンコーディングが含まれており、この記述の時点でトライエンコーディングが実装されています(HBASE-4676)。データブロックのエンコーディングアルゴリズムは、HFileブロック内のソートされたキー間の冗長性を利用し、連続するキー間の差異だけを保存します。これらのアルゴリズムは現在値を扱っていないので、小さい値(キーサイズに比べて)の場合には大抵有用です。カウンター。これらのデータブロック符号化アルゴリズムの軽量な性質のために、ブロックの必要な部分のみを効率的に復号して、要求された鍵を検索するか、または次の鍵に進むことが可能である。このため、これらのエンコーディングアルゴリズムはキャッシュ効率を向上させるのに適しています。しかし、実際のデータセットの中には、デルタエンコーディングでも、LZO圧縮の上に最大50%(デルタエンコーディングを適用し、次にLZOとLZOのみを適用する)を保存できるため、ディスクの大幅な節約も実現します。
  • カスタム辞書ベースの先読みログ圧縮アプローチは、HBASE-4608に実装されています。注:SequenceFileがHBaseの先読みログストレージに使用されていても、ブロック圧縮用のキーと値のペアをバッファリングするとデータが失われるため、SequenceFileの組み込みブロック圧縮を先読みログに使用できません。

HBase RPC圧縮は進行中の作業です。前述のとおり、クライアントとHBaseの間で渡されたキー/値のペアを圧縮することで、帯域幅を節約し、HBaseのパフォーマンスを向上させることができます。これはフェイスブックのHBaseバージョン0.89-fb(HBASE-5355)で実装されていますが、公式のApache HBaseトランクにまだ移植されていません。 HBase 0.89-fbでサポートされているRPC圧縮アルゴリズムは、Hadoop圧縮フレームワーク(GZIPやLZOなど)でサポートされているRPC圧縮アルゴリズムと同じです。

setCompressedMapOutputメソッドはmap-reduce構成メソッドであり、HBase圧縮には実際には関係ありません。

+1

+1 - たくさんのユーザーにとって参考になるはずです –