247 Views
November 10, 14
スライド概要
http://www.cloudera.co.jp/jpevents/cwt2014/
http://connpass.com/event/9031/
2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp
Impalaチューニングポイント ベストプラクティス ヤフー株式会社 マーケティングソリューションカンパニー 開発本部 業務開発部 杉⼭山 朋広
⾃自⼰己紹介 杉⼭山 朋広 (すぎやま ともひろ) 2002年年ヤフー株式会社⼊入社 Yahoo!ウォレットやYahoo! JAPAN IDなどのIDサービスを経て 現在は広告関連システムを担当 Hadoopの経験は2012年年ごろから Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止
アジェンダ 単⼀一クエリがどれくらいの速度度か ストレージフォーマット パーティションとブロックサイズ 並列列クエリをどれくらい処理理できるか 並列列アクセスの注意点 その他 Hive,MapReduceのチューニング Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止
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. 無断引⽤用・転載禁⽌止
検証データ 以下のようなファイルをピックアップ ⾏行行数 サイズ 形式 蓄積期間 総⾏行行数 総サイズ 11億⾏行行/⽇日 12GB(gz)/⽇日 tsvファイル 396⽇日(13カ⽉月) 11億⾏行行/⽇日 × 396⽇日 = 約4,300億⾏行行 12GB/⽇日 × 396⽇日 = 約4,500GB Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止
データ構造 ⽇日付>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. 無断引⽤用・転載禁⽌止
検証環境 以下の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. 無断引⽤用・転載禁⽌止
ストレージフォーマット Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止
ストレージフォーマットとは Hadoopの処理理に最適化されたフォーマット RCFILE SEQUENCEFILE AVRO PARQUET デフォルトでTEXTのGzipやLZOがサポートされない = 最初にストレージフォーマットを決める必要がある Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止
主要ストレージフォーマット⽐比較 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
パーティションとブロックサイズ Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止
ブロックサイズの最適化 HDFSのブロックサイズの他に PARQUETのブロックサイズ設定もある 適切切な値を設定する事で レスポンスの向上が期待できる Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止
パーティションによる分割 特定のルールでデータをグループ化して別々に保存 透過的に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. 無断引⽤用・転載禁⽌止
チューニング パーティションによりファイルの分割度度を調整 64分割 128分割 256分割 必ずHDFSのブロックサイズの⽅方を⼤大きくする dfs.block.size > parquet.block.size Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止
検証クエリ(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. 無断引⽤用・転載禁⽌止
ブロックサイズ⽐比較 検証データ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
検証クエリ(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. 無断引⽤用・転載禁⽌止
検証データ全量量テスト 検証データ全量量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. 無断引⽤用・転載禁⽌止
並列列アクセスの注意点 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止
並列列クエリ 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. 無断引⽤用・転載禁⽌止
並列列クエリ:結果 最⼤大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. 無断引⽤用・転載禁⽌止
遅延の原因 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. 無断引⽤用・転載禁⽌止
並列列クエリの注意点 できるだけ別々のブロックにアクセスする 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. 無断引⽤用・転載禁⽌止
結果⽐比較 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. 無断引⽤用・転載禁⽌止
Hive,MapReduceのチューニング Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止
RawData(tsv) Hiveの利利⽤用 Metastoreの作成は⽐比較的⻑⾧長い (数10分くらい) Hive (MapReduce) Refresh ImpalaStateStore ※⼿手オペ MapReduceやOozieで制御 但しHiveMetastoreとImpalaStateStoreの 同期オペレーションが必要 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止
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. 無断引⽤用・転載禁⽌止
原因:メモリ不不⾜足 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. 無断引⽤用・転載禁⽌止
対処 以下のパラメータを⾒見見直して解消 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. 無断引⽤用・転載禁⽌止
まとめ Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止
処理理時間のイメージ Impala:数秒〜~数10秒 ※ MapReduce:数分〜~数時間 HBase:ミリ秒〜~数秒 ※)但しリフレッシュ後の初回は数分 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止
並列列クエリの注意点 同⼀一ブロックへの並列列アクセスは避ける 同⼀一クエリを避けてノード数を増やせば 並列列性能が期待できる Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止
向いているサービス 時系列列データの参照系 明細 履履歴情報
今後の課題・関⼼心 どこまでスケールするか? 100 nodes? 1000 nodes? Impala 2.0 Impala + HBase Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引⽤用・転載禁⽌止
ご清聴ありがとうございました