#garagekidztweetz

#garagekidztweetz

id:garage-kid@76whizkidz のライフログ・ブログ!

#hcj2016 Hive on Sparkを活用した高速データ分析のメモ

スポンサーリンク

そして、 Hadoop/Spark Conference Japan 2016 午後5コマ目、この日の通常セッション最後の一コマのメモを公開。
(本日中の公開は難しいと思いますが、次に最後の個人的超まとめという名前のリンク集をポストする予定)。

Hive on Sparkを活用した高速データ分析 / 加嵜 長門氏(DMM.comラボ)

  • Spark MLlib, GraphX を用いたレコメンド開発をしている方。
  • 103 slide ある資料なのでザッピングでプレゼンする。
  • Hive on Spark.
    • Hive の Query を Spark 上で動かすもの
  • DMM.com の事例
    • サービス情報を kafka, sqoop で集め、 Have x Spark で分析。
    • その運用を1年ほど

      • 課題
        • Hive が遅い
          • クエリのデバッグに時間がかかる
          • 定期バッチ
            • サービスの追加とともに実行時間が肥大化
      • SQL on Hadoop の選択肢
        • Hive
        • Spark
        • Impala
        • Drill
        • Presto etc...
      • なぜ Hive on Spark?
        • Hive の高速化を目指す
        • 高速とは?
          • 低レイテンシー
          • 高スループット
          • 導入コスト
          • 開発コスト
          • 学習コスト
        • 結果、検討し、 Hive on Spark
          • 導入から運用までのコストが低い 201508 に検証開始して、 201509 に Prod 導入
      • Hive on Spark のメリット
        • 3 時間以上かかっていたバッチが 1 時間まで短縮
          • Job 数が多いほど効果が出る傾向がみられた。
        • Hive クエリの書き換え不要
          • SET hive.execution.engine=spark; だけ。
      • まとめ
        • レイテンシ: 数秒ー数分
        • スループット: Sparkと同等
    • Hive on Spark - 導入手順

      • CDH を使う or Apache Community 版
        • Cloudera Manager を使えば一瞬。
      • SET hive.execution.engine=spark;
    • 実行例
      • Beeline
      • Hue
        • 実行ユーザごとに Application Master が残り続ける
          • 同時実行ユーザ数が多い場合に配慮が必要
    • パフォーマンス・チューニング
      • 初期設定ではあまりパフォーマンスは期待できない
        • default の割当リソースは小さめ
      • チューニング項目
        • ボトルネックとなる箇所の特定
          • コンソール出力
            • Spark の基礎のスライド
              • コンソールの見方
          • Spark UI
          • Explain の出力
        • コンテナのリソースを調整 (スライド参考: 推奨値記載)
          • Driver, Executor メモリを調整
          • Driver, Executor コア数を調整
          • etc..
          • 静的にリソースを割り当てる
            • メモリ詳細設定 (Spark1.5 までと、Spark1.6から)
          • 動的アロケーション
            • 処理量に応じて Executor 数を動的に決定する
            • Executor あたりのCPUやメモリ量は別途指定した方がいい
        • パーティション数(タスク数)を調整
          • タスク数を固定値で指定する
          • 1タスクあたりのデータサイズを指定する
        • その他の項目を調整
          • シリアライザ
          • !! コネクションタイムアウト
            • Client の生成に時間がかかり、タイムアウトする場合がある。
            • default 値が小さい
          • 圧縮
          • ファイルのマージ
            • ただし安易にマージすると Executor のメモリ量によってはシャッフル時に OutofMemoryになる。
            • default 256MB をもうすこし低くする必要があった
          • !! 圧縮 x マージの合わせ技
            • ファイルのマージは出力結果にたいして行われる
            • Textfileのようにファイル全体に圧縮がかかる場合、圧縮ファイルのマージはできない
  • Hive on Spark まとめ
    • 導入〜運用までのコストが低い
      • Hive と Spark を知っていれば学習コストは低い
    • パラメタひとつで高速化
  • 残りは Hive で役立つ SQL 構文が書いてあるので Slideshare みてね。

資料埋め込みリンク

  • 公開されているものはこちらに埋め込みリンクさえていただく所存。

Hadoop/Spark Hadoop Conference 2016 でとってきた他のエントリへのリンク

  • のちほどリンクを追加していく所存。

garagekidztweetz.hatenablog.com garagekidztweetz.hatenablog.com garagekidztweetz.hatenablog.com garagekidztweetz.hatenablog.com garagekidztweetz.hatenablog.com