1Copyright © 2014 NTT DATA Corporation
株式会社 NTTデータ
安達 仁
SQL on Hadoop の比較検証
~ Clouderaレポートを追試してみました ~
2Copyright © 2014 NTT DATA Corporation
自己紹介
 氏名
 安達 仁(あだち じん)
 email: adachij@nttdata.co.jp
 所属
 NTTデータ 基盤システム事業本部 OSSプロフェッショナルサービス
 OSSのサポートサービス、構築・運用支援を担当
- 徹底的に検証・評価したOSSの組み合わせ、設定・運用のノウハウの提供
- 高品質なシステム基盤を実現する仕組みの整備
- 幅広いOSSを対象とするプロフェッショナルサービスの提供
- NTT持株会社 OSSセンタとも連携
 NTTデータのHadoopソリューション
 2010年7月、Hadoopの構築・運用ソリューションを提供開始
- http://oss.nttdata.co.jp/hadoop/bxshs.html
- コンサルティング、評価支援、構築、サポート、教育
 所属部署には 「Hadoop徹底入門」「HADOOP HACKS」 の著者が複数在籍
- その片隅で働いてます。(^^ゞ
Copyright © 2014 NTT DATA Corporation 3
SQL on Hadoop
4Copyright © 2014 NTT DATA Corporation
SQL on Hadoop
 (今回の)SQL on Hadoopの定義
 たくさんのSQL on Hadoop
 Impala
- Clouderaが開発
- 2012/10にパブリックベータがリリースされており、SQL on Hadoopの走り
- 今回の主役?
 Presto
- Facebookが開発
- 2013/11に公開された新しいSQL on Hadoopで開発が活発
 Hive on Tez
- Hortonworksが主導
- Tez:YARN上で動作するFW
- 他のSQL on Hadoopと異なり、Hiveの後継
 その他、LinkedIn Tajo、MapR Drillなど
 Hadoop上で動作するSQL実行基盤
 低レイテンシなクエリ処理に使える
 HDFS上のデータを透過的に扱える
検証対象
5Copyright © 2014 NTT DATA Corporation
 ベンダが提示するベンチマークの結果は信用できないものが多い
 特殊なチューニング
 自社に有利な検証環境
 リソース情報なし
 Impala
 「TPC-DSのクエリ全体平均で、Hiveの24倍速い」(*1)
 Presto
 「Hiveの10倍速い」(*2)
 Hive on Tez
 「TPC-DSのインタラクティブクエリ平均で、Hiveの66倍速い」(*3)
検証の経緯
謳い文句どおりか追試してみました
*1 http://blog.cloudera.com/blog/2014/01/impala-performance-dbms-class-speed
*2 https://www.facebook.com/notes/facebook-engineering/presto-interacting-with-petabytes-of-data-at-facebook/10151786197628920
*3 http://hortonworks.com/blog/benchmarking-apache-hive-13-enterprise-hadoop
本当?
6Copyright © 2014 NTT DATA Corporation
 単に追試するだけでなく、以下の項目を追加した
 データサイズを変えて検証
- 数GB~数TB
 リソースの使用状況を取得
- CPU、メモリ、ネットワーク、HDD
 小規模クラスタ
 クエリの改修
 Impalaでしか動作しないクエリをPresto、 Hive on Tez向けに修正
- WHERE句でのJOINなど
 数100GBのデータロードに失敗する
- パーティションを分割してロードするスクリプトを作成
 ノーチューニング
 Cloudera Manager、Ambariの設定を使用
- ヒープサイズのみ変更
- ファイルフォーマット、圧縮形式はオススメを利用
– ImpalaはParquet(Snappy)、PrestoおよびHive on TezはORC(zlib)を使用
検証への追加
Tips
7Copyright © 2014 NTT DATA Corporation
検証環境(1/2)
 TPC-DSを使用したベンチマークを実施
 ClouderaのImpalaレポート(*1)が元ネタ
 大規模小売業のオペレーションを想定したクエリ
 データサイズを複数用意
 small(数GB)、medium(数10GB)、large(数100GB)、xlarge(数TB)
 ファイルフォーマット、圧縮形式によりサイズが異なる
 ハードウェア構成
 マスタ x1、スレーブ x3、クライアント x1
 スペックはすべて同じ
種別 型番
マシン Dell PowerEdge R520
CPU Xeon(R) CPU E5-2407 @ 2.20GHz x 2
メモリ DIMM DDR3 Synchronous 1333 MHz 8GB x 8
ディスク Western Digital WD2000FYYX 2TB x 4
ネットワーク Intel Ethernet Controller 10-Gigabit X540-AT2
*1 http://blog.cloudera.com/blog/2014/05/new-sql-choices-in-the-apache-hadoop-ecosystem-why-impala-continues-to-lead/
8Copyright © 2014 NTT DATA Corporation
検証環境(2/2)
 ソフトウェア構成
 Impala、Presto
 Hive on Tez
 Hadoopディストリビューションは複数使用
 ImpalaはCDH 5.0に付属
 PrestoはCDHと組み合わせて動作させる
 Hive on TezはHDP 2.1に付属
 Tezの利用にHive 0.13が必須のため
ソフトウェア バージョン ファイルフォーマット 圧縮形式
CDH 5.0.2 - -
Hive(比較元) 0.12 ORC zlib
Impala 1.3.1 Parquet Snappy
Presto 0.69 ORC zlib
ソフトウェア バージョン ファイルフォーマット 圧縮形式
HDP 2.1.4 - -
Hive 0.13 ORC zlib
Tez 0.4 - -
Copyright © 2014 NTT DATA Corporation 9
性能検証
10Copyright © 2014 NTT DATA Corporation
はじめに
 ベンチマーク
 TPC-DSはオンライン処理のベンチマーク
 検証の趣旨と合致するが、ETLでは結果が異なることが予想される
 HWのスペック
 Impalaのことを考えるなら、メモリをもっと積んだほうがよい
 しかし、Hadoopに合わせるなら、64GBは妥当なところでは
 ディスク容量の都合で、TB以上の検証ができていない
 SWのバージョン
 各プロダクトのバージョンが若干古い(すみません...)
 CDH 5.2でImpala 2.0が入った
 Prestoは週替りのリリースで0.79まで進んだ
 HDP 2.2のリリースがそろそろ。Hive 0.14、Tez 0.60が入る
各プロダクトとも活発に開発が進められているため、
すぐに検証結果が古くなる
[参考]Impalaレポートは
384GB
11Copyright © 2014 NTT DATA Corporation
性能検証(1/4)
 ベンチマーク結果(small)
 Parquet+Snappy:5.1GB、ORC+zlib:3.4GB
 メモリに乗るサイズ
 全クエリ中央値の速度比較(対Hive)
 Impala:34.0倍
 Presto:11.7倍
 Tez:2.1倍
いずれも速い
0
50
100
150
200
250
300
350
400
Hive(ORC)
Impala(Parquet)
Presto(ORC)
Hive on Tez(ORC)
単位:秒
12Copyright © 2014 NTT DATA Corporation
性能検証(2/4)
 ベンチマーク結果(medium)
 Parquet+Snappy:47.9GB、ORC+zlib:33.6GB
 メモリに乗るサイズ
 全クエリ中央値の速度比較(対Hive)
 Impala:21.9倍
 Presto:3.3倍
 Tez:2.9倍 smallより速い
0
500
1000
1500
2000
2500
3000
3500
4000
Hive(ORC)
Impala(Parquet)
Presto(ORC)
Hive on Tez(ORC)
極端に遅い
(※後述)
smallより遅い
単位:秒
13Copyright © 2014 NTT DATA Corporation
性能検証(3/4)
 ベンチマーク結果(large)
 Parquet+Snappy:433.1GB、ORC+zlib:335.9GB
 メモリに乗らないサイズ
 全クエリ中央値の速度比較(対Hive)
 Impala:12.7倍
 Presto:2.0倍(※成功したクエリのみ)
 Tez:2.6倍
mediumより遅い
smallより速い
0
1000
2000
3000
4000
5000
6000
7000
Hive(ORC)
Impala(Parquet)
Presto(ORC)
Hive on Tez(ORC)
q3、q19、q43、q53、
q63、q65、q89でクエリ
失敗
単位:秒
14Copyright © 2014 NTT DATA Corporation
性能検証(4/4)
 ベンチマーク結果(xlarge)
 Parquet+Snappy:1.2TB、ORC+zlib:1TB
 メモリに乗らないサイズ
 全クエリ合計時間の速度比較(対Hive)
 Impala:9.3倍
 Presto:0.9倍(※成功したクエリのみ)
 Tez:2.3倍
largeより遅い
安定した速度
0
2000
4000
6000
8000
10000
12000
14000
16000
Hive(ORC)
Impala(Parquet)
Presto(ORC)
Hive on Tez(ORC)
q3、q19、q42、q43、
q52、q53、q55、q63、
q89でクエリ失敗
Hiveより遅い
単位:秒
15Copyright © 2014 NTT DATA Corporation
性能検証(まとめ)
 ベンチマーク結果
 対Hiveの速度比(サイズ別全クエリ平均)
 Impara、Prestoは確かに速いが...
 データサイズの増加に合わせて、パフォーマンスが劣化する(※後述)
 Prestoは最小のデータサイズでのみ、パフォーマンスがよい
 Hive on Tezはデータサイズによらず一定のパフォーマンスを発揮している
0.0倍
5.0倍
10.0倍
15.0倍
20.0倍
25.0倍
30.0倍
35.0倍
small medium large xlarge
Hive
Impala
Presto
Tez
Copyright © 2014 NTT DATA Corporation 16
リソース検証
17Copyright © 2014 NTT DATA Corporation
Impalaが遅くなるパターン
 リソース利用状況(largeとxlargeのq59)
 スワップが発生してパフォーマンスが劣化している
 CPU、メモリ
 100%使い切る。が、Impalaでは通常の動作
 スワップ
 largeとxlarge(メモリに乗り切らないサイズ)で発生する
 HDD、ネットワークは問題なし
xlargeのスワップlargeのスワップ
xlargeのCPU xlargeのメモリ
18Copyright © 2014 NTT DATA Corporation
Prestoが極端に遅くなるパターン
 リソース利用状況(medium、q65)
 完全にリソースを使い切った場合はクエリが失敗するが、遅くなりながら完走する
 CPU
 使用率が10%から100%を上下する
 ネットワーク
 マスタのネットワークが3~5MB/秒を上下する
 スレーブのネットワークは問題なし
 メモリ、HDD、スワップは問題なし
CPU使用率が乱
高下
マスタのネットワークが
乱高下
19Copyright © 2014 NTT DATA Corporation
 リソース利用状況(xlarge、q65)
 small~xlargeまでCPU、メモリ、HDD、ネットワークをまんべんなく使う
 CPU、メモリ
 使用率は100%付近
 HDD、ネットワーク
 理論値の20~40%程度
 ネットワークの負荷は終盤に集中
Hive on Tezはデータサイズによらない
xlargeのCPU xlargeのメモリ
xlargeのHDD xlargeのネットワーク
20Copyright © 2014 NTT DATA Corporation
まとめ
 Impala、Presto、Hive on Tezを比較した
 Impala
 今回の検証結果では最もよい結果となった
 データサイズが大きくなるとメモリに乗るサイズでも性能が落ちる
 Impala 2.0の「spill to disk」に期待
 Presto
 今回は残念な結果となった
 データサイズが総メモリ量を超えると動作しないクエリが出てくる
 頻繁なアップデート(2週間に1回程度)があるので将来に期待
 Hive on Tez
 安定したパフォーマンスを発揮した
 対障害性などHiveの特徴を引き継ぎながら、数倍の性能向上
 ただ、データサイズが小さい時はもっと速くなってほしい
 CBO(コストベースオプティマイザ)を有効にするなど、少しのチューニングで大きく伸
びるかも
Copyright © 2011 NTT DATA Corporation
Copyright © 2014 NTT DATA Corporation
お問い合わせ先:
株式会社NTTデータ 基盤システム事業本部
OSSプロフェッショナルサービス
URL: http://oss.nttdata.co.jp/hadoop
メール: hadoop@kits.nttdata.co.jp TEL: 050-5546-2496

SQL on Hadoop 比較検証 【2014月11日における検証レポート】

  • 1.
    1Copyright © 2014NTT DATA Corporation 株式会社 NTTデータ 安達 仁 SQL on Hadoop の比較検証 ~ Clouderaレポートを追試してみました ~
  • 2.
    2Copyright © 2014NTT DATA Corporation 自己紹介  氏名  安達 仁(あだち じん)  email: adachij@nttdata.co.jp  所属  NTTデータ 基盤システム事業本部 OSSプロフェッショナルサービス  OSSのサポートサービス、構築・運用支援を担当 - 徹底的に検証・評価したOSSの組み合わせ、設定・運用のノウハウの提供 - 高品質なシステム基盤を実現する仕組みの整備 - 幅広いOSSを対象とするプロフェッショナルサービスの提供 - NTT持株会社 OSSセンタとも連携  NTTデータのHadoopソリューション  2010年7月、Hadoopの構築・運用ソリューションを提供開始 - http://oss.nttdata.co.jp/hadoop/bxshs.html - コンサルティング、評価支援、構築、サポート、教育  所属部署には 「Hadoop徹底入門」「HADOOP HACKS」 の著者が複数在籍 - その片隅で働いてます。(^^ゞ
  • 3.
    Copyright © 2014NTT DATA Corporation 3 SQL on Hadoop
  • 4.
    4Copyright © 2014NTT DATA Corporation SQL on Hadoop  (今回の)SQL on Hadoopの定義  たくさんのSQL on Hadoop  Impala - Clouderaが開発 - 2012/10にパブリックベータがリリースされており、SQL on Hadoopの走り - 今回の主役?  Presto - Facebookが開発 - 2013/11に公開された新しいSQL on Hadoopで開発が活発  Hive on Tez - Hortonworksが主導 - Tez:YARN上で動作するFW - 他のSQL on Hadoopと異なり、Hiveの後継  その他、LinkedIn Tajo、MapR Drillなど  Hadoop上で動作するSQL実行基盤  低レイテンシなクエリ処理に使える  HDFS上のデータを透過的に扱える 検証対象
  • 5.
    5Copyright © 2014NTT DATA Corporation  ベンダが提示するベンチマークの結果は信用できないものが多い  特殊なチューニング  自社に有利な検証環境  リソース情報なし  Impala  「TPC-DSのクエリ全体平均で、Hiveの24倍速い」(*1)  Presto  「Hiveの10倍速い」(*2)  Hive on Tez  「TPC-DSのインタラクティブクエリ平均で、Hiveの66倍速い」(*3) 検証の経緯 謳い文句どおりか追試してみました *1 http://blog.cloudera.com/blog/2014/01/impala-performance-dbms-class-speed *2 https://www.facebook.com/notes/facebook-engineering/presto-interacting-with-petabytes-of-data-at-facebook/10151786197628920 *3 http://hortonworks.com/blog/benchmarking-apache-hive-13-enterprise-hadoop 本当?
  • 6.
    6Copyright © 2014NTT DATA Corporation  単に追試するだけでなく、以下の項目を追加した  データサイズを変えて検証 - 数GB~数TB  リソースの使用状況を取得 - CPU、メモリ、ネットワーク、HDD  小規模クラスタ  クエリの改修  Impalaでしか動作しないクエリをPresto、 Hive on Tez向けに修正 - WHERE句でのJOINなど  数100GBのデータロードに失敗する - パーティションを分割してロードするスクリプトを作成  ノーチューニング  Cloudera Manager、Ambariの設定を使用 - ヒープサイズのみ変更 - ファイルフォーマット、圧縮形式はオススメを利用 – ImpalaはParquet(Snappy)、PrestoおよびHive on TezはORC(zlib)を使用 検証への追加 Tips
  • 7.
    7Copyright © 2014NTT DATA Corporation 検証環境(1/2)  TPC-DSを使用したベンチマークを実施  ClouderaのImpalaレポート(*1)が元ネタ  大規模小売業のオペレーションを想定したクエリ  データサイズを複数用意  small(数GB)、medium(数10GB)、large(数100GB)、xlarge(数TB)  ファイルフォーマット、圧縮形式によりサイズが異なる  ハードウェア構成  マスタ x1、スレーブ x3、クライアント x1  スペックはすべて同じ 種別 型番 マシン Dell PowerEdge R520 CPU Xeon(R) CPU E5-2407 @ 2.20GHz x 2 メモリ DIMM DDR3 Synchronous 1333 MHz 8GB x 8 ディスク Western Digital WD2000FYYX 2TB x 4 ネットワーク Intel Ethernet Controller 10-Gigabit X540-AT2 *1 http://blog.cloudera.com/blog/2014/05/new-sql-choices-in-the-apache-hadoop-ecosystem-why-impala-continues-to-lead/
  • 8.
    8Copyright © 2014NTT DATA Corporation 検証環境(2/2)  ソフトウェア構成  Impala、Presto  Hive on Tez  Hadoopディストリビューションは複数使用  ImpalaはCDH 5.0に付属  PrestoはCDHと組み合わせて動作させる  Hive on TezはHDP 2.1に付属  Tezの利用にHive 0.13が必須のため ソフトウェア バージョン ファイルフォーマット 圧縮形式 CDH 5.0.2 - - Hive(比較元) 0.12 ORC zlib Impala 1.3.1 Parquet Snappy Presto 0.69 ORC zlib ソフトウェア バージョン ファイルフォーマット 圧縮形式 HDP 2.1.4 - - Hive 0.13 ORC zlib Tez 0.4 - -
  • 9.
    Copyright © 2014NTT DATA Corporation 9 性能検証
  • 10.
    10Copyright © 2014NTT DATA Corporation はじめに  ベンチマーク  TPC-DSはオンライン処理のベンチマーク  検証の趣旨と合致するが、ETLでは結果が異なることが予想される  HWのスペック  Impalaのことを考えるなら、メモリをもっと積んだほうがよい  しかし、Hadoopに合わせるなら、64GBは妥当なところでは  ディスク容量の都合で、TB以上の検証ができていない  SWのバージョン  各プロダクトのバージョンが若干古い(すみません...)  CDH 5.2でImpala 2.0が入った  Prestoは週替りのリリースで0.79まで進んだ  HDP 2.2のリリースがそろそろ。Hive 0.14、Tez 0.60が入る 各プロダクトとも活発に開発が進められているため、 すぐに検証結果が古くなる [参考]Impalaレポートは 384GB
  • 11.
    11Copyright © 2014NTT DATA Corporation 性能検証(1/4)  ベンチマーク結果(small)  Parquet+Snappy:5.1GB、ORC+zlib:3.4GB  メモリに乗るサイズ  全クエリ中央値の速度比較(対Hive)  Impala:34.0倍  Presto:11.7倍  Tez:2.1倍 いずれも速い 0 50 100 150 200 250 300 350 400 Hive(ORC) Impala(Parquet) Presto(ORC) Hive on Tez(ORC) 単位:秒
  • 12.
    12Copyright © 2014NTT DATA Corporation 性能検証(2/4)  ベンチマーク結果(medium)  Parquet+Snappy:47.9GB、ORC+zlib:33.6GB  メモリに乗るサイズ  全クエリ中央値の速度比較(対Hive)  Impala:21.9倍  Presto:3.3倍  Tez:2.9倍 smallより速い 0 500 1000 1500 2000 2500 3000 3500 4000 Hive(ORC) Impala(Parquet) Presto(ORC) Hive on Tez(ORC) 極端に遅い (※後述) smallより遅い 単位:秒
  • 13.
    13Copyright © 2014NTT DATA Corporation 性能検証(3/4)  ベンチマーク結果(large)  Parquet+Snappy:433.1GB、ORC+zlib:335.9GB  メモリに乗らないサイズ  全クエリ中央値の速度比較(対Hive)  Impala:12.7倍  Presto:2.0倍(※成功したクエリのみ)  Tez:2.6倍 mediumより遅い smallより速い 0 1000 2000 3000 4000 5000 6000 7000 Hive(ORC) Impala(Parquet) Presto(ORC) Hive on Tez(ORC) q3、q19、q43、q53、 q63、q65、q89でクエリ 失敗 単位:秒
  • 14.
    14Copyright © 2014NTT DATA Corporation 性能検証(4/4)  ベンチマーク結果(xlarge)  Parquet+Snappy:1.2TB、ORC+zlib:1TB  メモリに乗らないサイズ  全クエリ合計時間の速度比較(対Hive)  Impala:9.3倍  Presto:0.9倍(※成功したクエリのみ)  Tez:2.3倍 largeより遅い 安定した速度 0 2000 4000 6000 8000 10000 12000 14000 16000 Hive(ORC) Impala(Parquet) Presto(ORC) Hive on Tez(ORC) q3、q19、q42、q43、 q52、q53、q55、q63、 q89でクエリ失敗 Hiveより遅い 単位:秒
  • 15.
    15Copyright © 2014NTT DATA Corporation 性能検証(まとめ)  ベンチマーク結果  対Hiveの速度比(サイズ別全クエリ平均)  Impara、Prestoは確かに速いが...  データサイズの増加に合わせて、パフォーマンスが劣化する(※後述)  Prestoは最小のデータサイズでのみ、パフォーマンスがよい  Hive on Tezはデータサイズによらず一定のパフォーマンスを発揮している 0.0倍 5.0倍 10.0倍 15.0倍 20.0倍 25.0倍 30.0倍 35.0倍 small medium large xlarge Hive Impala Presto Tez
  • 16.
    Copyright © 2014NTT DATA Corporation 16 リソース検証
  • 17.
    17Copyright © 2014NTT DATA Corporation Impalaが遅くなるパターン  リソース利用状況(largeとxlargeのq59)  スワップが発生してパフォーマンスが劣化している  CPU、メモリ  100%使い切る。が、Impalaでは通常の動作  スワップ  largeとxlarge(メモリに乗り切らないサイズ)で発生する  HDD、ネットワークは問題なし xlargeのスワップlargeのスワップ xlargeのCPU xlargeのメモリ
  • 18.
    18Copyright © 2014NTT DATA Corporation Prestoが極端に遅くなるパターン  リソース利用状況(medium、q65)  完全にリソースを使い切った場合はクエリが失敗するが、遅くなりながら完走する  CPU  使用率が10%から100%を上下する  ネットワーク  マスタのネットワークが3~5MB/秒を上下する  スレーブのネットワークは問題なし  メモリ、HDD、スワップは問題なし CPU使用率が乱 高下 マスタのネットワークが 乱高下
  • 19.
    19Copyright © 2014NTT DATA Corporation  リソース利用状況(xlarge、q65)  small~xlargeまでCPU、メモリ、HDD、ネットワークをまんべんなく使う  CPU、メモリ  使用率は100%付近  HDD、ネットワーク  理論値の20~40%程度  ネットワークの負荷は終盤に集中 Hive on Tezはデータサイズによらない xlargeのCPU xlargeのメモリ xlargeのHDD xlargeのネットワーク
  • 20.
    20Copyright © 2014NTT DATA Corporation まとめ  Impala、Presto、Hive on Tezを比較した  Impala  今回の検証結果では最もよい結果となった  データサイズが大きくなるとメモリに乗るサイズでも性能が落ちる  Impala 2.0の「spill to disk」に期待  Presto  今回は残念な結果となった  データサイズが総メモリ量を超えると動作しないクエリが出てくる  頻繁なアップデート(2週間に1回程度)があるので将来に期待  Hive on Tez  安定したパフォーマンスを発揮した  対障害性などHiveの特徴を引き継ぎながら、数倍の性能向上  ただ、データサイズが小さい時はもっと速くなってほしい  CBO(コストベースオプティマイザ)を有効にするなど、少しのチューニングで大きく伸 びるかも
  • 21.
    Copyright © 2011NTT DATA Corporation Copyright © 2014 NTT DATA Corporation お問い合わせ先: 株式会社NTTデータ 基盤システム事業本部 OSSプロフェッショナルサービス URL: http://oss.nttdata.co.jp/hadoop メール: hadoop@kits.nttdata.co.jp TEL: 050-5546-2496