Apache Hiveの今とこれから - 2016

88
Apache Hiveの今とこれから Joe Ooura & Yuta Imai 2016/4/22 © Hortonworks Inc. 2011 – 2015. All Rights Reserved

Transcript of Apache Hiveの今とこれから - 2016

Page 1: Apache Hiveの今とこれから - 2016

Apache Hiveの今とこれからJoeOoura&YutaImai2016/4/22

©HortonworksInc.2011–2015.AllRightsReserved

Page 2: Apache Hiveの今とこれから - 2016

2 ©HortonworksInc.2011–2016.AllRightsReserved

はじめに

Ã  質問はQUESTIONSというボタンからお願いします。プレゼンター以外には⾒えません。

Ã  Twitter経由でもコメント、質問、⼤歓迎です!  #hwxjp

Page 3: Apache Hiveの今とこれから - 2016

3 ©HortonworksInc.2011–2016.AllRightsReserved

自己紹介 Ã  ⼤浦 譲太郎 Twitter:@JOOOURAÃ  5歳児と8歳児の⽗Ã  サーバ、ストレージのシステム営業を経て2011年に フラッシュメモリストレージ企業の⽇本法⼈⽴ち上げに参画。Evangelist、プリセールスSE、広報、営業など⼀通りをカバーエンタープライズフラッシュの代名詞ともなるioDriveシリーズを⽇本国内の通信キャリア、⾦融機関、WEBサービス事業者、アドテク、DC事業者に多数導⼊。Ã  2016年1⽉より、ホートンワークスジャパンの⼆⼈⽬の

営業として参画。現在はエヴァンジェリスト活動及びエンタープライズ向けセールス、パートナー⽀援を⾏なっている。

Page 4: Apache Hiveの今とこれから - 2016

4 ©HortonworksInc.2011–2016.AllRightsReserved

About Hortonworks

お客様との歩み •  ~800社(2016年2月現在)•  152社は2015年第三四半期で•  2015年10月NASDAQへ上場:HDP

The Leader in Connected Data Platforms •  HortonworksDataFlowfordatainmoNon•  HortonworksDataPlaOormfordataatrest•  PoweringnewmoderndataapplicaNons

Partner for Customer Success •  Leaderinopen-sourcecommunity,focusedoninnovaNontomeetenterpriseneeds

•  UnrivaledsupportsubscripNons

Founded in 2011

Yahoo! で初代の Hadoop 開発を手がけたアーキテクト、デベロッパー、オ

ペレータ 24名によって創立

1000+ E M P L O Y E E S

1500+ E C O S Y S T E M

PA R T N E R S

Page 5: Apache Hiveの今とこれから - 2016

5 ©HortonworksInc.2011–2016.AllRightsReserved

Our Model: Drive an Enterprise-focused Roadmap

1.   InnovateExis6ngProjects–  Hive/SNnger,YARN,HDFS,commonops&securityviaAmbari&Ranger

2.   IncubateNewProjects–  Metron(wasOpenSOC),Ranger,Knox,Atlas,Falcon,Ambari,Tez,etc.

3.   AcquireIP&Contribute

–  AcquiredXASecureandcreatedApacheRanger;contributedOpenSOC

4.   Partner&DeliverJointSolu6ons–  Microsod,EMC,HP,SAS,Pivotal,RedHat,Teradata,etc.

5.   RallytheEcosystem

–  FastSQLviaSNngeriniNaNve,DataGovernanceiniNaNve,ODPi

Data

Acce

ss

(batc

h, int

erac

tive,

real

time)

Int

egra

tion &

Go

vern

ance

Op

erati

ons

Secu

rity

ApacheProject HortonworksCommiNers

HortonworksPMC

HWX%ofCommiNers

Hadoop 29 24 31%Accumulo 2 2 9%Calcite 6 3 43%HBase 8 5 17%Hive 19 11 38%NiFi 5 5 42%

Phoenix 5 5 22%Pig 5 5 24%

Slider 12 12 100%Spark 1 0 2%Storm 4 4 19%Tez 15 15 44%Atlas 7 0 35%Falcon 7 5 41%Flume 1 1 4%KaZa 0 0 0%Sqoop 1 1 4%Ambari 39 30 76%Oozie 4 2 22%

Zookeeper 2 1 13%Knox 12 2 80%Ranger 13 11 76%

TOTAL 197 144

Source:ApacheSodwareFoundaNon.AsofOctober5,2015.Acommi'erissomeonewhohas“earnedtheirstripes”withintheApachecommunityandhastheability

tocommitcodedirectlytotheircorrespondingApacheprojectsourcecoderepository

Page 6: Apache Hiveの今とこれから - 2016

6 ©HortonworksInc.2011–2016.AllRightsReservedPage6 ©HortonworksInc.2011–2015.AllRightsReserved

100%OpenSourceConnectedDataPlaaorms

Eliminates Risk ofvendorlock-inbydelivering100%Apacheopensourcetechnology

Maximizes Community Innovation withhundredsofdevelopersacrosshundredsofcompanies

IntegratesSeamlesslythroughcommijedco-engineeringpartnershipswithotherleadingtechnologies

M A X I M U M C O M M U N I T Y I N N O VAT I O N

T H E I N N O VAT I O N A D VA N TA G E

P R O P R I E T A R Y H A D O O P

T I M E

INN

OV

AT

ION

O P E N C O M M U N I T Y

Page 7: Apache Hiveの今とこれから - 2016

7 ©HortonworksInc.2011–2016.AllRightsReserved

自己紹介 Ã 今井 雄太 Twijer:@imai_factoryÃ  SoluNonsEngineerÃ 広告配信サーバーのレポート作成のためにMapReduce(perl+streaming!)を使ったのがHadoopとの出会い。

Ã その後、AWSにてアドテクやゲームのお客様を担当しつつ、EMRやS3などのビッグデータなプロダクトを主に担当。そんなつながりでHortonworksに入社してHadoopをやっています。

Page 8: Apache Hiveの今とこれから - 2016

8 ©HortonworksInc.2011–2016.AllRightsReserved

Ã ~Hive1.2.1– Tez– Cost Based Optimizer(CBO)– ORC File format– Vectorization

Ã Hive2.0– LLAP

最近のApache Hive: Key highlights

Page 9: Apache Hiveの今とこれから - 2016

9 ©HortonworksInc.2011–2016.AllRightsReserved

最近のApache Hive: Key highlights

Ã ~Hive1.2.1– Tez– Cost Based Optimizer(CBO)– ORC File format– Vectorization

Ã Hive2.0– LLAP

Stinger InitiativeHiveを100倍以上⾼速化

Already available on HDP!

Page 10: Apache Hiveの今とこれから - 2016

10 ©HortonworksInc.2011–2016.AllRightsReserved

Sub-secondショートクエリで

1秒以下のレスポンスを⽬指す

Ã ~Hive1.2.1– Tez– Cost Based Optimizer(CBO)– ORC File format– Vectorization

Ã Hive2.0– LLAP

Stinger InitiativeHiveを100倍以上⾼速化

Already available on HDP!

最近のApache Hive: Key highlights

Page 11: Apache Hiveの今とこれから - 2016

11 ©HortonworksInc.2011–2016.AllRightsReserved

Ã  いずれの改善も数⾏の設定もしくはコマンドで利⽤可能です。–  Hive2.0については現時点(4/22)においてまだHDPに取り込まれていません。

Ã  今⽇は、それらの仕組みにフォーカスしてお話します。

最近のApache Hive: Key highlights

Page 12: Apache Hiveの今とこれから - 2016

12 ©HortonworksInc.2011–2016.AllRightsReserved

Hive performance recap •  Stinger: •  ApacheHiveのパフォーマンスを100倍にするというゴールのもとに始まったプロジェクト

VectorizedSQLEngine,TezExecuNonEngine,ORCColumnarformatCostBasedOpNmizer

Hive0.10BatchProcessing

100-150xQuerySpeedupHive0.14HumanInteracNve(5seconds)

Page 13: Apache Hiveの今とこれから - 2016

13 ©HortonworksInc.2011–2016.AllRightsReserved

TPC-DS Benchmark at 30 Terabyte Scale

•  TPC-DSより 50 のサンプルクエリを 30 terabyte のスケールで実⾏•  平均 52 倍の速度アップ, 最⼤ 160 倍の速度アップ•  ベンチマークの総実⾏時間が 7.8 ⽇ から 9.3 時間に短縮•  Hive 14に追加された Cost-Based Optimizer が更に 2.5倍の速度アップ実現

Page 14: Apache Hiveの今とこれから - 2016

14 ©HortonworksInc.2011–2016.AllRightsReserved

TezBeyond MapReduce

Page 15: Apache Hiveの今とこれから - 2016

15 ©HortonworksInc.2011–2016.AllRightsReserved

Apache Tez

Page 15

Ã データ処理アプリのための汎⽤分散処理エンジン– アプリ(フレームワーク)向け、エンドユーザー向けではない– Hive on Tez, Pig on Tez, Cascading on Tez, …

Ã MapReduceの教訓を活かした結果– ⼤幅なパフォーマンス改善– バッチ、インタラクティブ– Petabytesスケール

Ã YARNの上で動かす– クラスタリソースの活⽤ DAG(無閉路有向グラフ)

Page 16: Apache Hiveの今とこれから - 2016

16 ©HortonworksInc.2011–2016.AllRightsReserved

MapReduce & Tez

M M M

R R

M M

R

M M

R

M M

R

HDFS

HDFS

HDFS

M M M

R R

R

M M

R

R

Map – Reduce Intermediate results in HDFS

Tez Optimized Pipeline

•  中間データをHDFSに書き出さない

•  Map-Reduce-Reduceのような構成を取ることができる

•  セッションによるコンテナの再利⽤

•  ジョブを通してのパイプラインの最適化

Page 17: Apache Hiveの今とこれから - 2016

17 ©HortonworksInc.2011–2016.AllRightsReserved

What is DAG & Why DAG

ProjectionFilterGroupBy…

JoinUnionIntersect…

Split…

• Directed Acyclic Graph(無閉路有向グラフ)• どんなに複雑なDAGでも、基本的には以下の3つのパターンに分類ができる– Sequential– Merge– Divide

Page 18: Apache Hiveの今とこれから - 2016

18 ©HortonworksInc.2011–2016.AllRightsReserved

Tezの⼤まかな動き

ProcessorInput Output

Page 19: Apache Hiveの今とこれから - 2016

19 ©HortonworksInc.2011–2016.AllRightsReserved

Tez – Key benefits

• DAGの表現⼒• Easier to express computation in DAG

• 中間データをHDFSに吐き出さない• レイテンシ• NameNodeへの負荷

• Tezセッション/コンテナ再利⽤• AM/タスクコンテナアロケーションのオーバーヘッド• ResourceManagerの負荷• Object Registryによるデータ使い回し(MapJoin⽤のテーブルなど)•  JITによる実⾏コードの最適化

• DAG全体を⾒渡しての最適化

Page 20: Apache Hiveの今とこれから - 2016

20 ©HortonworksInc.2011–2016.AllRightsReserved

Tez - architecture

Ã Client– Starts session– Submits DAG

Ã Application Master– DAG Scheduler– Task Scheduler– Vertex Manager

Ã TezTask Containers– Execution

Page 21: Apache Hiveの今とこれから - 2016

21 ©HortonworksInc.2011–2016.AllRightsReserved

Tez - architecture

Ã Client– Starts session– Submits DAG

Ã Application Master– DAG Scheduler– Task Scheduler– Vertex Manager

Ã TezTask Containers– Execution

Page 22: Apache Hiveの今とこれから - 2016

22 ©HortonworksInc.2011–2016.AllRightsReserved

Page 23: Apache Hiveの今とこれから - 2016

23 ©HortonworksInc.2011–2016.AllRightsReserved

ORCOptimized Row Columnar

Page 24: Apache Hiveの今とこれから - 2016

24 ©HortonworksInc.2011–2016.AllRightsReserved

Hadoopで使われるファイルフォーマット

•  Text•  SequenceFile•  RCFile

•  + Can be read required column•  + Compression on each column•  - type-free binary blobs•  - no index•  - Compression by stream-based codec

Page 25: Apache Hiveの今とこれから - 2016

25 ©HortonworksInc.2011–2016.AllRightsReserved

ORCFile – Hiveのためのカラム型ストレージ

Ã High Compression– カラムごとに適⽤されるデータの型スペシフィックな圧縮– ストリーム単位でのZLIBやSNAPPYによる圧縮

Ã High Performance– File, Stripe, Rowそれぞれのレベルでのインデックス、メタデータ– Predicate Pushdown

Ã Flexible Data Model– Complex types(struct, list, map, union)– New types(datetime, decimal)

Page 25

Page 26: Apache Hiveの今とこれから - 2016

26 ©HortonworksInc.2011–2016.AllRightsReserved

ORC at Facebook

Savedmorethan1,400serversworthofstorage.(2)

Compressioni CompressionraNoincreasedfrom5xto8xglobally.(2)

Compressioni

Page 27: Apache Hiveの今とこれから - 2016

27 ©HortonworksInc.2011–2016.AllRightsReserved

ORC at Spotify

16xlessHDFSreadwhenusingORCversusAvro.(3)

IOi 32xlessCPUwhenusingORCversusAvro.(3)

CPUi

Page 28: Apache Hiveの今とこれから - 2016

28 ©HortonworksInc.2011–2016.AllRightsReserved

ORC at Yahoo!

6-50xspeedupwhenusingORCversusTextFile.(4)

Speedupi 1.6-30xspeedupwhenusingORCversusRCFile.(4)

Speedupi

Page 29: Apache Hiveの今とこれから - 2016

29 ©HortonworksInc.2011–2016.AllRightsReserved

ORCFile – ファイルフォーマット

Page 30: Apache Hiveの今とこれから - 2016

30 ©HortonworksInc.2011–2016.AllRightsReserved

ORCFile – ファイルフォーマット

デフォルトで256MBという⼤きなチャンクサイズでファイルの中⾝を分割

Stripe

Page 31: Apache Hiveの今とこれから - 2016

31 ©HortonworksInc.2011–2016.AllRightsReserved

ORCFile – ファイルフォーマット

それぞれのStripeの場所、スキーマ、ファイル全体におけるそれぞれのカラムのmin/max/sum値を保持

File Footer

Page 32: Apache Hiveの今とこれから - 2016

32 ©HortonworksInc.2011–2016.AllRightsReserved

ファイルの圧縮形式と、圧縮済みのFooterのサイズを保持。その他カスタムメタデータも保持可能。最初にここだけ読み取られる。

Post Script

ORCFile – ファイルフォーマット

Page 33: Apache Hiveの今とこれから - 2016

33 ©HortonworksInc.2011–2016.AllRightsReservedPage 33

Stream: INDEX

Stream: BROOM FILTER

Stream: DATA

Stream: LENGTH

Stream: DICTIONARY

Row Group(Default: 10K records for each RG)

ORCFile – ファイルフォーマット

Page 34: Apache Hiveの今とこれから - 2016

34 ©HortonworksInc.2011–2016.AllRightsReserved

File-Column1-min-max-sum-hasNull-Column2-Column3-ColumnN-Compression-FooterLength

Stripe1-Column1-min-max-sum-hasNull-Column2-Column3-ColumnN

Column1

RG1-min-max-sum-hasNull-pos

RG1-min-max-sum-hasNull-pos

ColumnN

RG1-min-max-sum-hasNull-pos

RG1-min-max-sum-hasNull-pos

……

StripeN

ORCFile – ファイルフォーマット

Page 35: Apache Hiveの今とこれから - 2016

35 ©HortonworksInc.2011–2016.AllRightsReserved

Compression

Ã データの型スペシフィックな圧縮(Light-Weight Compression)– カラムごとに適⽤される圧縮– 必ず適⽤される– RLE, Direct, Patch Base, Delta

Ã データストリームの圧縮(Generic Compression)– ファイル全体を通して共通で適⽤される圧縮– 実際にはそれぞれのStream、Footerに適⽤される– 上記のLight-Weight Compressionが適⽤された上に適⽤される– NONE, ZLIB, SNAPPY, LZO

Page 35

Page 36: Apache Hiveの今とこれから - 2016

36 ©HortonworksInc.2011–2016.AllRightsReservedPage 36

High Compression

Page 37: Apache Hiveの今とこれから - 2016

37 ©HortonworksInc.2011–2016.AllRightsReserved

High Performance

FileレベルのIndex

StripeレベルのIndex

RowGroupレベルのIndex

Page 38: Apache Hiveの今とこれから - 2016

38 ©HortonworksInc.2011–2016.AllRightsReserved

ORCの情報をダンプする

orcfiledumphive --service orcfiledump /apps/hive/warehouse/rankings/000045_0

RowGroupごとのインデックス情報を含めるには rowindex <カラム番号> を指定。0を指定すれば全カラムの情報がとれるhive --service orcfiledump --rowindex 1 /apps/hive/warehouse/rankings/000045_0

Page 38

Page 39: Apache Hiveの今とこれから - 2016

39 ©HortonworksInc.2011–2016.AllRightsReserved

File Statistics

File Statistics: Column 0: count: 1620325 hasNull: false Column 1: count: 1620325 hasNull: false min: 1.0.100.215 max: 99.99.97.199 sum: 21531540 Column 2: count: 1620325 hasNull: false min…max: …sum: 88890214 Column 3: count: 1620325 hasNull: false min: 1970-01-01 max: 2012-04-30 Column 4: count: 1620325 hasNull: false min: …-8 max: …sum: 810757.3001111746 Column 5: count: 1620325 hasNull: false min… max: … sum: 85357610 Column 6: count: 1620325 hasNull: false min: ALB max: ZAF sum: 4860975

Page 39

Page 40: Apache Hiveの今とこれから - 2016

40 ©HortonworksInc.2011–2016.AllRightsReserved

Stripe Statistics

Stripe Statistics: Stripe 1: Column 0: count: 1545000 hasNull: false Column 1: count: 1545000 hasNull: false min: 1.0.100.215 max: 99.99.97.199 sum: 20530443 Column 2: count: 1545000 hasNull: false min: … max: … sum: 84763272 Column 3: count: 1545000 hasNull: false min: 1970-01-01 max: 2012-04-30 Column 4: count: 1545000 hasNull: false min: … max: … sum: 773016.625769496 Column 5: count: 1545000 hasNull: false min: … max: … sum: 81385950 Column 6: count: 1545000 hasNull: false min: ALB max: ZAF sum: 4635000

Page 40

Page 41: Apache Hiveの今とこれから - 2016

41 ©HortonworksInc.2011–2016.AllRightsReserved

Row Group Indexes

Row group indices for column 1: Entry 0: count: 10000 hasNull: false min: 1.101.125.195 max: 99.98.152.204 sum: 132919 positions: 0,0,0,0,0 Entry 1: count: 10000 hasNull: false min: 1.104.147.167 max: 99.85.51.213 sum: 132976 positions: 0,132919,0,6119,52 Entry 2: count: 10000 hasNull: false min: 1.1.228.147 max: 99.88.166.75 sum: 132826 positions: 120403,3751,0,12339,3

Entry 3: count: 10000 hasNull: false min: 1.104.90.89 max: 99.96.30.136 sum: 132853 positions: 120403,136577,0,18482,4 Entry 4: count: 10000 hasNull: false min: 1.11.252.134 max: 99.71.248.30 sum: 132856 positions: 240743,7286,0,24600,2 Entry 5: count: 10000 hasNull: false min: 1.119.19.221 max: 99.96.184.74 sum: 132977 positions: 240743,140142,0,30713,8 Entry 6: count: 10000 hasNull: false min: 1.1.244.95 max: 99.99.242.168 sum: 132735 positions: 360961,10975,0,36946,1

Entry 7: count: 10000 hasNull: false min: 1.1.146.20 max: 99.93.105.159 sum: 132869 positions: 360961,143710,0,43145,2

Page 41

Page 42: Apache Hiveの今とこれから - 2016

42 ©HortonworksInc.2011–2016.AllRightsReserved

SARG & Predicate Pushdown

Ã SARG: Search ARGument

Ã SELECT COUNT(*) FROM CUSTOMER WHERE CUSTOMER.state = ʻCAʼ;

Ã 上記のようなクエリにおいて、RecordReaderはwhere clauseにマッチするORCファイル、Stripe、RowGroupだけをストレージから読み出す

Page 42

Page 43: Apache Hiveの今とこれから - 2016

43 ©HortonworksInc.2011–2016.AllRightsReserved

Bloom Filter Index

1 0 1 110 1 0 11

x y z

w

m=10k=3

m個の要素を持つ配列に対して⼊⼒値に対してk回のハッシュ関数をかけて結果を格納しておく。

確認対象の値をk回ハッシュして、結果がすべて1であれば、そのインデックスに値が含まれる。そうでなければ含まれないのでスキップする。偽陽性の結果になる可能性もある。

Page 44: Apache Hiveの今とこれから - 2016

44 ©HortonworksInc.2011–2016.AllRightsReserved

Bloom Filter Indexes Improvements

5999989709

540,000

10,000

NoIndexes Min-MaxIndexes BloomfilterIndexes

select*fromtpch_1000.lineitemwherel_orderkey=1212000001;(logscale–smallerisbeNer)

RowsRead

Page 45: Apache Hiveの今とこれから - 2016

45 ©HortonworksInc.2011–2016.AllRightsReserved

Bloom Filter Indexes Improvements

74

4.51.34

NoIndexes Min-MaxIndexes BloomfilterIndexes

select*fromtpch_1000.lineitemwherel_orderkey=1212000001;(smallerisbeNer)

TimeTaken(seconds)

~16ximprovement

~3.3ximprovement

Page 46: Apache Hiveの今とこれから - 2016

46 ©HortonworksInc.2011–2016.AllRightsReserved

ORCFile – テーブル定義の例

Ã テーブルまたはパーティション別に定義Ã 選べられる圧縮コーデック

Page 46

create table Addresses ( name string, street string, city string, state string, zip int) stored as orc tblproperties ("orc.compress"=”ZLIB");

Page 47: Apache Hiveの今とこれから - 2016

47 ©HortonworksInc.2011–2016.AllRightsReserved

ORCFile – テキストからORCに変換

Ã ORCを使わない理由はないÃ SQL 1つでテキストからORCに変換

Page 47

-- Create Text & ORC tablesCREATE TABLE test_details_txt( visit_id INT, store_id SMALLINT) STORED AS TEXTFILE;CREATE TABLE test_details_orc( visit_id INT, store_id SMALLINT) STORED AS ORC;

-- Load into Text tableLOAD DATA LOCAL INPATH '/home/user/test_details.csv' INTO TABLE test_details_txt;

-- Copy to ORC tableINSERT OVERWRITE INTO test_details_orc SELECT * FROM test_details_txt;

Page 48: Apache Hiveの今とこれから - 2016

48 ©HortonworksInc.2011–2016.AllRightsReserved

Vectorized Query ExecutionProcess 1024 Rows at a Time

Page 49: Apache Hiveの今とこれから - 2016

49 ©HortonworksInc.2011–2016.AllRightsReserved

Vectorization – ベクターSQLエンジン

Ã 機能:– 1⾏づつの代わりに、⼀回に1024⾏を処理– モーデンなハードウェア アーキテクチャの活⽤

Ã 利点:– ⼤きいクエリは最⼤3倍早い– CPU使⽤時間を削減、クラスタリソースの有効利⽤

Page 49

Page 50: Apache Hiveの今とこれから - 2016

50 ©HortonworksInc.2011–2016.AllRightsReserved

Column Store Layout

Table

Row Store Column Store

A B1 A1 B12 A2 B2

1A1B1

2A2B2

AA1A2

BB1B2

Page 51: Apache Hiveの今とこれから - 2016

51 ©HortonworksInc.2011–2016.AllRightsReserved

Column Store Characteristics

Row Store•  TextFile, SequenceFile, Avro•  Slower read performance•  Reads whole columns

•  Lower compression ratio•  Higher local cardinality

Column Store•  RCFile, Parquet, ORC•  Faster read performance•  Reads needed columns only

•  Higher compression ratio•  Lower local cardinality

•  Room for further optimization•  Vectorization

Page 52: Apache Hiveの今とこれから - 2016

52 ©HortonworksInc.2011–2016.AllRightsReserved

Hive Vectorization 2014

Rewriting Hive execution engine for performance•  No method calls•  Low instruction count•  Cache locality to 1,024 values•  No pipeline stalls•  SIMD in Java 8But not excellent without SIMD

set hive.vectorized.execution.enabled = true;J. Sompolski, M. Zukowski, P. Boncz. Vectorization vs. Compilation in Query Execution. 2011

Page 53: Apache Hiveの今とこれから - 2016

53 ©HortonworksInc.2011–2016.AllRightsReserved

Cost Based Optimizer

Page 54: Apache Hiveの今とこれから - 2016

54 ©HortonworksInc.2011–2016.AllRightsReserved

Cost Based Optimizer

Ã  Apache Calciteを利⽤Ã  何をしてくれるもの?

–  Ordering joins–  Bushy Join Tree–  Converting join algorithms

Ã  Paper: https://cwiki.apache.org/confluence/display/Hive/Cost-based+optimization+in+Hive

Ã  Anatomy: http://hortonworks.com/blog/hive-0-14-cost-based-optimizer-cbo-technical-overview/

Page 55: Apache Hiveの今とこれから - 2016

55 ©HortonworksInc.2011–2016.AllRightsReserved

MySQL

Splunk

Expression treeSELECT p.“product_name”, COUNT(*) AS cFROM “splunk”.”splunk” AS s JOIN “mysql”.”products” AS p ON s.”product_id” = p.”product_id”WHERE s.“action” = 'purchase'GROUP BY p.”product_name”ORDER BY c DESC

join

Key: product_id

group

Key: product_nameAgg: count

filter

Condition:action =

'purchase'

sort

Key: c DESC

scan

scan

Table: splunk

Table: products

Page 56: Apache Hiveの今とこれから - 2016

56 ©HortonworksInc.2011–2016.AllRightsReserved

Splunk

Expression tree(optimized)

SELECT p.“product_name”, COUNT(*) AS cFROM “splunk”.”splunk” AS s JOIN “mysql”.”products” AS p ON s.”product_id” = p.”product_id”WHERE s.“action” = 'purchase'GROUP BY p.”product_name”ORDER BY c DESC

join

Key: product_id

group

Key: product_nameAgg: count

filter

Condition:action =

'purchase'

sort

Key: c DESC

scan

Table: splunk

MySQL

scan

Table: products

Page 57: Apache Hiveの今とこれから - 2016

57 ©HortonworksInc.2011–2016.AllRightsReserved

Query preparation – Hive 0.13

SQL parser

Semantic analyzer

Logical Optimizer

Physical Optimizer

Abstract Syntax Tree

(AST)

Hive SQL

AnnotatedAST

Plan

Tez

Tuned Plan

Page 58: Apache Hiveの今とこれから - 2016

58 ©HortonworksInc.2011–2016.AllRightsReserved

Query preparation – Hive 0.14

SQL parser

Semantic analyzer

Logical Optimizer

Physical Optimizer

Hive SQL

AST with optimized join-

ordering

Tez

Tuned Plan

Translate to

algebra

Optiq optimize

r

Page 59: Apache Hiveの今とこれから - 2016

59 ©HortonworksInc.2011–2016.AllRightsReserved

Star schema

Sales Inventory

Time

Product

Customer

Warehouse

KeyFact tableDimension table Many-to-one relationship

Page 60: Apache Hiveの今とこれから - 2016

60 ©HortonworksInc.2011–2016.AllRightsReserved

Query combining two stars

SELECT product.id, sum(sales.units), sum(inventory.on_hand)FROM sales ON …JOIN customer ON …JOIN time ON …JOIN product ON …JOIN inventory ON …JOIN warehouse ON …WHERE time.year = 2014AND time.quarter = ̒Q1ʼAND product.color = ̒RedʼAND warehouse.state = ̒WA̓GROUP BY …

Sales InventoryTime

Product

Customer

Warehouse

Page 61: Apache Hiveの今とこれから - 2016

61 ©HortonworksInc.2011–2016.AllRightsReserved

Left-deep tree

“left-deep”ツリーすべてのジョインがシリアルに⾏われる。ジョインの順番は考慮されているが、ツリーの形は考慮されていない。

よくあるプラン:•  最⼤のテーブルを左下に置いてスタート•  絞り込みの⼤きいJoinから適⽤していく

Sales Customer

Time

Product

Inventory

Warehouse

Page 62: Apache Hiveの今とこれから - 2016

62 ©HortonworksInc.2011–2016.AllRightsReserved

Bushy tree (Bush:低⽊、茂み)

Joinがどこで⾏われるかに制約をかけない“Bushes” はファクトテーブル (Sales and Inventory)と関連するディメンションテーブルで形成されるディメンションテーブルがフィルターの役割を果たす結果としてデータの読み込み⾏数やネットワークを介してのやり取りを少なくしていける

Sales Customer

Time

Product

Inventory Warehouse

Page 63: Apache Hiveの今とこれから - 2016

63 ©HortonworksInc.2011–2016.AllRightsReserved

Cost variables

Ã  Hr - This is the cost of Reading 1 byte from HDFS in nano seconds.Ã  Hw - This is the cost of Writing 1 byte to HDFS in nano seconds.Ã  Lr - This is the cost of Reading 1 byte from Local FS in nano seconds.Ã  Lw - This is the cost of writing 1 byte to Local FS in nano seconds.Ã  NEt – This is the average cost of transferring 1 byte over network in

the Hadoop cluster from any node to any node; expressed in nano seconds.

Ã  T(R) - This is the number of tuples in the relation.Ã  Tsz – Average size of the tuple in the relationÃ  V(R, a) –The number of distinct values for attribute a in relation RÃ  CPUc – CPU cost for a comparison in nano seconds

Page 64: Apache Hiveの今とこれから - 2016

64 ©HortonworksInc.2011–2016.AllRightsReserved

Assumed values

Ã  CPUc = 1 nano secÃ  NEt = 150 * CPUc nano secsÃ  Lw = 4 * NetÃ  Lr = 4 * NetÃ  Hw = 10 * LwÃ  Hr = 1.5 * Lr

Page 65: Apache Hiveの今とこれから - 2016

65 ©HortonworksInc.2011–2016.AllRightsReserved

Profile Hive queries

Ã hive.tez.exec.print.summary=true

←このへんで仕事してる

Page 66: Apache Hiveの今とこれから - 2016

66 ©HortonworksInc.2011–2016.AllRightsReserved

LLAP: Live Long And ProcessChallenge for Sub-Second

Page 67: Apache Hiveの今とこれから - 2016

67 ©HortonworksInc.2011–2016.AllRightsReserved

What is LLAP?•  Hiveの処理実⾏のための常駐型プロセス•  タスクの起動コストの低減•  JITオプティマイザがより利きやすい

•  プロセスではなくスレッド型のExecutor•  メタデータやMapJoinのテーブルなどをタスク間で共

有できる

•  IOの⾮同期化とキャッシュの導⼊•  Query fragment API

Node

LLAP Process

Cache

Query Fragment

HDFS

Query Fragment

Page 68: Apache Hiveの今とこれから - 2016

68 ©HortonworksInc.2011–2016.AllRightsReserved

What LLAP isn't•  Hive execution engine (like Tez, MR, Spark…)•  Execution enginesは処理の組み⽴てやを⾏う

•  Not a storage layer•  LLAPデーモンはステートレスで、データはHDFSをsource of truth

として利⽤する•  Does not supersede existing Hive•  Containerベースの実⾏も引き続き進化していく

Page 69: Apache Hiveの今とこれから - 2016

69 ©HortonworksInc.2011–2016.AllRightsReserved

Example execution: MR vs Tez vs Tez+LLAP

M M M

R R

M MR

M M

R

M M

R

HDFS

HDFSHDFS

T T T

R R

R

T T

T

R

M M M

R R

R

M M

R

R

HDFSIn-Memorycolumnar cache

Map – ReduceIntermediate results in HDFS

TezOptimized Pipeline

Tez with LLAPResident process on Nodes

Map tasks read HDFS

Page 70: Apache Hiveの今とこれから - 2016

70 ©HortonworksInc.2011–2016.AllRightsReserved

LLAP in your cluster•  LLAPデーモンはYARN上で実⾏される•  Apache Sliderがデーモン⽤コンテナのプロビジョンとリ

カバリを⾏う•  Resource management via YARN delegation model

(WIP)•  LLAP and containers dynamically balance resource

usage (WIP)

Page 71: Apache Hiveの今とこれから - 2016

71 ©HortonworksInc.2011–2016.AllRightsReserved

Queryexecu6on

Page 72: Apache Hiveの今とこれから - 2016

72 ©HortonworksInc.2011–2016.AllRightsReserved

•  DAGによる処理の組み⽴てはそのまま利⽤される。Tezのランタイムもそのまま利⽤される。

•  フラグメント/タスクはLLAPもしくは通常のコンテナ、AM内のいずれでも実⾏可能

•  どこで実⾏されるかはHive Clientによって決定される•  Configurable – all in LLAP, none in LLAP, intelligent mix

•  LLAPにタスクを割り当てるポリシー(in auto mode)•  No user code (or only blessed user code)•  Data source – HDFS•  ORC and vectorized execution (for now)

•  Others can still run in LLAP in "all" mode, w/o IO elevator and cache•  Data size limitations (avoid heavy / long running processing within LLAP)

Tez + LLAP – overview

Page 73: Apache Hiveの今とこれから - 2016

73 ©HortonworksInc.2011–2016.AllRightsReserved

So…

M M M

R R

R

M M

R

R

Tez

Page 74: Apache Hiveの今とこれから - 2016

74 ©HortonworksInc.2011–2016.AllRightsReserved

AM

So…

T T T

R R

R

T T

T

R

M M M

R R

R

M M

R

R

Tez Tez with LLAP (auto)

auto

Page 75: Apache Hiveの今とこれから - 2016

75 ©HortonworksInc.2011–2016.AllRightsReserved

AM

AM

So…

T T T

R R

R

T T

T

R

M M M

R R

R

M M

R

R

Tez Tez with LLAP (auto)

T T T

R R

R

T T

T

R

Tez with LLAP (all)

allauto

Page 76: Apache Hiveの今とこれから - 2016

76 ©HortonworksInc.2011–2016.AllRightsReserved

Scheduling for LLAP in Tez AM•  Greedy scheduling per query•  クラスタ全体が利⽤可能な前提でスケジューリングが⾏われる

•  Schedule work to preferred location (HDFS locality)•  同じデータにアクセスする複数のクエリ間で、preferred locationの設定に

よって同じデーモン上でタスクを実⾏させることができる

Page 77: Apache Hiveの今とこれから - 2016

77 ©HortonworksInc.2011–2016.AllRightsReserved

LLAP

Queue

Queuing fragments•  LLAPデーモンはスレッドプールを使って

タスク/フラグメントを実⾏する

•  内部にキューを持っており、プラガブルな優先度付の仕組みもある

Executor Q1 Reducer 2

Executor Q1 Map 1

Executor Q1 Map 1

Executor Q3 Map 19

Q1 Reducer 2

Q1 Map 1

Q3 Map 19

Q1 Reducer 2

Page 78: Apache Hiveの今とこれから - 2016

78 ©HortonworksInc.2011–2016.AllRightsReserved

LLAP Scheduling – pipelining and preemption•  フラグメントは⼊⼒データが揃いきって

いなくても実⾏開始できる•  ⼊⼒データが揃った時点で”finishable”と

いうフラグが付与される

LLAP

Queue Executor

Executor

Interactive query map 1/3

Interactive query map 3/3

Executor

Interactive query map 2/3

Wide query reduce

Well,10mapperoutof100aredone!

Page 79: Apache Hiveの今とこれから - 2016

79 ©HortonworksInc.2011–2016.AllRightsReserved

LLAP Scheduling – pipelining and preemption•  フラグメントは⼊⼒データが揃いきって

いなくても実⾏開始できる•  ⼊⼒データが揃った時点で”finishable”と

いうフラグが付与される•  finishableになるまでexecutorを解放はしない

LLAP

Queue Executor

Executor

Interactive query map 1/3

Interactive query map 3/3

Executor

Interactive query map 2/3

Wide query reduce

Page 80: Apache Hiveの今とこれから - 2016

80 ©HortonworksInc.2011–2016.AllRightsReserved

LLAP Scheduling – pipelining and preemption•  フラグメントは⼊⼒データが揃いきって

いなくても実⾏開始できる•  ⼊⼒データが揃った時点で”finishable”と

いうフラグが付与される•  finishableになるまでexecutorを解放はしない

LLAP

Queue Executor

Executor

Interactive query map 1/3

Interactive query map 3/3

Executor

Interactive query map 2/3

Wide query reduce

Page 81: Apache Hiveの今とこれから - 2016

81 ©HortonworksInc.2011–2016.AllRightsReserved

LLAP Scheduling – pipelining and preemption•  フラグメントは⼊⼒データが揃いきって

いなくても実⾏開始できる•  ⼊⼒データが揃った時点で”finishable”と

いうフラグが付与される•  finishableになるまでexecutorを解放はしない

•  Non-finishableなフラグメントはプリエンプションされる

LLAP

Queue Executor

Executor

Interactive query map 1/3

Interactive query map 3/3

Executor

Interactive query map 2/3

Wide query reduce

Page 82: Apache Hiveの今とこれから - 2016

82 ©HortonworksInc.2011–2016.AllRightsReserved

IOelevatorandotherinternals

Page 83: Apache Hiveの今とこれから - 2016

83 ©HortonworksInc.2011–2016.AllRightsReserved

Asynchronous IO•  これまでのHiveでは、IO

は同期的に⾏われていた•  データの圧縮、⾮圧縮も

同期型だった

Page 84: Apache Hiveの今とこれから - 2016

84 ©HortonworksInc.2011–2016.AllRightsReserved

Asynchronous IO•  LLAPでは、IOエレベー

タースレッドがディスクIO、圧縮、などを⾮同期に執り⾏う

•  IO threads can be spindle aware (WIP)

•  Depending on workload, IO and processing threads can balance resource usage (throttle IO, etc.) (WIP)

Page 85: Apache Hiveの今とこれから - 2016

85 ©HortonworksInc.2011–2016.AllRightsReserved

Caching and off-heap data•  解凍されたデータはoff-heapにキャッシュされる•  キャッシュについてはGCを気にしないでいいように•  HDFSのIOと解凍コストを排除。特にディメンションテーブ

ルに有効

•  プラガブルなEviction Policy•  現在はFIFO, LRFUをサポート

Page 86: Apache Hiveの今とこれから - 2016

86 ©HortonworksInc.2011–2016.AllRightsReserved

Other benefits•  ファイルのメタデータやインデックスもキャッシュされる•  Predicate Pushdownの⾼速化

•  MapJoin⽤のハッシュテーブルやフラグメントの実⾏計画もJVM内で共有される

•  タスク/フラグメントごとに実⾏計画のデシリアライズのコストが減る•  Better use of JIT optimizer•  起動しっぱなしのデーモンなので、JITが仕事をするための時間がよ

り⻑く取れる•  Especially good with vectorization!

Page 87: Apache Hiveの今とこれから - 2016

87 ©HortonworksInc.2011–2016.AllRightsReserved

まとめ

Page 88: Apache Hiveの今とこれから - 2016

88 ©HortonworksInc.2011–2016.AllRightsReserved

Sub-secondショートクエリで

1秒以下のレスポンスを⽬指す

Ã ~Hive1.2.1– Tez– Cost Based Optimizer(CBO)– ORC File format– Vectorization

Ã Hive2.0– LLAP

Stinger InitiativeHiveを100倍以上⾼速化

Already available on HDP!

最近のApache Hive: Key highlights