背景:
1)テーブルの4つの異なるタイプを作成されています
2)クリーンhxh2、hxh3、hxh4データテーブル、hxh1内部に保持されたデータ、hxh1テーブルデータサイズ:74.1ギガバイト
3)hxh5テーブルとhxh1同じタイプの作成中には、TEXTFILEに格納されています
4)元のデータサイズ:74.1 G
テストの開始:
1 、TextFileの試験
- ハイブデフォルトフォーマットのデータテーブル、ストレージ:ストレージ行。
- Gzip圧縮アルゴリズムを使用することができるが、圧縮されたファイルは、分割をサポートしていません。
- 逆シリアル化のプロセスでは、我々は、文字区切り文字と行末でSequenceFileよりも数倍高いデシリアライゼーションのオーバーヘッドを文字を判断してはいけません。
オープン圧縮:
- = SET hive.exec.compress.output真に; - 圧縮形式を有効にします
- mapred.output.compression.codec = org.apache.hadoop.io.compress.GzipCodec SET ; - 圧縮フォーマットは、GZIPのための出力を指定します
- 真mapred.output.compress = SETに; - 出力圧縮mapredを回します
- io.compression.codecs = org.apache.hadoop.io.compress.GzipCodec SET ; - 選択GZIP圧縮
テーブルには、データを挿入するhxh5:
表hxh5パーティションに挿入(CREATEDATE = "2019年7月21日")hxh1から選択PVID、SGID、FR、FFR、MOD、バージョン、ベンダー。
23.8 G、消費:81.329秒を圧縮した後hxh5テーブルのデータサイズ
2 、テストシーケンスファイル
- データファイルは、ディスクスペースを節約するために圧縮することができますが、一つの圧縮ファイルの欠点でいくつかのネイティブのHadoopは、分割をサポートしていません。これらのファイルはのみ最初から読むことができるので、サポートの分割ファイルが大規模なデータマッパープログラムファイルの複数の並列処理を持つことができ、ほとんどのファイルは割り切れサポートされていません。シーケンスファイルは、Hadoopののブロック・レベルの圧縮のためのサポート割り切れるファイル形式です。
- バイナリファイルHadoopのAPIは、ファイルにキーと値のシーケンスの形で提供しました。ストレージ:ストアライン。
- sequencefileは、3つの圧縮の選択をサポート:NONE、RECORD、BLOCKを。録音低圧縮比、RECORDは通常、ブロックがよりRECORDより良い圧縮性能をもたらす、デフォルトのオプションです。
- 互換性のあるマップファイルに利点とのHadoopのAPIファイルをあります
オープン圧縮:
- = SET hive.exec.compress.output真に; - 圧縮形式を有効にします
- mapred.output.compression.codec = org.apache.hadoop.io.compress.GzipCodec SET ; - 圧縮フォーマットは、GZIPのための出力を指定します
- = BLOCKは、SETをmapred.output.compression.type ; - 圧縮オプションをブロックするように設定されています
- 設定mapred.output.compress =真;
- io.compression.codecs = org.apache.hadoop.io.compress.GzipCodecを設定します。
Hxh2データを挿入します:
表hxh2パーティションに挿入(CREATEDATE = "2019年7月21日")hxh1から選択PVID、SGID、FR、FFR、MOD、バージョン、ベンダー。
hxh2テーブルのデータサイズを圧縮後:80.8 G、消費:186.495秒//型タイプの設定が行われていない、デフォルトの録音
25.2 G、消費:81.67秒//セットタイプをBLOCKを入力するように圧縮した後hxh2テーブルのデータサイズ
3 、のrcfileテスト
ストレージ:データブロックの行、列に格納されている各ブロック。これは、メモリストレージの行と列の利点を組み合わせました:
- まず、rcfileの同じノード上の同じ行のデータので、オーバーヘッドのタプル再構築が非常に低いことを確認
- 第二に、列ストレージと同様に、データ圧縮はrcfileのカラム寸法を利用することができ、不要な読出列をスキップすることができ
- 追加データ:のrcfileは、データがどのような方法で、追加のインタフェースを提供するために、書き込み操作をサポートしていませんが根底にあるHDFSは、現在だけで、ファイルの末尾にデータ書き込みの追加をサポートしているためだけです。
- 回線グループサイズ:データ圧縮の行の大きなグループは、効率を向上させることができますが、これは消費レイジー解凍パフォーマンスを向上させるよう、読み出し性能データを破損する恐れがあります。組立ラインとグループになり、同時にMRを実行する他のジョブに影響を与える可能性があり、より多くのメモリを占有します。両方とも、Facebookの4メガバイトのラインサイズのデフォルトセットとして選択されたストレージとクエリ効率を考慮すると、当然のことながら、また、ユーザが独自の構成パラメータを選択することを可能にします。
オープン圧縮:
- hive.exec.compress.output = trueを設定。
- mapred.output.compression.codec = org.apache.hadoop.io.compress.GzipCodecを設定します。
- 設定mapred.output.compress =真;
- io.compression.codecs = org.apache.hadoop.io.compress.GzipCodecを設定します。
Hxh3データを挿入します:
表hxh3パーティションに挿入(CREATEDATE = "2019年7月1日")hxh1から選択PVID、SGID、FR、FFR、MOD、バージョン、ベンダー。
圧縮テーブルのサイズ後:22.5 G、時間のかかる:136.659秒
4 、ORC試験
ストレージ:データブロック列は、各ブロックは、列に格納されています。
圧縮速い、速い列アクセス。rcfileより効率的な、それはのrcfileの修正版です。
オープン圧縮:
- hive.exec.compress.output = trueを設定。
- mapred.output.compression.codec = org.apache.hadoop.io.compress.GzipCodecを設定します。
- 設定mapred.output.compress =真;
- io.compression.codecs = org.apache.hadoop.io.compress.GzipCodecを設定します。
Hxh4データを挿入します:
表hxh4パーティションに挿入(CREATEDATE = "2019年7月1日")hxh1から選択PVID、SGID、FR、FFR、MOD、バージョン、ベンダー。
21.9 G、経過時間:76.602秒圧縮テーブルサイズ後
5 可分であるもの、
これらのMapReduce処理でデータを圧縮する方法を検討する場合、圧縮形式のサポート部門が非常に重要であるかどうかを検討します。ファイル16として記憶されるように検討して圧縮されていないファイルが1ギガバイトのサイズを有する、HDFSに格納され、HDFSブロックサイズが64メガバイトである、MapReduceは入力ジョブとして、このファイルは、入力されたスライスを作成します(また、「ブロッキング」として知られている分割が、ブロックについて、我々は総称して「ブロック」と呼ぶ。)各スライスは別々にマップタスクの別個の入力プロセスとして管理されます。
ファイルは圧縮ファイルgzip形式、1ギガバイトの圧縮サイズであることをいま。前と同じように、HDFSこのファイル16が格納されています。ただし、各ブロックについて、それが任意の点GZIPデータストリームから読み取ることは不可能であるため、他のタスクの独立マップのみブロック内のデータのブロックを読み取ることができない、役に立たないブロックを作成します。記憶のための一連のDEFLATE圧縮データブロックとして、圧縮されたデータを格納するためにGZIPフォーマットを収縮。問題は、各ブロックの先頭が次のブロックの開始位置を特定するために、任意の時点で、ユーザ・データ・ストリームに指定されたが、データストリーム自体と同期していないことです。したがって、GZIP分割(ブロック)機構をサポートしていません。
この場合、MapReduceの分割されていないgzipファイル形式は、入力(ファイル拡張子によって知られている)GZIP圧縮形式であり、gzip圧縮機構が分割機構をサポートしていないことを知っているからです。こうして地図HDFSタスク処理ブロック16、及びローカル地図データ、ほとんどではありません。同時に、長い実行時間で、その結果、少数のマップタスク、ジョブ分割粒径十分に細かいので。
6 記載の圧縮モード
1.圧縮モード評価
圧縮、次の3つの基準を用いて評価することができます。
- 圧縮率:圧縮率が高い、小さい圧縮ファイルなので、より高い圧縮比、より良いです。
- 圧縮時間:早いほど良いです。
- 圧縮ファイル形式は、細分化することができるかどうか:割り切れるフォーマットは、単一のファイル処理マッパープログラム、より良い並列に複数のすることができます。
2.圧縮モードのコントラスト
- BZIP2は、最高の圧縮比を有するだけでなく、高いCPUのオーバーヘッドを持って、BZIP2よりgzipは続きます。ディスク使用率およびI / Oの考慮事項に基づいている場合、2つの圧縮アルゴリズムは、より魅力的なアルゴリズムです。
- スナッピーとLZOアルゴリズムは、圧縮、解凍速度をより心配ならば、彼らは良い選択である、速く解凍スピードを持っています。ほぼ同じでてきぱきとLZOデータ圧縮速度が、てきぱきLZOアルゴリズムは伸長速度よりも速くすることができます。
- HadoopのHDFSはブロック(デフォルトの64メガバイト)に大きなファイルになり、それぞれの断片がプログラムマッパーに対応し、サイズの断片に分割します。これらの圧縮アルゴリズムBZIP2、LZOでは、スナッピーの圧縮は、GZIP分割がサポートされていない、割り切れます。
7 、共通の圧縮形式
圧縮 |
圧縮サイズ |
圧縮速度 |
私は分離することができます |
GZIP |
で |
で |
ノー |
BZIP2 |
小さな |
遅いです |
それはあります |
LZO- |
すばらしいです |
速いです |
それはあります |
SNAPP |
すばらしいです |
速いです |
それはあります |
注意: |
特定の圧縮アルゴリズムは、HDFSがトップに達し、その後、MapReduceの計算、圧縮ファイルのためのマッパーステージ支持体を分離し、分離が有効である分割された圧縮した後、ローカルのファイル:ここの手段によって分離することができます。 |
Hadoopのエンコーダ/デコーダモード、表1に示すように
圧縮フォーマット |
対応するエンコーダ/デコーダ |
デフォルト |
org.apache.hadoop.io.compress.DefaultCodec |
Gzipで |
org.apache.hadoop.io.compress.GzipCodec |
BZIP |
org.apache.hadoop.io.compress.BZip2Codec |
DEFLATE |
org.apache.hadoop.io.compress.DeflateCodec |
スナッピー |
(中間出力を使用して)org.apache.hadoop.io.compress.SnappyCodec |
LZO- |
(中間出力を使用して)org.apache.hadoop.io.compress.Lz4Codec |
8 、結果を比較
圧縮は74.1G、圧縮ファイルのサイズのディレクトリである前に、
テキストファイル |
シーケンスファイル |
rcfile |
ORC |
|
でGZip |
23.8 G |
25.2 G |
22.5 G |
21.9 G |
スナッピー |
39.5 G |
41.3 G |
39.1 G |
21.9 G |
BZIP |
17.9 G |
18.9 G |
18.7 G |
21.9 G |
LZO- |
39.9 G |
41.8 G |
40.8 G |
21.9 G |
圧縮ファイル名
テキストファイル |
シーケンスファイル |
rcfile |
ORC |
|
でGZip |
* .gzを |
000000_0 |
000000_1000 |
000000_0 |
スナッピー |
* .snappy |
000000_0 |
000000_1 |
000000_0 |
BZIP |
* .Bz2 |
000000_0 |
000000_1000 |
000000_0 |
LZO- |
* .lz4 |
000000_2 |
000000_0 |
000000_0 |
データをインポートし、時間がかかります
テキストファイル |
シーケンスファイル |
rcfile |
ORC |
|
でGZip |
81.329s |
81.67s |
136.6s |
76.6s |
スナッピー |
226S |
180秒 |
79.8s |
75S |
BZIP |
138.2s |
134S |
145.9s |
98.3s |
LZO- |
231.8 |
234s |
86.1s |
248.1s |
クエリの速度
TABLE_NAMEから選択数(1)
テキストファイル |
シーケンスファイル |
rcfile |
ORC |
|
でGZip |
46.2s |
50.4s |
44.3s |
38.3s |
スナッピー |
46.3s |
54.3s |
42.2s |
40.3s |
BZIP |
114.3s |
110.3s |
40.3s |
38.2s |
LZO- |
60.3s |
52.2s |
42.2s |
50.3s |
要約:
圧縮比: |
bZIP型> gzipは>スナッピー> LZO、同じ圧縮比ORCストレージタイプに対してのものです |
圧縮時間: |
GZIP <bZIP型<スナッピー<LZOが、ストレージのrcfileの対応するタイプとORCはスナッピー圧縮型圧縮最短時間であります |
統計時間: |
でGZip <スナッピー<LZO <bZIP型が、ストレージのrcfileの対応するタイプとORCはbZIP型圧縮タイプ最短クエリであります |
推奨圧縮タイプ: |
1)bZIP型とgzipは、非常に良好な圧縮比を有するが、より高いCPU消費をもたらすであろう、それはディスクの使用率に基づいている場合、およびI / O、と考えることができる2つの圧縮アルゴリズムであります
2速い溶液)LZO圧縮アルゴリズムとスナッピースピードを持っている、注目の圧縮と解凍スピードならば、彼らは良い選択です。ハイブテーブルストレージタイプのrcfileとORC時間、てきぱきとはかなりのLZO圧縮解除効率を持っていますが、LZO圧縮よりもスナッピーの面でも優れている場合
3)Hadoopの大きなファイルサイズHDFSのブロックに分割され、各フラグメントは、プログラムマッパーに対応するフラグメントを分割します。これらの圧縮アルゴリズムBzip2で、LZOでは、スナッピー圧縮は、GZIPは別サポートしない、分離することができます |