SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
Apache Hive
Hadoop上のSub-second SQL
Yifeng Jiang
Solutions Engineer, Hortonworks Japan
2015/10/14	
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
Page 2 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
アジェンダ
•  Hiveユースケース#1: 超⼤量データの⾼並列処理
•  Hiveユースケース#2: Hive LLAPによるオンラインレポーティング
© Hortonworks Inc. 2015. All Rights Reserved
Hiveユースケース#1:
超大量データの高並列処理
Page 3 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
Page 4 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
ユースケース #1
バッチ レポーティング
超巨⼤なデータセット
•  13ヶ⽉、5千億⾏以上
•  毎⽇13億⾏が追加
⾼いスループットが求められます
•  ⼀⽇ 100,000 レポート
•  15,000クエリを1時間以内で完了しなけ
ればならない
Input Dataset
Page 5 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
Hiveチューニング
4つの Hive チューニング ポイント
•  パーティション
•  データロード
•  クエリ実⾏
•  並列のためのチューニング
Page 6 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
パーティション
パーティションの数を最⼤化
•  パフォーマンスにとって基本的かつ最も重
要なポイント
•  必要なデータのみ読込み
合計数千パーティション以下になるように
•  Hiveはクエリを早く処理するための適切
な数
CREATE TABLE access_logs (
host string,
path string,
referrer string,
…
) PARTITIONED BY (
site int,
ymd date
)
Page 7 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
データロード
データをORC形式のHiveテーブルにロード
3つの主なORCパラメータ
•  ファイルシステムのブロックサイズ:
256MB
•  ストライプサイズ: 64MB
•  圧縮: ZLIB
•  ZLIBは最近のHiveバージョンには⾼度に最適化さ
れている
Page 8 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
データロード
ORCファイルは⼗分に⼤きいことを確認
•  可能なら1〜10HDFSブロックぐらい
•  たくさんの reducers がすべてのパーティションへの書込みを避ける
•  Optimize sort dynamic partitioning を有効に
•  あるいは DISTRIBUTED BY 句を使う
•  細かいコントロールがきくため DISTRIBUTED BY を選んだ
INSERT INTO orc_sales PARTITION ( country ) SELECT FROM daily_sales
DISTRIBUTE BY country, gender;
Page 9 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
クエリ実⾏
クエリ実⾏は最終的⼀連の組合せ
•  クライアントの実⾏ [ 正しくやれば 0s ]
•  オプティマイゼーション [HiveServer2] [~ 0.1s]
•  HCatalog問合せ [Hcatalog, Metastore] [ hive 0.14 は⾮常に早い ]
•  Application Master 作成 [4-5s]
•  コンテナ割当 [3-5s]
•  クエリ実⾏
YARN and HDFS
HiveServer2
Server #1
Client
Running testing tool
N connections
N connections
Metastore Metastore DB
HiveServer2
Server #2
Tez
AM
Tez
Container
Tez
Container
…
Page 10 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
クエリ実⾏
コレクション作成がオーバヘッドが⾼い
•  1つのコレクション接続に⼤量のクエリを実⾏
•  標準なコレクション プールを利⽤
2つの HiveServer2 でクエリを分散
•  HiveServer2 が 8-15 queries/s でボトルネックになった
•  複数の HiveServer2 をAmbariからデプロイ
•  新しいバージョンではクエリの並列コンパイルを対応予定
Page 11 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
クエリ実⾏
Tezセッションの再利⽤と暖機運転
•  Tezセッションの再⽣成が5秒以上かかる
•  Tezセッション再利⽤を有効に
•  暖機運転による事前⽣成も可能
•  暖機運転を有効にした場合、フルスピードは実質的に⼀瞬で出せる
Tezコンテナの再利⽤
•  コンテナの作成は3秒かかる
•  コンテナ再利⽤を有効に。短い間キープする。
•  キーは100%利⽤率を実現しながらリソースを無駄にしない
Page 12 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
0
10
20
30
40
50
60
70
80
90
100
0
2
4
6
8
10
12
24 48 60 72 84 96 112 136 148 172 184 196 204 216 228
Queries Per Second
Cluster Utilization ( Memory )
並列処理のチューニング
実際のシナリオにとって最も重要なポイント
•  多くのチューニングに無視される場合が多いですが実に重要だ
•  多くの場合、単⼀のクエリは余分リソースの恩恵を受けるが、スループットが低減する
Tezメモリ設定が並列処理チューニングのキー
•  最適なTezメモリ設定で、クラスタのCPU利⽤率が 90% 以上に達成
Cluster UtilizationQueries Per
Second
Query
Concurrency
Page 13 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
HiveとImpalaと性能⽐較
Hive性能
•  殆どのSQLレスポンスが20秒以内
•  ⼤きいクエリは最⼤70秒
Impala性能
•  多くのSQLが30〜90秒かかった
•  ⼤きいクエリが10分間以上
•  並列度を上げた場合の性能低下が⼤きい
Benchmark Blog
Number of queries by response time
© Hortonworks Inc. 2015. All Rights Reserved
Hiveユースケース#2:
Hive LLAPによるオンラインレポーティング
Page 14 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
Page 15 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
Hive性能を振返ってみる
Hiveは早い: インタラクティブな応答
•  ベクトル化の SQL エンジン
•  Tez 実⾏エンジン
•  ORC カラム型ファイルフォーマット
•  コスト ベース オプティマイザ (COB)
Hive 0.10
バッチ処理 100-150x 速度アップ
Hive 0.14
インタラクティブ
処理
(5秒)
Page 16 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
Hiveユースケース#2
オンライン レポーティング
•  インタラクティブなオンライン レポート
•  巨⼤なデータセット
•  低レイテンシ:秒以下(sub-second)〜数秒(超巨⼤なデータの場合)
•  ⾼い並列度
Page 17 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
Hive LLAP
HDFS
LLAPプロセスが複数のノードに実⾏し、Tezタスクを加速させる
Node
Hive
Query
Node NodeNode Node
LLAP LLAP LLAP LLAP
LLAP = Live Long And Process
Page 18 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
Hive LLAP – 主な利点
パフォーマンスの利点
•  起動時間の短縮
•  データ キャッシュ
•  常時稼働のため最適化しやすい: JIT、 並列 I/O、 など
Page 19 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
LLAPクエリ実⾏
•  クライアントがHive Serverにクエリを投げ
る
•  Hiver Serverがクエリコンパイルや最適化を
行う
•  クエリ毎に1つのTez AMが独自してコー
ディネート
•  実際の処理はHiveオペレーターを利用
•  Tezコンテナは処理実行やデータ転送を行う
•  Hiveがクエリ フラグメントの実行場所を決
める (LLAP, Container, AM)
HiveServer
Query/AM
Controller
Client(s) YARN Cluster
AM1
llapd llapd
llapd
Container AM1
Container AM1
llapd
Container AM2
AM2
Page 20 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
実世界のLLAP パフォーマンス
0
10000
20000
1 3 5 7 9 11 13 15 17 19 21 23 25 27
⽇時集計クエリ
•  選んだレンジのなか、⼀⽇毎に1つの値を集計
•  平均実⾏時間:LLAP < Phoenix < Tez
Execution Time in Second
0
1
2
3
4
5
6
7
8
Average Tez Max Tez Average LLAP Max LLAP Average
Phoenix
Max Phoenix
One Day
One Week
One Month
One Year
SELECT account, yyyymmdd,
sum(total_imps),
sum(total_click),
...
FROM table_x
WHERE yyyymmdd >= xxx
AND yyyymmdd < xxx
AND account = xxx
...
GROUP BY account, yyyymmdd, ...;
Page 21 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
実世界のLLAP パフォーマンス
Execution Time in seconds over time range
0
5
10
15
20
25
Average Tez Max Tez Average LLAP Max LLAP
One Day
One Week
One Month
One Year
0
50
100
150
200
250
300
Average
Phoenix
Max
Phoenix
One Day
One Week
One Month
Max Phoenix
Phoenix takes a long time for large ranges
更に細かい集計
•  選んだレンジのなか、⽇付よりも細かい集計
•  すべてのクエリにLLAPが⼀番早い。Phoenixはデータセットが⼤きくなると遅くなる
Page 22 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
実世界のLLAP パフォーマンス
返す⾏数別のクエリ性能
•  LLAPは⾏数が少ない場合が著しく早い
•  Phoenixはスタートが良かったが、⼤きいデータセットの場合は⾮常に遅い
0
5
10
15
20
25
<100 100<1k 1k<10k 10k<100k >100k
Average Tez
Max Tez
Average LLAP
Max LLAP
0
50
100
150
200
250
300
Average Phoenix
Max Phoenix
Page 23 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
まとめ
Page 23 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
Page 24 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
Hiveの今とこれから
Hive SQL on Hadoopの事実上の標準
•  1つのツールで、バッチやインタラクティブ処理
•  1つのツールで、すべてのビッグデータSQLユースケース
•  ETL、レポーティング、BI、ディープ分析など
•  LLAP が実現するSub-second Hive
•  実世界の超巨⼤スケールで証明されたパフォーマンス

Mais conteúdo relacionado

Mais procurados

sparksql-hive-bench-by-nec-hwx-at-hcj16
sparksql-hive-bench-by-nec-hwx-at-hcj16sparksql-hive-bench-by-nec-hwx-at-hcj16
sparksql-hive-bench-by-nec-hwx-at-hcj16Yifeng Jiang
 
A Benchmark Test on Presto, Spark Sql and Hive on Tez
A Benchmark Test on Presto, Spark Sql and Hive on TezA Benchmark Test on Presto, Spark Sql and Hive on Tez
A Benchmark Test on Presto, Spark Sql and Hive on TezGw Liu
 
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとはdb tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとはKoji Shinkubo
 
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoPrestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoTreasure Data, Inc.
 
Apache NiFiで、楽して、つながる、広がる IoTプロジェクト
Apache NiFiで、楽して、つながる、広がる IoTプロジェクトApache NiFiで、楽して、つながる、広がる IoTプロジェクト
Apache NiFiで、楽して、つながる、広がる IoTプロジェクトKoji Kawamura
 
Data Science on Hadoop
Data Science on HadoopData Science on Hadoop
Data Science on HadoopYifeng Jiang
 
Hadoop最新事情とHortonworks Data Platform
Hadoop最新事情とHortonworks Data PlatformHadoop最新事情とHortonworks Data Platform
Hadoop最新事情とHortonworks Data PlatformYuta Imai
 
Struggle against crossdomain data complexity in Recruit Group
Struggle against crossdomain data complexity in Recruit GroupStruggle against crossdomain data complexity in Recruit Group
Struggle against crossdomain data complexity in Recruit GroupDataWorks Summit/Hadoop Summit
 
Introduction to Hadoop and Spark (before joining the other talk) and An Overv...
Introduction to Hadoop and Spark (before joining the other talk) and An Overv...Introduction to Hadoop and Spark (before joining the other talk) and An Overv...
Introduction to Hadoop and Spark (before joining the other talk) and An Overv...DataWorks Summit/Hadoop Summit
 
Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining
Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebminingImpala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining
Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebminingSho Shimauchi
 
Beginner must-see! A future that can be opened by learning Hadoop
Beginner must-see! A future that can be opened by learning HadoopBeginner must-see! A future that can be opened by learning Hadoop
Beginner must-see! A future that can be opened by learning HadoopDataWorks Summit
 
第25回 Hadoopソースコードリーディング 「HBase 最新情報」
第25回 Hadoopソースコードリーディング 「HBase 最新情報」第25回 Hadoopソースコードリーディング 「HBase 最新情報」
第25回 Hadoopソースコードリーディング 「HBase 最新情報」Toshihiro Suzuki
 
Tez on EMRを試してみた
Tez on EMRを試してみたTez on EMRを試してみた
Tez on EMRを試してみたSatoshi Noto
 
Treasure Dataを支える技術 - MessagePack編
Treasure Dataを支える技術 - MessagePack編Treasure Dataを支える技術 - MessagePack編
Treasure Dataを支える技術 - MessagePack編Taro L. Saito
 
IoTアプリケーションで利用するApache NiFi
IoTアプリケーションで利用するApache NiFiIoTアプリケーションで利用するApache NiFi
IoTアプリケーションで利用するApache NiFiYuta Imai
 
Deep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance TuningDeep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance TuningTakuya UESHIN
 
Deep Learning On Apache Spark
Deep Learning On Apache SparkDeep Learning On Apache Spark
Deep Learning On Apache SparkYuta Imai
 
Hadoop/Spark セルフサービス系の事例まとめ
Hadoop/Spark セルフサービス系の事例まとめHadoop/Spark セルフサービス系の事例まとめ
Hadoop/Spark セルフサービス系の事例まとめYuta Imai
 
Evolution of Impala #hcj2014
Evolution of Impala #hcj2014Evolution of Impala #hcj2014
Evolution of Impala #hcj2014Cloudera Japan
 

Mais procurados (20)

sparksql-hive-bench-by-nec-hwx-at-hcj16
sparksql-hive-bench-by-nec-hwx-at-hcj16sparksql-hive-bench-by-nec-hwx-at-hcj16
sparksql-hive-bench-by-nec-hwx-at-hcj16
 
A Benchmark Test on Presto, Spark Sql and Hive on Tez
A Benchmark Test on Presto, Spark Sql and Hive on TezA Benchmark Test on Presto, Spark Sql and Hive on Tez
A Benchmark Test on Presto, Spark Sql and Hive on Tez
 
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとはdb tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
 
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoPrestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
 
Apache NiFiで、楽して、つながる、広がる IoTプロジェクト
Apache NiFiで、楽して、つながる、広がる IoTプロジェクトApache NiFiで、楽して、つながる、広がる IoTプロジェクト
Apache NiFiで、楽して、つながる、広がる IoTプロジェクト
 
Data Science on Hadoop
Data Science on HadoopData Science on Hadoop
Data Science on Hadoop
 
Hadoop最新事情とHortonworks Data Platform
Hadoop最新事情とHortonworks Data PlatformHadoop最新事情とHortonworks Data Platform
Hadoop最新事情とHortonworks Data Platform
 
Struggle against crossdomain data complexity in Recruit Group
Struggle against crossdomain data complexity in Recruit GroupStruggle against crossdomain data complexity in Recruit Group
Struggle against crossdomain data complexity in Recruit Group
 
Introduction to Hadoop and Spark (before joining the other talk) and An Overv...
Introduction to Hadoop and Spark (before joining the other talk) and An Overv...Introduction to Hadoop and Spark (before joining the other talk) and An Overv...
Introduction to Hadoop and Spark (before joining the other talk) and An Overv...
 
Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining
Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebminingImpala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining
Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining
 
The truth about SQL and Data Warehousing on Hadoop
The truth about SQL and Data Warehousing on HadoopThe truth about SQL and Data Warehousing on Hadoop
The truth about SQL and Data Warehousing on Hadoop
 
Beginner must-see! A future that can be opened by learning Hadoop
Beginner must-see! A future that can be opened by learning HadoopBeginner must-see! A future that can be opened by learning Hadoop
Beginner must-see! A future that can be opened by learning Hadoop
 
第25回 Hadoopソースコードリーディング 「HBase 最新情報」
第25回 Hadoopソースコードリーディング 「HBase 最新情報」第25回 Hadoopソースコードリーディング 「HBase 最新情報」
第25回 Hadoopソースコードリーディング 「HBase 最新情報」
 
Tez on EMRを試してみた
Tez on EMRを試してみたTez on EMRを試してみた
Tez on EMRを試してみた
 
Treasure Dataを支える技術 - MessagePack編
Treasure Dataを支える技術 - MessagePack編Treasure Dataを支える技術 - MessagePack編
Treasure Dataを支える技術 - MessagePack編
 
IoTアプリケーションで利用するApache NiFi
IoTアプリケーションで利用するApache NiFiIoTアプリケーションで利用するApache NiFi
IoTアプリケーションで利用するApache NiFi
 
Deep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance TuningDeep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance Tuning
 
Deep Learning On Apache Spark
Deep Learning On Apache SparkDeep Learning On Apache Spark
Deep Learning On Apache Spark
 
Hadoop/Spark セルフサービス系の事例まとめ
Hadoop/Spark セルフサービス系の事例まとめHadoop/Spark セルフサービス系の事例まとめ
Hadoop/Spark セルフサービス系の事例まとめ
 
Evolution of Impala #hcj2014
Evolution of Impala #hcj2014Evolution of Impala #hcj2014
Evolution of Impala #hcj2014
 

Semelhante a Hive-sub-second-sql-on-hadoop-public

基礎から学ぶ超並列SQLエンジンImpala #cwt2015
基礎から学ぶ超並列SQLエンジンImpala #cwt2015基礎から学ぶ超並列SQLエンジンImpala #cwt2015
基礎から学ぶ超並列SQLエンジンImpala #cwt2015Cloudera Japan
 
Kyoto Tycoon Guide in Japanese
Kyoto Tycoon Guide in JapaneseKyoto Tycoon Guide in Japanese
Kyoto Tycoon Guide in JapaneseMikio Hirabayashi
 
Apache Hiveの今とこれから
Apache Hiveの今とこれからApache Hiveの今とこれから
Apache Hiveの今とこれからYifeng Jiang
 
Atc15_reading_networking_session
Atc15_reading_networking_sessionAtc15_reading_networking_session
Atc15_reading_networking_session紘也 金子
 
20100916_EMRを使ったシステム構築案件
20100916_EMRを使ったシステム構築案件20100916_EMRを使ったシステム構築案件
20100916_EMRを使ったシステム構築案件Kotaro Tsukui
 
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきかElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきかAmazon Web Services Japan
 
DockerからKubernetesへのシフト
DockerからKubernetesへのシフトDockerからKubernetesへのシフト
DockerからKubernetesへのシフトmasaki nakayama
 
Hadoop Trends & Hadoop on EC2
Hadoop Trends & Hadoop on EC2Hadoop Trends & Hadoop on EC2
Hadoop Trends & Hadoop on EC2Yifeng Jiang
 
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますinfinite_loop
 
論文輪読: Coordinated and Efficient Huge Page Management with Ingens
論文輪読: Coordinated and Efficient Huge Page Management with Ingens論文輪読: Coordinated and Efficient Huge Page Management with Ingens
論文輪読: Coordinated and Efficient Huge Page Management with Ingensmmisono
 
エンターテイメント業界におけるAWS活用事例
エンターテイメント業界におけるAWS活用事例エンターテイメント業界におけるAWS活用事例
エンターテイメント業界におけるAWS活用事例Amazon Web Services Japan
 
H2O - making HTTP better
H2O - making HTTP betterH2O - making HTTP better
H2O - making HTTP betterKazuho Oku
 
Seastar in 歌舞伎座.tech#8「C++初心者会」
Seastar in 歌舞伎座.tech#8「C++初心者会」Seastar in 歌舞伎座.tech#8「C++初心者会」
Seastar in 歌舞伎座.tech#8「C++初心者会」Takuya ASADA
 
実録!Railsのはまりポイント10選
実録!Railsのはまりポイント10選実録!Railsのはまりポイント10選
実録!Railsのはまりポイント10選Drecom Co., Ltd.
 
エンジニアという職業について
エンジニアという職業についてエンジニアという職業について
エンジニアという職業についてHisatoshi Kikumoto
 
軽量高機能webサーバーnginx
軽量高機能webサーバーnginx軽量高機能webサーバーnginx
軽量高機能webサーバーnginxngi group.
 
FluentdとRedshiftの素敵な関係
FluentdとRedshiftの素敵な関係FluentdとRedshiftの素敵な関係
FluentdとRedshiftの素敵な関係moai kids
 

Semelhante a Hive-sub-second-sql-on-hadoop-public (20)

基礎から学ぶ超並列SQLエンジンImpala #cwt2015
基礎から学ぶ超並列SQLエンジンImpala #cwt2015基礎から学ぶ超並列SQLエンジンImpala #cwt2015
基礎から学ぶ超並列SQLエンジンImpala #cwt2015
 
Kyoto Tycoon Guide in Japanese
Kyoto Tycoon Guide in JapaneseKyoto Tycoon Guide in Japanese
Kyoto Tycoon Guide in Japanese
 
Apache Hiveの今とこれから
Apache Hiveの今とこれからApache Hiveの今とこれから
Apache Hiveの今とこれから
 
Atc15_reading_networking_session
Atc15_reading_networking_sessionAtc15_reading_networking_session
Atc15_reading_networking_session
 
20100916_EMRを使ったシステム構築案件
20100916_EMRを使ったシステム構築案件20100916_EMRを使ったシステム構築案件
20100916_EMRを使ったシステム構築案件
 
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_cccSpring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
 
Em synchrony について
Em synchrony についてEm synchrony について
Em synchrony について
 
Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状
 
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきかElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
 
DockerからKubernetesへのシフト
DockerからKubernetesへのシフトDockerからKubernetesへのシフト
DockerからKubernetesへのシフト
 
Hadoop Trends & Hadoop on EC2
Hadoop Trends & Hadoop on EC2Hadoop Trends & Hadoop on EC2
Hadoop Trends & Hadoop on EC2
 
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
 
論文輪読: Coordinated and Efficient Huge Page Management with Ingens
論文輪読: Coordinated and Efficient Huge Page Management with Ingens論文輪読: Coordinated and Efficient Huge Page Management with Ingens
論文輪読: Coordinated and Efficient Huge Page Management with Ingens
 
エンターテイメント業界におけるAWS活用事例
エンターテイメント業界におけるAWS活用事例エンターテイメント業界におけるAWS活用事例
エンターテイメント業界におけるAWS活用事例
 
H2O - making HTTP better
H2O - making HTTP betterH2O - making HTTP better
H2O - making HTTP better
 
Seastar in 歌舞伎座.tech#8「C++初心者会」
Seastar in 歌舞伎座.tech#8「C++初心者会」Seastar in 歌舞伎座.tech#8「C++初心者会」
Seastar in 歌舞伎座.tech#8「C++初心者会」
 
実録!Railsのはまりポイント10選
実録!Railsのはまりポイント10選実録!Railsのはまりポイント10選
実録!Railsのはまりポイント10選
 
エンジニアという職業について
エンジニアという職業についてエンジニアという職業について
エンジニアという職業について
 
軽量高機能webサーバーnginx
軽量高機能webサーバーnginx軽量高機能webサーバーnginx
軽量高機能webサーバーnginx
 
FluentdとRedshiftの素敵な関係
FluentdとRedshiftの素敵な関係FluentdとRedshiftの素敵な関係
FluentdとRedshiftの素敵な関係
 

Mais de Yifeng Jiang

Hive spark-s3acommitter-hbase-nfs
Hive spark-s3acommitter-hbase-nfsHive spark-s3acommitter-hbase-nfs
Hive spark-s3acommitter-hbase-nfsYifeng Jiang
 
introduction-to-apache-kafka
introduction-to-apache-kafkaintroduction-to-apache-kafka
introduction-to-apache-kafkaYifeng Jiang
 
Hive2 Introduction -- Interactive SQL for Big Data
Hive2 Introduction -- Interactive SQL for Big DataHive2 Introduction -- Interactive SQL for Big Data
Hive2 Introduction -- Interactive SQL for Big DataYifeng Jiang
 
Introduction to Streaming Analytics Manager
Introduction to Streaming Analytics ManagerIntroduction to Streaming Analytics Manager
Introduction to Streaming Analytics ManagerYifeng Jiang
 
HDF 3.0 IoT Platform for Everyone
HDF 3.0 IoT Platform for EveryoneHDF 3.0 IoT Platform for Everyone
HDF 3.0 IoT Platform for EveryoneYifeng Jiang
 
Hortonworks Data Cloud for AWS 1.11 Updates
Hortonworks Data Cloud for AWS 1.11 UpdatesHortonworks Data Cloud for AWS 1.11 Updates
Hortonworks Data Cloud for AWS 1.11 UpdatesYifeng Jiang
 
Introduction to Hortonworks Data Cloud for AWS
Introduction to Hortonworks Data Cloud for AWSIntroduction to Hortonworks Data Cloud for AWS
Introduction to Hortonworks Data Cloud for AWSYifeng Jiang
 
Real-time Analytics in Financial
Real-time Analytics in FinancialReal-time Analytics in Financial
Real-time Analytics in FinancialYifeng Jiang
 
Sub-second-sql-on-hadoop-at-scale
Sub-second-sql-on-hadoop-at-scaleSub-second-sql-on-hadoop-at-scale
Sub-second-sql-on-hadoop-at-scaleYifeng Jiang
 
Kinesis vs-kafka-and-kafka-deep-dive
Kinesis vs-kafka-and-kafka-deep-diveKinesis vs-kafka-and-kafka-deep-dive
Kinesis vs-kafka-and-kafka-deep-diveYifeng Jiang
 
Hive present-and-feature-shanghai
Hive present-and-feature-shanghaiHive present-and-feature-shanghai
Hive present-and-feature-shanghaiYifeng Jiang
 
Hadoop Present - Open Enterprise Hadoop
Hadoop Present - Open Enterprise HadoopHadoop Present - Open Enterprise Hadoop
Hadoop Present - Open Enterprise HadoopYifeng Jiang
 

Mais de Yifeng Jiang (15)

Hive spark-s3acommitter-hbase-nfs
Hive spark-s3acommitter-hbase-nfsHive spark-s3acommitter-hbase-nfs
Hive spark-s3acommitter-hbase-nfs
 
introduction-to-apache-kafka
introduction-to-apache-kafkaintroduction-to-apache-kafka
introduction-to-apache-kafka
 
Hive2 Introduction -- Interactive SQL for Big Data
Hive2 Introduction -- Interactive SQL for Big DataHive2 Introduction -- Interactive SQL for Big Data
Hive2 Introduction -- Interactive SQL for Big Data
 
Introduction to Streaming Analytics Manager
Introduction to Streaming Analytics ManagerIntroduction to Streaming Analytics Manager
Introduction to Streaming Analytics Manager
 
HDF 3.0 IoT Platform for Everyone
HDF 3.0 IoT Platform for EveryoneHDF 3.0 IoT Platform for Everyone
HDF 3.0 IoT Platform for Everyone
 
Hortonworks Data Cloud for AWS 1.11 Updates
Hortonworks Data Cloud for AWS 1.11 UpdatesHortonworks Data Cloud for AWS 1.11 Updates
Hortonworks Data Cloud for AWS 1.11 Updates
 
Spark Security
Spark SecuritySpark Security
Spark Security
 
Introduction to Hortonworks Data Cloud for AWS
Introduction to Hortonworks Data Cloud for AWSIntroduction to Hortonworks Data Cloud for AWS
Introduction to Hortonworks Data Cloud for AWS
 
Real-time Analytics in Financial
Real-time Analytics in FinancialReal-time Analytics in Financial
Real-time Analytics in Financial
 
Nifi workshop
Nifi workshopNifi workshop
Nifi workshop
 
Sub-second-sql-on-hadoop-at-scale
Sub-second-sql-on-hadoop-at-scaleSub-second-sql-on-hadoop-at-scale
Sub-second-sql-on-hadoop-at-scale
 
Kinesis vs-kafka-and-kafka-deep-dive
Kinesis vs-kafka-and-kafka-deep-diveKinesis vs-kafka-and-kafka-deep-dive
Kinesis vs-kafka-and-kafka-deep-dive
 
Hive present-and-feature-shanghai
Hive present-and-feature-shanghaiHive present-and-feature-shanghai
Hive present-and-feature-shanghai
 
Hadoop Present - Open Enterprise Hadoop
Hadoop Present - Open Enterprise HadoopHadoop Present - Open Enterprise Hadoop
Hadoop Present - Open Enterprise Hadoop
 
HDFS Deep Dive
HDFS Deep DiveHDFS Deep Dive
HDFS Deep Dive
 

Hive-sub-second-sql-on-hadoop-public

  • 1. Apache Hive Hadoop上のSub-second SQL Yifeng Jiang Solutions Engineer, Hortonworks Japan 2015/10/14 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
  • 2. Page 2 © Hortonworks Inc. 2011 – 2015. All Rights Reserved アジェンダ •  Hiveユースケース#1: 超⼤量データの⾼並列処理 •  Hiveユースケース#2: Hive LLAPによるオンラインレポーティング
  • 3. © Hortonworks Inc. 2015. All Rights Reserved Hiveユースケース#1: 超大量データの高並列処理 Page 3 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
  • 4. Page 4 © Hortonworks Inc. 2011 – 2015. All Rights Reserved ユースケース #1 バッチ レポーティング 超巨⼤なデータセット •  13ヶ⽉、5千億⾏以上 •  毎⽇13億⾏が追加 ⾼いスループットが求められます •  ⼀⽇ 100,000 レポート •  15,000クエリを1時間以内で完了しなけ ればならない Input Dataset
  • 5. Page 5 © Hortonworks Inc. 2011 – 2015. All Rights Reserved Hiveチューニング 4つの Hive チューニング ポイント •  パーティション •  データロード •  クエリ実⾏ •  並列のためのチューニング
  • 6. Page 6 © Hortonworks Inc. 2011 – 2015. All Rights Reserved パーティション パーティションの数を最⼤化 •  パフォーマンスにとって基本的かつ最も重 要なポイント •  必要なデータのみ読込み 合計数千パーティション以下になるように •  Hiveはクエリを早く処理するための適切 な数 CREATE TABLE access_logs ( host string, path string, referrer string, … ) PARTITIONED BY ( site int, ymd date )
  • 7. Page 7 © Hortonworks Inc. 2011 – 2015. All Rights Reserved データロード データをORC形式のHiveテーブルにロード 3つの主なORCパラメータ •  ファイルシステムのブロックサイズ: 256MB •  ストライプサイズ: 64MB •  圧縮: ZLIB •  ZLIBは最近のHiveバージョンには⾼度に最適化さ れている
  • 8. Page 8 © Hortonworks Inc. 2011 – 2015. All Rights Reserved データロード ORCファイルは⼗分に⼤きいことを確認 •  可能なら1〜10HDFSブロックぐらい •  たくさんの reducers がすべてのパーティションへの書込みを避ける •  Optimize sort dynamic partitioning を有効に •  あるいは DISTRIBUTED BY 句を使う •  細かいコントロールがきくため DISTRIBUTED BY を選んだ INSERT INTO orc_sales PARTITION ( country ) SELECT FROM daily_sales DISTRIBUTE BY country, gender;
  • 9. Page 9 © Hortonworks Inc. 2011 – 2015. All Rights Reserved クエリ実⾏ クエリ実⾏は最終的⼀連の組合せ •  クライアントの実⾏ [ 正しくやれば 0s ] •  オプティマイゼーション [HiveServer2] [~ 0.1s] •  HCatalog問合せ [Hcatalog, Metastore] [ hive 0.14 は⾮常に早い ] •  Application Master 作成 [4-5s] •  コンテナ割当 [3-5s] •  クエリ実⾏ YARN and HDFS HiveServer2 Server #1 Client Running testing tool N connections N connections Metastore Metastore DB HiveServer2 Server #2 Tez AM Tez Container Tez Container …
  • 10. Page 10 © Hortonworks Inc. 2011 – 2015. All Rights Reserved クエリ実⾏ コレクション作成がオーバヘッドが⾼い •  1つのコレクション接続に⼤量のクエリを実⾏ •  標準なコレクション プールを利⽤ 2つの HiveServer2 でクエリを分散 •  HiveServer2 が 8-15 queries/s でボトルネックになった •  複数の HiveServer2 をAmbariからデプロイ •  新しいバージョンではクエリの並列コンパイルを対応予定
  • 11. Page 11 © Hortonworks Inc. 2011 – 2015. All Rights Reserved クエリ実⾏ Tezセッションの再利⽤と暖機運転 •  Tezセッションの再⽣成が5秒以上かかる •  Tezセッション再利⽤を有効に •  暖機運転による事前⽣成も可能 •  暖機運転を有効にした場合、フルスピードは実質的に⼀瞬で出せる Tezコンテナの再利⽤ •  コンテナの作成は3秒かかる •  コンテナ再利⽤を有効に。短い間キープする。 •  キーは100%利⽤率を実現しながらリソースを無駄にしない
  • 12. Page 12 © Hortonworks Inc. 2011 – 2015. All Rights Reserved 0 10 20 30 40 50 60 70 80 90 100 0 2 4 6 8 10 12 24 48 60 72 84 96 112 136 148 172 184 196 204 216 228 Queries Per Second Cluster Utilization ( Memory ) 並列処理のチューニング 実際のシナリオにとって最も重要なポイント •  多くのチューニングに無視される場合が多いですが実に重要だ •  多くの場合、単⼀のクエリは余分リソースの恩恵を受けるが、スループットが低減する Tezメモリ設定が並列処理チューニングのキー •  最適なTezメモリ設定で、クラスタのCPU利⽤率が 90% 以上に達成 Cluster UtilizationQueries Per Second Query Concurrency
  • 13. Page 13 © Hortonworks Inc. 2011 – 2015. All Rights Reserved HiveとImpalaと性能⽐較 Hive性能 •  殆どのSQLレスポンスが20秒以内 •  ⼤きいクエリは最⼤70秒 Impala性能 •  多くのSQLが30〜90秒かかった •  ⼤きいクエリが10分間以上 •  並列度を上げた場合の性能低下が⼤きい Benchmark Blog Number of queries by response time
  • 14. © Hortonworks Inc. 2015. All Rights Reserved Hiveユースケース#2: Hive LLAPによるオンラインレポーティング Page 14 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
  • 15. Page 15 © Hortonworks Inc. 2011 – 2015. All Rights Reserved Hive性能を振返ってみる Hiveは早い: インタラクティブな応答 •  ベクトル化の SQL エンジン •  Tez 実⾏エンジン •  ORC カラム型ファイルフォーマット •  コスト ベース オプティマイザ (COB) Hive 0.10 バッチ処理 100-150x 速度アップ Hive 0.14 インタラクティブ 処理 (5秒)
  • 16. Page 16 © Hortonworks Inc. 2011 – 2015. All Rights Reserved Hiveユースケース#2 オンライン レポーティング •  インタラクティブなオンライン レポート •  巨⼤なデータセット •  低レイテンシ:秒以下(sub-second)〜数秒(超巨⼤なデータの場合) •  ⾼い並列度
  • 17. Page 17 © Hortonworks Inc. 2011 – 2015. All Rights Reserved Hive LLAP HDFS LLAPプロセスが複数のノードに実⾏し、Tezタスクを加速させる Node Hive Query Node NodeNode Node LLAP LLAP LLAP LLAP LLAP = Live Long And Process
  • 18. Page 18 © Hortonworks Inc. 2011 – 2015. All Rights Reserved Hive LLAP – 主な利点 パフォーマンスの利点 •  起動時間の短縮 •  データ キャッシュ •  常時稼働のため最適化しやすい: JIT、 並列 I/O、 など
  • 19. Page 19 © Hortonworks Inc. 2011 – 2015. All Rights Reserved LLAPクエリ実⾏ •  クライアントがHive Serverにクエリを投げ る •  Hiver Serverがクエリコンパイルや最適化を 行う •  クエリ毎に1つのTez AMが独自してコー ディネート •  実際の処理はHiveオペレーターを利用 •  Tezコンテナは処理実行やデータ転送を行う •  Hiveがクエリ フラグメントの実行場所を決 める (LLAP, Container, AM) HiveServer Query/AM Controller Client(s) YARN Cluster AM1 llapd llapd llapd Container AM1 Container AM1 llapd Container AM2 AM2
  • 20. Page 20 © Hortonworks Inc. 2011 – 2015. All Rights Reserved 実世界のLLAP パフォーマンス 0 10000 20000 1 3 5 7 9 11 13 15 17 19 21 23 25 27 ⽇時集計クエリ •  選んだレンジのなか、⼀⽇毎に1つの値を集計 •  平均実⾏時間:LLAP < Phoenix < Tez Execution Time in Second 0 1 2 3 4 5 6 7 8 Average Tez Max Tez Average LLAP Max LLAP Average Phoenix Max Phoenix One Day One Week One Month One Year SELECT account, yyyymmdd, sum(total_imps), sum(total_click), ... FROM table_x WHERE yyyymmdd >= xxx AND yyyymmdd < xxx AND account = xxx ... GROUP BY account, yyyymmdd, ...;
  • 21. Page 21 © Hortonworks Inc. 2011 – 2015. All Rights Reserved 実世界のLLAP パフォーマンス Execution Time in seconds over time range 0 5 10 15 20 25 Average Tez Max Tez Average LLAP Max LLAP One Day One Week One Month One Year 0 50 100 150 200 250 300 Average Phoenix Max Phoenix One Day One Week One Month Max Phoenix Phoenix takes a long time for large ranges 更に細かい集計 •  選んだレンジのなか、⽇付よりも細かい集計 •  すべてのクエリにLLAPが⼀番早い。Phoenixはデータセットが⼤きくなると遅くなる
  • 22. Page 22 © Hortonworks Inc. 2011 – 2015. All Rights Reserved 実世界のLLAP パフォーマンス 返す⾏数別のクエリ性能 •  LLAPは⾏数が少ない場合が著しく早い •  Phoenixはスタートが良かったが、⼤きいデータセットの場合は⾮常に遅い 0 5 10 15 20 25 <100 100<1k 1k<10k 10k<100k >100k Average Tez Max Tez Average LLAP Max LLAP 0 50 100 150 200 250 300 Average Phoenix Max Phoenix
  • 23. Page 23 © Hortonworks Inc. 2011 – 2015. All Rights Reserved まとめ Page 23 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
  • 24. Page 24 © Hortonworks Inc. 2011 – 2015. All Rights Reserved Hiveの今とこれから Hive SQL on Hadoopの事実上の標準 •  1つのツールで、バッチやインタラクティブ処理 •  1つのツールで、すべてのビッグデータSQLユースケース •  ETL、レポーティング、BI、ディープ分析など •  LLAP が実現するSub-second Hive •  実世界の超巨⼤スケールで証明されたパフォーマンス