Cloudera impalaの性能評価 (Hiveとの比較) 2012年11月2日 株式会社セラン R&D戦略室 須田幸憲 @sudabon
Jun 14, 2015
Cloudera impalaの性能評価(Hiveとの比較)
2012年11月2日 株式会社セラン R&D戦略室
須田幸憲 @sudabon
はじめに � 「impalaがHadoop MapReduceのHiveより1桁速い」(※)と聞
いて、普段業務にて使用しているHiveより本当に速いのかを検証した
� 普段の業務では… � CDH3でHadoopクラスタを構築 � WebのアクセスログをSnappyで圧縮してRCFileでHDFSに保存 � Map処理出力とReduce処理出力も共にSnappyで圧縮 � Thriftサービス経由でPHPからHiveでクエリを実行
※出典 Cloudera Impala:Apache Hadoopで実現する、リアルのためのリアルタイムクエリ
impala(v0.1.1)の概要 � Cloudera社が開発したGoogle Dremelのオープンソース版
� リアルタイムなアドホッククエリをHadoop上で実行できる
� HDFSあるいはHBaseに保存されているデータが対象
� HiveQLと互換のクエリ言語をサポート
� ストレージエンジンとしてはTextFileとSequenceFileのみ
� SequenceFileはSnappy、Gzip、Bzip2で圧縮可能
� MapReduceではなく、専用の分散クエリエンジンを使用
評価環境 � Cloudera Manager Free Edition 4.1.0
スレーブ4台 マスター1台
・HDFS NameNode SecondaryNameNode
・MapReduce JobTracker
・impala impalad Impala-state-store
・HDFS DataNode
・MapReduce TaskTracker
・impala impalad
サーバの仕様 � CPU
� 合計2コアのIntel Xeon 1.6GHz(HTあり)
� メモリ � 4GB
� ディスク � SASドライブ(rpmは不明)
� OS � CentOS 6.2
評価方法 � クエリの応答時間比較
� Hiveシェルとimpalaシェルでそれぞれ5回実行した平均値
� クエリで処理するデータ � 約6,500万行のWebのアクセスログ(8ヶ月分) � 日付でパーティショニング � カラム数は14個
評価内容 � 使用したクエリ
� SELECT count(*) FROM table_name
� パラメータ � ストレージフォーマット形式
� TextFile、SequenceFile、RCFile(Hiveのみ)
� 保存ファイルの圧縮形式 � Gzip、Snappy
� MapReduce処理出力データの圧縮形式 � Gzip、Snappy
対象データ � 任意の1日分のファイルサイズ
ファイル圧縮 TextFile SequnceFile RCFile
非圧縮 37.88 MB (100 %)
40.69 MB (107.4 %)
36.01 MB (95.1 %)
Gzip 2.47 MB (6.5 %)
3.07 MB (8.1 %)
2.84 MB (7.5 %)
Snappy 6.72 MB (17.7 %)
7.49 MB (19.8 %)
6.00 MB (15.8 %)
評価結果(MR + Hive)
ファイル圧縮 MR出力圧縮 TextFile SequenceFile RCFile
非圧縮 非圧縮 135.913 (100 %)
157.042 (116 %)
126.626 (93.2 %)
Gzip Gzip 238.876 (176 %)
169.675 (125 %)
計測不可
Snappy Snappy 239.201 (176 %)
65.055 (47.9 %)
57.173 (42.1 %)
� 単位は秒
ターゲットタイムは 57.173 秒
評価結果(impala)
ファイル圧縮 TextFile SequenceFile
非圧縮 73.422 (54.0 %)
88.422 (65.1 %)
Gzip 計測なし 8.284 (6.1 %)
Snappy 計測なし 15.099 (11.1 %)
� 単位は秒
� 最速平均値はGzipの場合で 8.284 秒
� ちなみにGzipの最速実測値は 7.232 秒
まとめ � 「impalaはHiveより1桁速く処理できる」は正しかった
snappyで圧縮されたRCFileをHiveで処理すると約57秒
gzipで圧縮されたSequenceFileをimpalaで処理すると約8秒
� 補足 � 仕様の詳細についてはリリースノートをご参照ください
Cloudera Impala 1.0 Beta Release Notes
追加評価
評価内容 � 使用したクエリ
� SELECT count(*) FROM table_name WHERE column = ‘xxxx’
� パラメータ � ストレージフォーマット形式
� Hive ⇒ RCFile � impala ⇒ SequenceFile
� 保存ファイルの圧縮形式 � Hive ⇒ Gzip � impala ⇒ Gzip、Snappy
� MapReduce処理出力データの圧縮形式(Hiveのみ) � Snappy
� Hive(単位は秒)
� impala(単位は秒)
� 文字列一致検索の処理時間も 約23% に短縮
評価結果
ファイル圧縮 MR出力圧縮 RCFile
Snappy Snappy 60.574 (100 %)
ファイル圧縮 SequenceFile
Gzip 22.960 (26.4 %)
Snappy 14.679 (23.2 %)
まとめ � 全数カウントだけでなく、文字列一致検索でも処理時間が
約1/4に短縮された snappyで圧縮されたRCFileをHiveで処理すると約61秒
snappyで圧縮されたSequenceFileをimpalaで処理すると約15秒
� ただし、全数カウントの場合はgzipで圧縮されたSequenceFileの場合が最速であったが、文字列一致検索の場合はgzipよりもsnappyで圧縮されたSequnceFileの方が速かった
フィードバック � 記載内容に不備等がございましたら、下記連絡先までご連
絡いただけますと、幸甚です。
� 質問等もお気軽にご連絡ください。可能な範囲で返信いたします。
� 連絡先 � メール: sudabon at gmail dot com
� Twitter: @sudabon
変更履歴 � 2012年11月2日 初版
� 2012年11月5日 追加評価を追記