Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
Hive on Spark
の設計指針を読
んでみた
Yu Ishikawa
2014-07-24
はじめに
 Apache Hive の実行エンジンとして Spark に
対応する機能が開発中
 [HIVE-7292] Hive on Spark - ASF JIRA
 https://issues.apache.org/jira/b...
Table of Contents
 Hive on Spark の導入
 高レベルの機能性の解説
 高レベルの設計概要
 各コンポーネントの解説
 まとめ
Hive on Spark の導入
Hive on Spark の目的
 (Hadoop) MapReduce, Tez につづいて第3の
Hive 実行エンジンとして Spark に対応させる
 Spark とはHadoop MapReduce より高速に処
理できるオープ...
Motivation: 実装する動機
 すでに Spark を利用しているユーザとっては,
処理環境が標準化されることでオペレーショ
ン的なコスト削減
 SQL on Hadoop として,Hive を Spark ユー
ザに提供
 Hi...
設計指針:Design Principle
 既存の Hive のコードには影響を(可能な限
り)与えない
 現在 MapReduce と Tez の実行エンジンを簡
単に切り替えられるように,Spark も簡単に
切り替えられる
 Sp...
Shark や Spark SQL との比較
 Hive on Spark は,すべての Hive の特徴を Spark の実
行エンジンでも利用可能にする
 Hive QL, 認証, モニタリング, 監視 など
 Shark
 Hiv...
高レベルの機能性の解説
Hive の実行エンジンとして Spark を指定
する方法
 デフォルト:mr (MapReduce)
 もし Spark を実行する環境がないときは,MapReduce
か Tez を実行
 Spark 用に Hive QL を一切変...
その他実装するにあたっての要件
 “explain” による実行計画の表示
 MapReduce での Hive 実行のように,処理の
進行状況のフィードバック
 ジョブの統計や診断法の提供
高レベルの設計概要
実装にあったっての機能分類
 Query planning
 Hive QL の意味解析により Hive のオペレータ
プランが Spark で実行できるタスクプランに変
換
 Query execution
 生成された Spark ...
Query Planning(1)
 Operator Plan は,TableScanOperator,
ReduceSink, FileSink,
GroupByOperator などの論理オペレータ
のグラフで構成
HiveQL
Ope...
Query Planning(2)
 SparkCompiler は Hive の論理オペレータプラ
ンから Spark で実行できるプランにコンパイル
 ジョブとして実行できる形として SparkWork の
インスタンスを作る
 Sp...
Job Execution
 SparkCompiler によって生成された
SparkTask のインスタンスは,Hive のタス
ク実行フレームワークで MapReduce と同様
に実行できる
 Spark にジョブが投げられたら,ジ...
特筆すべき各コンポーネン
トの解説
採用する基本原則は?
 Spark 側の SQL 解析を利用するのではなく,
MapReduce の機構を利用
 Spark の操作は Spark 側が公開している Java
API で対応
 Spark で実行できるように MapRed...
Table as RDD
 Hive テーブルを Spark のデータ形式である
RDD として扱えるように実装
 現時点でも HDFS のデータを扱える RDD が
あるので,それを Hive に特化した形で拡張
する必要がある
 Sc...
SparkWork と SparkTask
 SparkWork は SparkTask から利用
 SparkWork は Spark ジョブを実行し続ける
ためのタスクプランを表現
 SparkWork は,MapWork と Red...
Shuffle, Group, and Sort
 Spark は,partitionBy, groupByKey,
sortByKey などのような MapReduce の
Shuffle を簡単にするための API があるのでそ
れを利用...
まとめ
Hive on Spark を実装するにあたって必要
そうな作業
 Spark のジョブモニタリング Java APIs
 SparkContext をスレッドセーフにする
 シャッフルの機能性や API の改修
 RDD を Hive...
実装のすすめ方
 いくつかのフェーズに分けて実装を進めてい
く
 まずは基本的な機能の実装
 その後に最適化や改良を行っていく
 Hive on Spark を進めていくには,Hive コ
ミュニティと Spark コミュニティが密に連...
Prochain SlideShare
Chargement dans…5
×

Hive on Spark の設計指針を読んでみた

Hive on Spark の設計指針を読んでみた

  • Identifiez-vous pour voir les commentaires

Hive on Spark の設計指針を読んでみた

  1. 1. Hive on Spark の設計指針を読 んでみた Yu Ishikawa 2014-07-24
  2. 2. はじめに  Apache Hive の実行エンジンとして Spark に 対応する機能が開発中  [HIVE-7292] Hive on Spark - ASF JIRA  https://issues.apache.org/jira/browse/HIVE-7292  2014-06-25 に Hive on Spark の設計指針など が, Cloudera 社の Xuefu Zhang らによって 公開された
  3. 3. Table of Contents  Hive on Spark の導入  高レベルの機能性の解説  高レベルの設計概要  各コンポーネントの解説  まとめ
  4. 4. Hive on Spark の導入
  5. 5. Hive on Spark の目的  (Hadoop) MapReduce, Tez につづいて第3の Hive 実行エンジンとして Spark に対応させる  Spark とはHadoop MapReduce より高速に処 理できるオープンソースのデータ分析分散処理 フレームワーク  Spark は Resilient Distributed Dataset (RDD) と いうデータコレクションでデータを表現
  6. 6. Motivation: 実装する動機  すでに Spark を利用しているユーザとっては, 処理環境が標準化されることでオペレーショ ン的なコスト削減  SQL on Hadoop として,Hive を Spark ユー ザに提供  Hive on Tez のようにパフォーマンスの向上
  7. 7. 設計指針:Design Principle  既存の Hive のコードには影響を(可能な限 り)与えない  現在 MapReduce と Tez の実行エンジンを簡 単に切り替えられるように,Spark も簡単に 切り替えられる  Spark への特別な対処をする必要することな く,既存の MapReduce や Tez の処理と共通 化できるところは最大限共通化  Hive 側の拡張に対して,Hive on Spark の部 分も自動的に対応されるような実装
  8. 8. Shark や Spark SQL との比較  Hive on Spark は,すべての Hive の特徴を Spark の実 行エンジンでも利用可能にする  Hive QL, 認証, モニタリング, 監視 など  Shark  Hive で生成されたクエリプランを Spark で実行できる ように変換  Spark SQL  SQL-like (Hive QL も含む)を Spark アプリケーション で実行できるようにするためのパーサ  Hive のように対話的に使うというより,Scala のコー ドの中で利用
  9. 9. 高レベルの機能性の解説
  10. 10. Hive の実行エンジンとして Spark を指定 する方法  デフォルト:mr (MapReduce)  もし Spark を実行する環境がないときは,MapReduce か Tez を実行  Spark 用に Hive QL を一切変更することなく実行できる ように実装する  Spark にジョブを投げるには,MapReduce の用に実行 する Spark クラスタの URI などを設定 hive> set hive.execution.engine=spark;
  11. 11. その他実装するにあたっての要件  “explain” による実行計画の表示  MapReduce での Hive 実行のように,処理の 進行状況のフィードバック  ジョブの統計や診断法の提供
  12. 12. 高レベルの設計概要
  13. 13. 実装にあったっての機能分類  Query planning  Hive QL の意味解析により Hive のオペレータ プランが Spark で実行できるタスクプランに変 換  Query execution  生成された Spark のタスクプランが実際に Spark クラスタで実行
  14. 14. Query Planning(1)  Operator Plan は,TableScanOperator, ReduceSink, FileSink, GroupByOperator などの論理オペレータ のグラフで構成 HiveQL Operator plan Hive Semantic Analzer Graph of MapReduceTask MapReduceCompiler
  15. 15. Query Planning(2)  SparkCompiler は Hive の論理オペレータプラ ンから Spark で実行できるプランにコンパイル  ジョブとして実行できる形として SparkWork の インスタンスを作る  SparkWork は Spark のタスクの実行プランを表 現  実行計画の最適化はつぎのフェーズにして,まず は機能を実装することに専念 HiveQL Operator plan Hive Semantic Analzer Graph of SparkTask SparkCompiler
  16. 16. Job Execution  SparkCompiler によって生成された SparkTask のインスタンスは,Hive のタス ク実行フレームワークで MapReduce と同様 に実行できる  Spark にジョブが投げられたら,ジョブの実 行状況をモニタリングできる仕組みを SparkListener として実装
  17. 17. 特筆すべき各コンポーネン トの解説
  18. 18. 採用する基本原則は?  Spark 側の SQL 解析を利用するのではなく, MapReduce の機構を利用  Spark の操作は Spark 側が公開している Java API で対応  Spark で実行できるように MapReduce 側の 基本原則を拡張
  19. 19. Table as RDD  Hive テーブルを Spark のデータ形式である RDD として扱えるように実装  現時点でも HDFS のデータを扱える RDD が あるので,それを Hive に特化した形で拡張 する必要がある  Scala として拡張するのは簡単だが,Java API として扱えるようにはなっていないので 課題
  20. 20. SparkWork と SparkTask  SparkWork は SparkTask から利用  SparkWork は Spark ジョブを実行し続ける ためのタスクプランを表現  SparkWork は,MapWork と ReduceWork (たまに UnionWork)で構成
  21. 21. Shuffle, Group, and Sort  Spark は,partitionBy, groupByKey, sortByKey などのような MapReduce の Shuffle を簡単にするための API があるのでそ れを利用して group by や sort by を実装  Hive QL の JOIN 句についても,Spark の join API を利用することで実装
  22. 22. まとめ
  23. 23. Hive on Spark を実装するにあたって必要 そうな作業  Spark のジョブモニタリング Java APIs  SparkContext をスレッドセーフにする  シャッフルの機能性や API の改修  RDD を Hive テーブルで扱えるようにするた めの Java API の実装
  24. 24. 実装のすすめ方  いくつかのフェーズに分けて実装を進めてい く  まずは基本的な機能の実装  その後に最適化や改良を行っていく  Hive on Spark を進めていくには,Hive コ ミュニティと Spark コミュニティが密に連携 を取っていく必要がある

×