さらにさらに引き続いて Hadoop/Spark Conference Japan 2016 午後の4コマ目のメモの公開。
Hiveを高速化するLLAP / 小澤 祐也氏(ヤフー)
- Hive の復習
- 実行エンジン
- MR
- Tez
- YARN 上でしか動かないが Hive や Pig の実行エンジンとして欠かせない
- Spark
- Hive on Spark
- Not Spark SQL
- Hive の限界
- インタラクティブな処理には使えない
- Hive は ETL まで分析は R, Python, Spark などを使う
- 元データが大きすぎる場合など
- とはいえ、最近の Hive は速い
- SET hive.execution.enting=tez
- カラムナ型のファイルフォーマットをサポート
- ORCFile, Parquet
- CBO (Cost Base Optimizer)
- Vectorization
- SIMD 命令を利用した一括処理
- 実行エンジン
- LLAP (Live-Long-A -Processing)
- Hive をよりインタラクティブに
- Hive2.0 からの新機能
- LLAP の基本的な思想
- Daemon
- Daemon の立ち上げによる起動コストの削減
- Daemon カニは Apache Slider を利用
- Hadoop 上で Daemon として起動し、任意のプロセスを走らせる
- Storm や Memchaced などサンプル有
- Hybrid な環境の実現
- Tez の Vertex を Daemon 化するのが LLAP
- TEZ-2003
- Vertex の一部または全部の実行 Node で LLAP を利用
- Cache
- LLAP の Daemon 内でデータを cache する
- ORCFile のみに対応
- キャッシュアルゴリズム
- FIFO, FRFU
- Daemon の Node ごとに cache を持つ
- 中央集権的にもっているわけではない
- Off-Heap の利用
- Multi Thread Pipeline
- LLAP の Daemon 内で複数のスレッドを起動
- 各スレッドが Executor として処理を実行
- Queue
- 一般的な実行待ち行列に対する扱い
- 実行可能な Executor にアサインされる
- Preemption
- 長時間動きがない場合は諦める
- Executor にアサインされたタスクがなんらかの理由で実行できない、など
- LLAP の Daemon 内で複数のスレッドを起動
- Daemon
- LLAP と mode
- LLAP によって新たにくわわる mode という概念
- 特定の Vertex がどちらの mode でうごいているか
- Mode と Daemon (図解)
- 4 つの mode
- none
- all
- map
- auto
- 4 つの mode
- LLAP によって新たにくわわる mode という概念
- LLAP vs. Spark SQL
- LLAP 固有の概念
- Daemon 内共通で使える cache は Spark にはない
- Tez vs. Spark
- データがメモリにのらない場合は Tez が有利
- 既存の資産の活用
- クエリの互換性
- HQLは SQL like だが SQL ではない
- 分析環境のつなぎ込みでは Spark が有利
- SQL では ETL 以上の処理をするのは難しい
- R, Python での分析環境との連携
- DataFrameAPI や MLlib, GraphX
- ストリーム処理
- Spark Streaming
- Hive も ACID やトランザクションに対応はしている
- LLAP 固有の概念
- LLAP の実行速度
- Hive on Tez との速度比較
- 3 回同じ処理をしての平均実行速度
- 各クエリはシーケンシャル実行
- TPC-DSの結果
- ほとんどのクエリにおいて LLAP を利用したほうが速い
- ものによっては悪くなっているものもある (Query22のCase)
- 他、鋭意検証中。
- Daemon 数、並列数、設定変更による影響、など。
- Hive on Tez との速度比較
- LLAP の今後
- バグ周り
- HIVE-12904: Deadlock のバグ
- セキュリティ周り
- Kerberos には対応
- キャッシュされたデータの扱い
- HS2 からの接続
- Cacheの洗練、 Localitiy
- HDFS locality は考慮してくれる
- cache 現状では個々の node が持っている
- どこの node がどのデータを cache しているかの考慮はなし
- そもそも Daemon が立ち上がっている node にデータがない場合
- cache アルゴリズムは適切か
- タスクリストや WIP
- バグ周り
資料埋め込みリンク
公開されているものはこちらに埋め込みリンクさえていただく所存。
Hadoop/Spark Hadoop Conference 2016 でとってきた他のエントリへのリンク
のちほどリンクを追加していく所存。
garagekidztweetz.hatenablog.com garagekidztweetz.hatenablog.com garagekidztweetz.hatenablog.com garagekidztweetz.hatenablog.com garagekidztweetz.hatenablog.com