2015-09-03 8 views
9

これによると、Cloudera postは、スナッピーIS分割可能です。スナッピーは分割可能か分割不可ですか?

MapReduceの場合、圧縮データを分割可能にする必要がある場合、BZip2、LZO、およびスナップ形式は分割可能ですが、GZipは分割できません。分割可能性は、HBaseデータには関係ありません。

しかし、hadoop決定的なガイドから、スナッピーは分割できません。 enter image description here

ウェブにはいくつかの情報があります。一部の人は分割可能だと言っている人もいますし、そうでない人もいます。

+1

それを試してみませんか? –

+0

同じことに気づいたのは興味深いことに、Clouderaは間違っているようです。 – noego

+0

彼らはドキュメントをhttp://www.cloudera.com/documentation/enterprise/latest/topics/admin_data_compression_performance.htmlに変更して、分割可能ですが、コンテナ形式でのみ変更します – mishkin

答えて

12

どちらも正確ですが、レベルは異なります。

Clouderaのブログによると、注意すべきhttp://blog.cloudera.com/blog/2011/09/snappy-and-hadoop/

一つのことは直接に使用されるのではなく、シーケンスファイルやアブロデータファイルのように、スナッピーが
コンテナフォーマットで使用することを意図しているということです後者は分割可能ではなく、MapReduceを使用して並列処理することができないため、プレーンテキストを使用することはできません。これはLZOとは異なります.LZOファイルを後続の処理で効率的に処理できるように、分割ポイントを決定するためにLZO圧縮ファイルを索引付けすることは可能です。

これは、全体のテキストファイルがてきぱきと圧縮されている場合、ファイルが分割ないことを意味します。しかし、ファイル内の各レコードがSnappyで圧縮されている場合、ファイルは、例えばブロック圧縮を伴うシーケンスファイルで分割可能なにすることができます。

より明確にするためには、同じではありません。

<START-FILE> 
    <START-SNAPPY-BLOCK> 
    FULL CONTENT 
    <END-SNAPPY-BLOCK> 
<END-FILE> 

<START-FILE> 
    <START-SNAPPY-BLOCK1> 
    RECORD1 
    <END-SNAPPY-BLOCK1> 
    <START-SNAPPY-BLOCK2> 
    RECORD2 
    <END-SNAPPY-BLOCK2> 
    <START-SNAPPY-BLOCK3> 
    RECORD3 
    <END-SNAPPY-BLOCK3> 
<END-FILE> 

よりもてきぱきブロックがてきぱきブロック が、ファイルを分割 されませんsplittablesです。

2

hadoopの分割可能なコーデックはすべて、org.apache.hadoop.io.compress.SplittableCompressionCodecを実装する必要があります。 hadoopソースコードを2.7として見ると、org.apache.hadoop.io.compress.SnappyCodecはこのインターフェイスを実装していないことが分かります。したがって、分割可能ではないことが分かります。

関連する問題