...

Hadoop LZO圧縮機能の検証

by user

on
Category: Documents
18

views

Report

Comments

Transcript

Hadoop LZO圧縮機能の検証
ホワイトペーパー
Hadoop LZO 圧縮機能の検証
対象
Apache Hadoop
対象バージョン
Apache Hadoop 0.20.203.0 / LZO 2.03
概要
本書は、Hadoop の処理対象データを LZO 形式で圧縮した場合、「処理時間」と「HDFS
使用量」の関係と効果について確認する事を目的として実施した、検証の内容、およびそ
の結果を記載したものです。
検証の結果、LZO 圧縮を使用することで HDFS により多くのデータを格納するとともに、
Map/Reduce の処理時間短縮、ならびに HDFS へのデータインポート/エクスポート時間
の短縮が期待できます。
前提条件など
Hadoop の概要を理解していること。
開示範囲
一般
■ 本書のご利用に関して
本ドキュメントは作成時点の最新情報を基に記載しています。ご使用機器の OS バージョン等必ずご確認の上でご活用をお願いいたします。
また、本書の正確さに最大限の努力をはらっていますが、本書の無謬性、その他について一切保証はいたしません。
本書の利用に基づくいかなる結果、損害にも責任を負いかねますので、ご了承ください。
文書名 ............... Hadoop LZO 圧縮機能の検証
リビジョン ............... 1
初版 ............... 2012/01/30
All rights reserved, ©2012, Hitachi Solutions, Ltd.
目次
1
2
3
4
5
はじめに ................................................................................................................ 3
1.1
検証の目的 ....................................................................................................................... 3
1.2
圧縮形式 .......................................................................................................................... 3
検証作業概要 ........................................................................................................ 4
2.1
LZO圧縮の使用の流れ...................................................................................................... 4
2.2
検証の観点 ....................................................................................................................... 4
検証環境 ............................................................................................................... 5
3.1
システム構成 ..................................................................................................................... 5
3.2
システム構成詳細 .............................................................................................................. 5
3.3
検証用データとMap/Reduceアプリケーション ...................................................................... 5
検証結果 ............................................................................................................... 6
4.1
HDFS使用量 .................................................................................................................... 6
4.2
処理時間 .......................................................................................................................... 7
4.3
Map/Reduce処理時間のi/o wait率 .................................................................................... 8
4.4
参考情報(データ圧縮処理時間) ........................................................................................ 9
考察 .................................................................................................................... 10
5.1
6
2
圧縮時間 ........................................................................................................................ 10
結論 .................................................................................................................... 12
6.1
HDFS容量の効率的活用 ................................................................................................ 12
6.2
処理時間の短縮 .............................................................................................................. 12
6.3
システム全体・運用の最適化............................................................................................. 12
Hadoop LZO 圧縮機能の検証
1 はじめに
日立ソリューションズでは、オープンソース分散処理基盤「Apache Hadoop」(以下、「Hadoop」)の導入をご検討されて
いるお客様向けに、実機検証/アセスメント支援から、構築・運用時における環境構築/アプリケーション開発、製品保
守サポートまでワンストップでのサービスをご提供しています。
この度、Hadoop 関連技術・ノウハウ蓄積の一環として、LZO 圧縮を使用した動作検証を実施しました。
本書では、この動作検証の背景・目的から、検証結果について纏めます。
1.1 検証の目的
HDFS に格納するデータの圧縮による効果と目的を以下に示します。

HDFS 容量の効率的活用
格納するファイルを圧縮し、クラスタ全体のハードディスク容量を効率的に活用することで、よりおおくのデ
ータを HDFS に格納できることが期待されます。(【図 1.1】)

処理時間の短縮
Hadoop で処理を行うデータサイズが圧縮により小さくなるため、インポート/エクスポート時間および
Map/Reduce 処理時間の短縮が期待できます。データサイズの縮小は、ネットワーク帯域の効率的活用にも
つながります。
上記のパフォーマンス向上、および Hadoop を使用したデータ処理時間の全体的な短縮が実際に可能かを確
認するため、マスタ・スレーブノート計 12 台の検証環境を作成し動作検証を行いました。
【図 1.1】
1.2 圧縮形式
圧縮形式には、gzipやbzip2 など様々な形式がありますが、今回の検証ではApache Hadoop 0.20 系のバージョ
ンでMap/Reduceのスプリット機能を早い段階からサポートしているLZO形式 1に注目し検証しました。Hadoopの
LZO対応ライブラリは、GPLライセンスであるため、Apache Hadoop 0.20.203 には同梱されていません。Hadoopを
LZO圧縮データに対応させるためには、別途ソース 2を入手し設定を行う必要があります。
1
今回の検証で利用したパッケージは lzo-2.03-3.1.el6.x86_64(及び関連するパッケージ)です。
2
詳細は、http://wiki.apache.org/hadoop/UsingLzoCompression を参照下さい。
All rights reserved, ©2012, Hitachi Solutions, Ltd.
3
2 検証作業概要
本章では、Hadoop で LZO 圧縮されたデータを使用する際の簡単な説明、および検証の観点や検証作業の流
れなど実施した検証について記載します。
2.1 LZO 圧縮の使用の流れ
LZO 圧縮を使用する場合は、HDFS にデータをインポートした後、Map/Reduce 処理がスプリットに対応できるよ
う、インデックスファイルを作成する必要があります。データの流れを【図 2.1】に示します。
【図 2.1】
①
圧縮
LZO を使用して、データの圧縮を行います。
②
インポート
①で圧縮したデータを HDFS へインポートします。
③
インデックスファイルの生成
hadoop コマンドを使用して、インデックスファイルを生成します。コマンドの例を以下に示します。
hadoop jar ${JAR_PATH}/hadoop-lzo-X.X.X.jar com.hadoop.compression.lzo.DistributedLzoIndexer /lzo_files
④
Map/Reduce 処理
圧縮ファイルおよびインデックスファイルをインプットデータとして Map/Reduce 処理を実行します。
2.2 検証の観点
今回の検証では主に HDFS 使用量と処理時間に着目し、非圧縮時と圧縮時の比較を行いました。具体的には、
圧縮を利用した場合の HDFS 使用量と、以下の【表 2.1】に示す各処理における処理時間を測定し、比較しまし
た。
【表 2.1】
♯
区分
1 インポート
2 インデックスファイル作成
3 Map/Reduce 処理の実行
非圧縮時
○
○
圧縮時
○
○
○
備考
○:測定
4
-:非該当
Hadoop LZO 圧縮機能の検証
3 検証環境
本章では、検証環境の詳細について記載します。
3.1 システム構成
本検証用に構築した環境のシステム構成は、【図 3.1】の通りです。
【図 3.1】
3.2 システム構成詳細
利用した検証環境のマシンやバージョン等は【表 3.1】の通りです。
【表 3.1】
♯
1
2
3 HW
4
項目
機種
CPU
メモリ
HDD
5
6
7
OS
JDK
8
Hadoop
内容
Hitachi HA8000-bd/BD10
Intel(R) Core(TM) i5 CPU
DDR3 SDRAM(PC3-8500) 4GB
マスタ系ノード・Client
500GB
スレーブノード
750GB
CentOS 6.1
1.6.0_27
Hadoop 0.20.203.0
設定は、基本的にデフォルト。
(レプリケーション数:3)
3.3 検証用データと Map/Reduce アプリケーション
約 100GB 3のデータを用意し、ターゲットレコード(TARGETID)を検索するMap/Reduceアプリを使用しました。
データのレコード形式(サンプル)を以下に示します。
1970/01/01 09:00:00,user-415,AAAAAAAAAAAAAAAAAAAA-10.0.55.51:17337
1970/01/01 09:33:19,TARGETID,AAAAAAAAAAAAAAAAAAAA-10.0.12.58:16114
3
データサイズは、約 10GB×10 ファイル=約 100GB です。レコード数は、158,540,014 件×10(ファイル数)=計 1,585,400,140 件で、その中
にターゲットレコードは 14×10(ファイル数)=140 件含まれています。
All rights reserved, ©2012, Hitachi Solutions, Ltd.
5
4 検証結果
本章では、検証結果について記載します。
4.1 HDFS 使用量
LZO 圧縮を使用して約 100GB のデータを圧縮したところ、約 22GB となり 22%まで圧縮されました。
Hadoopコマンド 4を使用して、Hadoopに認識されているHDFSの使用容量を取得したところ、【表 4.1】の結果とな
りました。今回の検証では、レプリケーション数をデフォルトの 3 に設定してあるため、インポート後のデータ量が約
3 倍の値になっています。
【表 4.1】
♯
項目
1
Configured Capacity(GB)
2
DFS Used(GB)
3
DFS Used(%)
非圧縮
6853 GB
302 GB
5 %
圧縮
6853 GB
65 GB
1 %
備考
約 79% 削減
データインポート後の HDFS 使用量を平均値でグラフにしたところ、【図 4.1】のようになりました。
【図 4.1】
上記のデータから以下のことが分かります。

4
6
HDFS の使用量が LZO 圧縮を使用することで、非圧縮時にくらべて 5 分の1に縮小されている。
“hadoop dfsadmin –report”コマンドで取得したデータです。(5 回計測の平均値)
Hadoop LZO 圧縮機能の検証
4.2 処理時間
各処理時間は【表 4.2】 5、および【表 4.3】の結果となりました。
【表 4.2】
♯
区分
1 インポート
2 インデックスファイル作成
3 Map/Reduce 処理の実行
合計
【表 4.3】
♯
区分
1
インポート
2
インデックスファイル作成
3
Map/Reduce 処理の実行
0:16:47
圧縮
0:06:56
0:06:01
0:10:21
備考
21 分 48 秒 削減
6 分 01 秒 追加
6 分 26 秒 削減
0:45:31
0:23:18
22 分 13 秒 削減 (49%削減)
非圧縮
0:28:44
ケース
非圧縮
圧縮
非圧縮
圧縮
非圧縮
圧縮
1回目
0:28:48
0:06:40
0:05:54
0:16:45
0:10:19
2回目
0:28:47
0:06:30
0:06:03
0:16:50
0:10:22
3回目
0:28:23
0:06:32
0:06:00
0:16:44
0:10:22
4回目
0:28:33
0:07:11
0:06:08
0:16:54
0:10:19
5回目
0:29:07
0:07:48
0:06:00
0:16:44
0:10:22
平均
0:28:44
0:06:56
0:06:01
0:16:47
0:10:21
Map/Reduce 処理時間を平均時間でグラフにしたところ、【図 4.2】のようになりました。
【図 4.2】
上記の結果から、以下のことがわかります。

5
Map/Reduce 処理時間が、LZO 圧縮を使用することで非圧縮時の約 60%まで短縮されている。
圧縮・非圧縮時で、それぞれ5回連続で実施して取得したデータです。
All rights reserved, ©2012, Hitachi Solutions, Ltd.
7
4.3 Map/Reduce 処理時間の i/o wait 率
Map/Reduce処理中の、各スレーブノードのCPUにおけるi/o wait率 6は、【表 4.4】の様な結果となりました。なお、
【表 4.4】は、サンプルとして 1 回目の測定値を表にまとめたものです。2-5 回の測定値も同様の値です。
【表 4.4】
♯ slave 毎の i/o wait
1
001
2
002
3
003
4
004
5
005
6
006
7
007
8
008
9
009
10
010
非圧縮
5.56 %
4.46 %
5.32 %
4.17 %
4.75 %
4.62 %
4.68 %
3.46 %
4.30 %
5.20 %
圧縮
1.42 %
1.11 %
1.34 %
1.43 %
1.14 %
1.23 %
1.37 %
1.22 %
1.18 %
1.17 %
平均
4.65 %
1.26 %
備考
73%改善
i/o wait 率をグラフにしたところ、以下の【図 4.3】のようになりました。
【図 4.3】
上記の結果から以下のことが分かります。

6
8
Map/Reduce 処理における i/o wait が、LZO 圧縮を使用することで非圧縮時の約 27%まで小さくなっている。
sysstat の sar コマンドで取得した%iowait の値です。
Hadoop LZO 圧縮機能の検証
4.4 参考情報(データ圧縮処理時間)
今回の検証で、データを LZO 形式で圧縮しました。圧縮時間は、ハードウェアのスペックに大きく依存する為、
参考値として結果を【表 4.5】に示します。
【表 4.5】
♯
1
区分
圧縮時間
1回目
2回目
3回目
平均
0:20:28
0:20:31
0:20:11
0:20:23
データ圧縮に利用したマシンやバージョン等は【表 4.6】の通りです。
【表 4.6】
♯
1
2
HW
3
4
5 OS
項目
機種
CPU
メモリ
HDD
All rights reserved, ©2012, Hitachi Solutions, Ltd.
内容
Hitachi HA8000 TS20AJ
Xeon X5570 x 2 (Quad Core 2.93Hz)
DDR3-1333(PC3-10600) 48GB(8GBx6)
SAS 300GB x 8 RAID5(7D1P) LSIMegaRAID
CentOS 6.1
9
5 考察
本章では、検証によって得られたデータに対する考察を記載します。
5.1 圧縮時間
【表 4.2】のデータから、今回の検証環境においてインポートからMap/Reduce処理の実行までの平均時間の和
を比較すると、非圧縮時が 45 分 31 秒、圧縮時が 23 分 18 秒と約 1/2となり、【図 5.1】のように処理時間短縮効果
を得ることができています。
【図 5.1】
なお、4.4 章の参考値を利用し、クライアントでのデータ圧縮時間まで含めたトータル時間は 43 分 41 秒となり、
非圧縮時の 45 分 31 秒に対し、5%程度の時間短縮となります。データ圧縮処理は、ハードウェアスペックに大きく
依存します。高性能なマシンを用いる事で、全体処理時間をより短縮する効果は期待できます。【図 5.2】
【図 5.2】
圧縮時間 (参考値での仮定)
10
Hadoop LZO 圧縮機能の検証
また、本検証のような検索システムの場合、圧縮、インポート、およびインデックスファイル作成は初
回のみ行われます。
検索処理(Map/Reduce 処理)のみが、用途に応じて複数回実行されるため、非常に大きな処理時間短縮
効果を期待することができます。
今回の検証環境において、10 回ターゲットレコードを検索した場合の処理時間比較を【図 5.3】に示し
ます。
【図 5.3】
All rights reserved, ©2012, Hitachi Solutions, Ltd.
11
6 結論
上記の検証結果および考察から、LZO 圧縮の使用に関して以下の結論を出しました。
6.1 HDFS 容量の効率的活用

LZO 圧縮の利用により、非使用時に比べ最大で約 5 倍のデータを格納でき、HDFS の効率的活用が可能と
なる。

HDD 容量のスケールアップや、Hadoop システムのスケールアウト以外のデータ格納容量の拡張手段の 1 つ
として、LZO 圧縮の利用が可能となる。利用方法や設定も、システム構成や運用に影響を与えにくく、容易で
ある。
6.2 処理時間の短縮

インポート処理から Map/Reduce 処理時間の短縮が期待できる。

全体的な処理時間で LZO 圧縮利用が有効か否かは、圧縮・解凍時間に依存する。圧縮時間は、マシン性
能の依存度が高い。
6.3 システム全体・運用の最適化

圧縮率の高いデータの場合、HDFS 容量・処理時間・システム全体の効率改善が得られ易い。また、データ
圧縮処理自体を高スペックのマシンで実施する事で、より高い改善が得られ易い。

HDFS 配置済データの再利用率が高いジョブ実行となる運用では、乗数的に効果を得られ易い。

データ自体のサイズ縮小により、インポート/エクスポート時などのネットワーク帯域の占有時間やトラフィック
をデータ縮小率相当低減することが可能となる。
以上
12
Hadoop LZO 圧縮機能の検証
Fly UP