Impalaチューニングポイントベストプラクティス

237 Views

November 10, 14

スライド概要

http://www.cloudera.co.jp/jpevents/cwt2014/
http://connpass.com/event/9031/

profile-image

2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Impalaチューニングポイント ベストプラクティス ヤフー株式会社 マーケティングソリューションカンパニー 開発本部  業務開発部 杉⼭山  朋広

2.

⾃自⼰己紹介 杉⼭山  朋広 (すぎやま  ともひろ) 2002年年ヤフー株式会社⼊入社 Yahoo!ウォレットやYahoo!  JAPAN  IDなどのIDサービスを経て 現在は広告関連システムを担当 Hadoopの経験は2012年年ごろから Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止  

3.

アジェンダ 単⼀一クエリがどれくらいの速度度か ストレージフォーマット パーティションとブロックサイズ 並列列クエリをどれくらい処理理できるか 並列列アクセスの注意点 その他 Hive,MapReduceのチューニング Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止  

4.

Impalaについて HDFSを直接readする低レイテンシなSQLエンジン Evolution  of  Impala  #hcj2014 http://www.slideshare.net/Cloudera_̲jp/evolution-‐‑‒of-‐‑‒impala-‐‑‒hcj2014 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止  

5.

検証データ 以下のようなファイルをピックアップ ⾏行行数 サイズ 形式 蓄積期間 総⾏行行数 総サイズ 11億⾏行行/⽇日 12GB(gz)/⽇日 tsvファイル 396⽇日(13カ⽉月) 11億⾏行行/⽇日  ×  396⽇日  =  約4,300億⾏行行 12GB/⽇日  ×  396⽇日  =  約4,500GB Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止  

6.

データ構造 ⽇日付>ID>属性でユニーク YYYYMMDD ID device ... count rank … 20140101 1413538279 1 ... 863 123 … 20140101 1413538320 1 ... 1284 14 … 20140101 1413540870 3 ... 413 638 … : : : : : : : 20141231 1413538279 2 ... 343 862 … Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止  

7.

検証環境 以下の30ノードで検証環境を構築 Cloudera  Expressをインストール CPU RAM DISK Nodes CDH 6  core  x  2 64  G 3T  x  4 30  nodes  (4  x  Master  +  26  x  Slave) 5.1 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止  

8.

ストレージフォーマット Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止  

9.

ストレージフォーマットとは Hadoopの処理理に最適化されたフォーマット RCFILE SEQUENCEFILE AVRO PARQUET デフォルトでTEXTのGzipやLZOがサポートされない =  最初にストレージフォーマットを決める必要がある Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止  

10.

主要ストレージフォーマット⽐比較 PARQUETを採⽤用 Format TEXT AVRO SEQUENCEFILE RCFILE PARQUET CODEC Gzip Snappy Snappy Snappy Snappy size 11.4  GB 14.7  GB 25.2  GB 16.4  GB 12.9  GB Create -‐‑‒ 280  s 260  s 270  s 300  s Hiveで作成・Impalaでカウント 1⽇日分(Gzip12GB・11億⾏行行)をサンプル Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止   count(*) not  support 1340  ms 1150  ms 830  ms 730  ms

11.

パーティションとブロックサイズ Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止  

12.

ブロックサイズの最適化 HDFSのブロックサイズの他に PARQUETのブロックサイズ設定もある 適切切な値を設定する事で レスポンスの向上が期待できる Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止  

13.

パーティションによる分割 特定のルールでデータをグループ化して別々に保存 透過的に1テーブルとして扱われる HDFS DIR HDFS DIR1 HDFS DIR2 dt=20140101 select  *  from   MyTable MyTable select  *  from   MyTable dt=20140102 MyTable : dt=20141231 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止  

14.

チューニング パーティションによりファイルの分割度度を調整 64分割 128分割 256分割 必ずHDFSのブロックサイズの⽅方を⼤大きくする dfs.block.size  >  parquet.block.size Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止  

15.

検証クエリ(1⽇日分) 11億⾏行行→3,000⾏行行の絞り込み サイズは300K程度度 > select ID, device, sum(count), sum(...) from mytable where ID = 1413538320 group by ID, device; Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止  

16.

ブロックサイズ⽐比較 検証データ1⽇日分(Gzip11.4GB)を分割数を変えて⽐比較 ファイル数 HDFSブロックサイズ PARQUETブロックサイズ 64 512  MB 256  MB 中 128 256  MB 128  MB 平均ファイルサイズ 174  MB 83  MB 40  MB 最⼩小ファイルサイズ 最⼤大ファイルサイズ 84  MB 284  MB 36  MB 180  MB 11  MB 110  MB 6.11  s 4.32  s 3.05  s 最⼤大ファイルの応答時間 ⼤大 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止   ⼩小 256 128  MB 64  MB

17.

検証クエリ(13ヶ⽉月分) 256分割で13ヶ⽉月分4,300億⾏行行のデータを⽣生成 4,300億⾏行行→3,000⾏行行の絞り込み サイズは300K程度度 > select ID, device, sum(count), sum(...) from mytable where ID = 1413538320 group by ID, device; Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止  

18.

検証データ全量量テスト 検証データ全量量4,300億⾏行行に対する検証クエリの結果 試⾏行行数 1回⽬目 2回⽬目 3回⽬目 4回⽬目 5回⽬目 応答時間 351.8  s  12.5  s  11.7  s  11.3  s  11.5  s メタ情報のリフレッシュ直後だけ5〜~6分かかる Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止  

19.

並列列アクセスの注意点 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止  

20.

並列列クエリ Impaladの各ノードに並列列にクエリを発⾏行行 select  … where ID  =  1413538320  and   YYYYMMDD  =  20140101 select  … where ID  =  1413538320  and   YYYYMMDD  =  20140101 select  … where ID  =  1413538320  and   YYYYMMDD  =  20140101 Impalad Impalad Impalad Query  Planner Query  Planner Query  Planner Query  Coordinator Query  Coordinator Query  Coordinator Query  Exec  Engine Query  Exec  Engine Query  Exec  Engine Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止  

21.

並列列クエリ:結果 最⼤大25並列列で、5秒程度度の遅延 20 18 16 14 12 avg 10 sec 8 6 4 2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 parallel  reqs Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止  

22.

遅延の原因 select  … where ID  =  1413538320  and   YYYYMMDD  =  20140101 同じブロックへのアクセス集中 select  … where ID  =  1413538320  and   YYYYMMDD  =  20140101 select  … where ID  =  1413538320  and   YYYYMMDD  =  20140101 Impalad Impalad Impalad Query  Planner Query  Planner Query  Planner Query  Coordinator Query  Coordinator Query  Coordinator Query  Exec  Engine Query  Exec  Engine Query  Exec  Engine blk-‐‑‒X 同じブロックへの並列列クエリは ホットスポットを⽣生む Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止  

23.

並列列クエリの注意点 できるだけ別々のブロックにアクセスする select  … where ID  =  1413530001  and   YYYYMMDD  =  20140101 select  … where ID  =  1413530002  and   YYYYMMDD  =  20140101 select  … where ID  =  1413530003  and   YYYYMMDD  =  20140101 Impalad Impalad Impalad Query  Planner Query  Planner Query  Planner Query  Coordinator Query  Coordinator Query  Coordinator Query  Exec  Engine Query  Exec  Engine Query  Exec  Engine blk-‐‑‒a blk-‐‑‒b blk-‐‑‒c Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止  

24.

結果⽐比較 25並列列での遅延を3秒くらい軽減できた 20 15 avg 10 sec 5 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 parallel  reqs 同ブロックアクセス 別ブロックアクセス Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止  

25.

Hive,MapReduceのチューニング Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止  

26.

RawData(tsv) Hiveの利利⽤用 Metastoreの作成は⽐比較的⻑⾧長い (数10分くらい) Hive (MapReduce) Refresh ImpalaStateStore ※⼿手オペ MapReduceやOozieで制御 但しHiveMetastoreとImpalaStateStoreの 同期オペレーションが必要 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止  

27.

Hiveジョブのエラー ParquetテーブルをHiveで作成 Hiveジョブのreducerがエラー Examining task ID: task_1407388082801_0126_r_000014 (and more) from job job_1407388082801_0126 Examining task ID: task_1407388082801_0126_r_000027 (and more) from job job_1407388082801_0126 Task with the most failures(4): ----- Task ID: task_1407388082801_0126_r_000009 URL: http://test1.yahoo.co.jp:8088/taskdetails.jsp? jobid=job_1407388082801_0126&tipid=task_1407388082801_0126_r_000009 ----- Diagnostic Messages for this Task: Error: Java heap space Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止  

28.

原因:メモリ不不⾜足 parquet.block.size Parquet  x  1ファイルあたりの割当メモリ default  :  134,217,728(128MB) パーティション数分のメモリが必要 クラスタ全体:128MB  x  256partitions  =  32GB ノード当たり:32GB  ÷  26nodes  =  約1.23GB 初期のメモリ設定値が1GB/ノードだった Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止  

29.

対処 以下のパラメータを⾒見見直して解消 mapreduce.map.memory.mb mapreduce.map.java.opts.max.heap mapreduce.reduce.memory.mb mapreduce.reduce.java.opts.max.heap ブロックサイズの引き下げでもOK パーティションあたりの平均ファイルサイズが⼩小さい場合 例例)parquet.block.size  =  67,108,864 Parquetの作成にはメモリが必要 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止  

30.

まとめ Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止  

31.

処理理時間のイメージ Impala:数秒〜~数10秒  ※ MapReduce:数分〜~数時間 HBase:ミリ秒〜~数秒 ※)但しリフレッシュ後の初回は数分 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止  

32.

並列列クエリの注意点 同⼀一ブロックへの並列列アクセスは避ける 同⼀一クエリを避けてノード数を増やせば 並列列性能が期待できる Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止  

33.

向いているサービス 時系列列データの参照系 明細 履履歴情報

34.

今後の課題・関⼼心 どこまでスケールするか? 100  nodes?  1000  nodes? Impala  2.0 Impala  +  HBase Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止  

35.

ご清聴ありがとうございました