Comments
Description
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 圧縮機能の検証