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

Mais conteúdo relacionado

Mais procurados

Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)Noritaka Sekiyama
 
HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019 #hc...
HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019  #hc...HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019  #hc...
HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019 #hc...Yahoo!デベロッパーネットワーク
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!Tetsutaro Watanabe
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介AdvancedTechNight
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理NTT DATA Technology & Innovation
 
事例で学ぶApache Cassandra
事例で学ぶApache Cassandra事例で学ぶApache Cassandra
事例で学ぶApache CassandraYuki Morishita
 
Hadoopの概念と基本的知識
Hadoopの概念と基本的知識Hadoopの概念と基本的知識
Hadoopの概念と基本的知識Ken SASAKI
 
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)NTT DATA OSS Professional Services
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれKumazaki Hiroki
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)NTT DATA Technology & Innovation
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本kazuki kumagai
 
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタはじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタSatoyuki Tsukano
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法Tetsutaro Watanabe
 
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理Cloudera Japan
 
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 SpringGoでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 SpringYahoo!デベロッパーネットワーク
 
がっつりMongoDB事例紹介
がっつりMongoDB事例紹介がっつりMongoDB事例紹介
がっつりMongoDB事例紹介Tetsutaro Watanabe
 
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...NTT DATA Technology & Innovation
 

Mais procurados (20)

Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
 
HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019 #hc...
HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019  #hc...HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019  #hc...
HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019 #hc...
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
 
事例で学ぶApache Cassandra
事例で学ぶApache Cassandra事例で学ぶApache Cassandra
事例で学ぶApache Cassandra
 
Hadoopの概念と基本的知識
Hadoopの概念と基本的知識Hadoopの概念と基本的知識
Hadoopの概念と基本的知識
 
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
 
Hadoop入門
Hadoop入門Hadoop入門
Hadoop入門
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
 
NetflixにおけるPresto/Spark活用事例
NetflixにおけるPresto/Spark活用事例NetflixにおけるPresto/Spark活用事例
NetflixにおけるPresto/Spark活用事例
 
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本
 
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタはじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタ
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
 
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理
 
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 SpringGoでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
 
がっつりMongoDB事例紹介
がっつりMongoDB事例紹介がっつりMongoDB事例紹介
がっつりMongoDB事例紹介
 
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
 

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

Yifeng spark-final-public
Yifeng spark-final-publicYifeng spark-final-public
Yifeng spark-final-publicYifeng Jiang
 
Deep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance TuningDeep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance TuningTakuya UESHIN
 
TokyoWebminig カジュアルなHadoop
TokyoWebminig カジュアルなHadoopTokyoWebminig カジュアルなHadoop
TokyoWebminig カジュアルなHadoopTeruo Kawasaki
 
2014-07-26 Exploration into HDInsight Tuning Maniax 2014 Hadoopコース参戦記
2014-07-26 Exploration into HDInsight Tuning Maniax 2014 Hadoopコース参戦記2014-07-26 Exploration into HDInsight Tuning Maniax 2014 Hadoopコース参戦記
2014-07-26 Exploration into HDInsight Tuning Maniax 2014 Hadoopコース参戦記Yoshiyuki Nakamura
 
Introduction to Impala ~Hadoop用のSQLエンジン~ #hcj13w
Introduction to Impala ~Hadoop用のSQLエンジン~ #hcj13wIntroduction to Impala ~Hadoop用のSQLエンジン~ #hcj13w
Introduction to Impala ~Hadoop用のSQLエンジン~ #hcj13wCloudera Japan
 
PySpark Intro Part.2 with SQL Graph
PySpark Intro Part.2 with SQL GraphPySpark Intro Part.2 with SQL Graph
PySpark Intro Part.2 with SQL GraphOshitari_kochi
 
sparksql-hive-bench-by-nec-hwx-at-hcj16
sparksql-hive-bench-by-nec-hwx-at-hcj16sparksql-hive-bench-by-nec-hwx-at-hcj16
sparksql-hive-bench-by-nec-hwx-at-hcj16Yifeng Jiang
 
Dbts2015 tokyo vector_in_hadoop_vortex
Dbts2015 tokyo vector_in_hadoop_vortexDbts2015 tokyo vector_in_hadoop_vortex
Dbts2015 tokyo vector_in_hadoop_vortexKoji Shinkubo
 
20160127三木会 RDB経験者のためのspark
20160127三木会 RDB経験者のためのspark20160127三木会 RDB経験者のためのspark
20160127三木会 RDB経験者のためのsparkRyuji Tamagawa
 
Apache Sparkやってみたところ
Apache SparkやってみたところApache Sparkやってみたところ
Apache SparkやってみたところTatsunori Nishikori
 
9/16 Tokyo Apache Drill Meetup - drill vs sparksql
9/16 Tokyo Apache Drill Meetup - drill vs sparksql9/16 Tokyo Apache Drill Meetup - drill vs sparksql
9/16 Tokyo Apache Drill Meetup - drill vs sparksqlMitsutoshi Kiuchi
 
ATN No.1 MapReduceだけでない!? Hadoopとその仲間たち
ATN No.1 MapReduceだけでない!? Hadoopとその仲間たちATN No.1 MapReduceだけでない!? Hadoopとその仲間たち
ATN No.1 MapReduceだけでない!? Hadoopとその仲間たちAdvancedTechNight
 
OpenShift v3 Technical Overview
OpenShift v3 Technical OverviewOpenShift v3 Technical Overview
OpenShift v3 Technical OverviewNakayama Kenjiro
 
Spark Summit 2014 の報告と最近の取り組みについて
Spark Summit 2014 の報告と最近の取り組みについてSpark Summit 2014 の報告と最近の取り組みについて
Spark Summit 2014 の報告と最近の取り組みについてRecruit Technologies
 
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)NTT DATA OSS Professional Services
 
Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)Hadoop / Spark Conference Japan
 
Data Scientist Workbench - dots0729
Data Scientist Workbench - dots0729Data Scientist Workbench - dots0729
Data Scientist Workbench - dots0729s. kaijima
 

Semelhante a Hive on Spark の設計指針を読んでみた (20)

Yifeng spark-final-public
Yifeng spark-final-publicYifeng spark-final-public
Yifeng spark-final-public
 
Deep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance TuningDeep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance Tuning
 
TokyoWebminig カジュアルなHadoop
TokyoWebminig カジュアルなHadoopTokyoWebminig カジュアルなHadoop
TokyoWebminig カジュアルなHadoop
 
2014-07-26 Exploration into HDInsight Tuning Maniax 2014 Hadoopコース参戦記
2014-07-26 Exploration into HDInsight Tuning Maniax 2014 Hadoopコース参戦記2014-07-26 Exploration into HDInsight Tuning Maniax 2014 Hadoopコース参戦記
2014-07-26 Exploration into HDInsight Tuning Maniax 2014 Hadoopコース参戦記
 
Introduction to Impala ~Hadoop用のSQLエンジン~ #hcj13w
Introduction to Impala ~Hadoop用のSQLエンジン~ #hcj13wIntroduction to Impala ~Hadoop用のSQLエンジン~ #hcj13w
Introduction to Impala ~Hadoop用のSQLエンジン~ #hcj13w
 
PySpark Intro Part.2 with SQL Graph
PySpark Intro Part.2 with SQL GraphPySpark Intro Part.2 with SQL Graph
PySpark Intro Part.2 with SQL Graph
 
sparksql-hive-bench-by-nec-hwx-at-hcj16
sparksql-hive-bench-by-nec-hwx-at-hcj16sparksql-hive-bench-by-nec-hwx-at-hcj16
sparksql-hive-bench-by-nec-hwx-at-hcj16
 
Dbts2015 tokyo vector_in_hadoop_vortex
Dbts2015 tokyo vector_in_hadoop_vortexDbts2015 tokyo vector_in_hadoop_vortex
Dbts2015 tokyo vector_in_hadoop_vortex
 
20160127三木会 RDB経験者のためのspark
20160127三木会 RDB経験者のためのspark20160127三木会 RDB経験者のためのspark
20160127三木会 RDB経験者のためのspark
 
Apache Sparkやってみたところ
Apache SparkやってみたところApache Sparkやってみたところ
Apache Sparkやってみたところ
 
9/16 Tokyo Apache Drill Meetup - drill vs sparksql
9/16 Tokyo Apache Drill Meetup - drill vs sparksql9/16 Tokyo Apache Drill Meetup - drill vs sparksql
9/16 Tokyo Apache Drill Meetup - drill vs sparksql
 
ATN No.1 MapReduceだけでない!? Hadoopとその仲間たち
ATN No.1 MapReduceだけでない!? Hadoopとその仲間たちATN No.1 MapReduceだけでない!? Hadoopとその仲間たち
ATN No.1 MapReduceだけでない!? Hadoopとその仲間たち
 
Azure Datalake 大全
Azure Datalake 大全Azure Datalake 大全
Azure Datalake 大全
 
OpenShift v3 Technical Overview
OpenShift v3 Technical OverviewOpenShift v3 Technical Overview
OpenShift v3 Technical Overview
 
Spark Summit 2014 の報告と最近の取り組みについて
Spark Summit 2014 の報告と最近の取り組みについてSpark Summit 2014 の報告と最近の取り組みについて
Spark Summit 2014 の報告と最近の取り組みについて
 
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
 
Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)
 
OSC2014 Tokyo/Spring Hadoop
OSC2014 Tokyo/Spring HadoopOSC2014 Tokyo/Spring Hadoop
OSC2014 Tokyo/Spring Hadoop
 
Data Architecture
Data ArchitectureData Architecture
Data Architecture
 
Data Scientist Workbench - dots0729
Data Scientist Workbench - dots0729Data Scientist Workbench - dots0729
Data Scientist Workbench - dots0729
 

Mais de Recruit Technologies

新卒2年目が鍛えられたコードレビュー道場
新卒2年目が鍛えられたコードレビュー道場新卒2年目が鍛えられたコードレビュー道場
新卒2年目が鍛えられたコードレビュー道場Recruit Technologies
 
カーセンサーで深層学習を使ってUX改善を行った事例とそこからの学び
カーセンサーで深層学習を使ってUX改善を行った事例とそこからの学びカーセンサーで深層学習を使ってUX改善を行った事例とそこからの学び
カーセンサーで深層学習を使ってUX改善を行った事例とそこからの学びRecruit Technologies
 
Rancherを活用した開発事例の紹介 ~Rancherのメリットと辛いところ~
Rancherを活用した開発事例の紹介 ~Rancherのメリットと辛いところ~Rancherを活用した開発事例の紹介 ~Rancherのメリットと辛いところ~
Rancherを活用した開発事例の紹介 ~Rancherのメリットと辛いところ~Recruit Technologies
 
HadoopをBQにマイグレしようとしてる話
HadoopをBQにマイグレしようとしてる話HadoopをBQにマイグレしようとしてる話
HadoopをBQにマイグレしようとしてる話Recruit Technologies
 
リクルートグループの現場事例から見る AI/ディープラーニング ビジネス活用の勘所
リクルートグループの現場事例から見る AI/ディープラーニング ビジネス活用の勘所リクルートグループの現場事例から見る AI/ディープラーニング ビジネス活用の勘所
リクルートグループの現場事例から見る AI/ディープラーニング ビジネス活用の勘所Recruit Technologies
 
Company Recommendation for New Graduates via Implicit Feedback Multiple Matri...
Company Recommendation for New Graduates via Implicit Feedback Multiple Matri...Company Recommendation for New Graduates via Implicit Feedback Multiple Matri...
Company Recommendation for New Graduates via Implicit Feedback Multiple Matri...Recruit Technologies
 
リクルートにおけるマルチモーダル Deep Learning Web API 開発事例
リクルートにおけるマルチモーダル Deep Learning Web API 開発事例リクルートにおけるマルチモーダル Deep Learning Web API 開発事例
リクルートにおけるマルチモーダル Deep Learning Web API 開発事例Recruit Technologies
 
ユーザー企業内製CSIRTにおける対応のポイント
ユーザー企業内製CSIRTにおける対応のポイントユーザー企業内製CSIRTにおける対応のポイント
ユーザー企業内製CSIRTにおける対応のポイントRecruit Technologies
 
ユーザーからみたre:Inventのこれまでと今後
ユーザーからみたre:Inventのこれまでと今後ユーザーからみたre:Inventのこれまでと今後
ユーザーからみたre:Inventのこれまでと今後Recruit Technologies
 
Struggling with BIGDATA -リクルートおけるデータサイエンス/エンジニアリング-
Struggling with BIGDATA -リクルートおけるデータサイエンス/エンジニアリング-Struggling with BIGDATA -リクルートおけるデータサイエンス/エンジニアリング-
Struggling with BIGDATA -リクルートおけるデータサイエンス/エンジニアリング-Recruit Technologies
 
EMRでスポットインスタンスの自動入札ツールを作成する
EMRでスポットインスタンスの自動入札ツールを作成するEMRでスポットインスタンスの自動入札ツールを作成する
EMRでスポットインスタンスの自動入札ツールを作成するRecruit Technologies
 
リクルートにおけるセキュリティ施策方針とCSIRT組織運営のポイント
リクルートにおけるセキュリティ施策方針とCSIRT組織運営のポイントリクルートにおけるセキュリティ施策方針とCSIRT組織運営のポイント
リクルートにおけるセキュリティ施策方針とCSIRT組織運営のポイントRecruit Technologies
 
ユーザー企業内製CSIRTにおける対応のポイント
ユーザー企業内製CSIRTにおける対応のポイントユーザー企業内製CSIRTにおける対応のポイント
ユーザー企業内製CSIRTにおける対応のポイントRecruit Technologies
 
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアル
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアルリクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアル
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアルRecruit Technologies
 
「リクルートデータセット」 ~公開までの道のりとこれから~
「リクルートデータセット」 ~公開までの道のりとこれから~「リクルートデータセット」 ~公開までの道のりとこれから~
「リクルートデータセット」 ~公開までの道のりとこれから~Recruit Technologies
 

Mais de Recruit Technologies (20)

新卒2年目が鍛えられたコードレビュー道場
新卒2年目が鍛えられたコードレビュー道場新卒2年目が鍛えられたコードレビュー道場
新卒2年目が鍛えられたコードレビュー道場
 
カーセンサーで深層学習を使ってUX改善を行った事例とそこからの学び
カーセンサーで深層学習を使ってUX改善を行った事例とそこからの学びカーセンサーで深層学習を使ってUX改善を行った事例とそこからの学び
カーセンサーで深層学習を使ってUX改善を行った事例とそこからの学び
 
Rancherを活用した開発事例の紹介 ~Rancherのメリットと辛いところ~
Rancherを活用した開発事例の紹介 ~Rancherのメリットと辛いところ~Rancherを活用した開発事例の紹介 ~Rancherのメリットと辛いところ~
Rancherを活用した開発事例の紹介 ~Rancherのメリットと辛いところ~
 
Tableau活用4年の軌跡
Tableau活用4年の軌跡Tableau活用4年の軌跡
Tableau活用4年の軌跡
 
HadoopをBQにマイグレしようとしてる話
HadoopをBQにマイグレしようとしてる話HadoopをBQにマイグレしようとしてる話
HadoopをBQにマイグレしようとしてる話
 
LT(自由)
LT(自由)LT(自由)
LT(自由)
 
リクルートグループの現場事例から見る AI/ディープラーニング ビジネス活用の勘所
リクルートグループの現場事例から見る AI/ディープラーニング ビジネス活用の勘所リクルートグループの現場事例から見る AI/ディープラーニング ビジネス活用の勘所
リクルートグループの現場事例から見る AI/ディープラーニング ビジネス活用の勘所
 
Company Recommendation for New Graduates via Implicit Feedback Multiple Matri...
Company Recommendation for New Graduates via Implicit Feedback Multiple Matri...Company Recommendation for New Graduates via Implicit Feedback Multiple Matri...
Company Recommendation for New Graduates via Implicit Feedback Multiple Matri...
 
リクルート式AIの活用法
リクルート式AIの活用法リクルート式AIの活用法
リクルート式AIの活用法
 
銀行ロビーアシスタント
銀行ロビーアシスタント銀行ロビーアシスタント
銀行ロビーアシスタント
 
リクルートにおけるマルチモーダル Deep Learning Web API 開発事例
リクルートにおけるマルチモーダル Deep Learning Web API 開発事例リクルートにおけるマルチモーダル Deep Learning Web API 開発事例
リクルートにおけるマルチモーダル Deep Learning Web API 開発事例
 
ユーザー企業内製CSIRTにおける対応のポイント
ユーザー企業内製CSIRTにおける対応のポイントユーザー企業内製CSIRTにおける対応のポイント
ユーザー企業内製CSIRTにおける対応のポイント
 
ユーザーからみたre:Inventのこれまでと今後
ユーザーからみたre:Inventのこれまでと今後ユーザーからみたre:Inventのこれまでと今後
ユーザーからみたre:Inventのこれまでと今後
 
Struggling with BIGDATA -リクルートおけるデータサイエンス/エンジニアリング-
Struggling with BIGDATA -リクルートおけるデータサイエンス/エンジニアリング-Struggling with BIGDATA -リクルートおけるデータサイエンス/エンジニアリング-
Struggling with BIGDATA -リクルートおけるデータサイエンス/エンジニアリング-
 
EMRでスポットインスタンスの自動入札ツールを作成する
EMRでスポットインスタンスの自動入札ツールを作成するEMRでスポットインスタンスの自動入札ツールを作成する
EMRでスポットインスタンスの自動入札ツールを作成する
 
RANCHERを使ったDev(Ops)
RANCHERを使ったDev(Ops)RANCHERを使ったDev(Ops)
RANCHERを使ったDev(Ops)
 
リクルートにおけるセキュリティ施策方針とCSIRT組織運営のポイント
リクルートにおけるセキュリティ施策方針とCSIRT組織運営のポイントリクルートにおけるセキュリティ施策方針とCSIRT組織運営のポイント
リクルートにおけるセキュリティ施策方針とCSIRT組織運営のポイント
 
ユーザー企業内製CSIRTにおける対応のポイント
ユーザー企業内製CSIRTにおける対応のポイントユーザー企業内製CSIRTにおける対応のポイント
ユーザー企業内製CSIRTにおける対応のポイント
 
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアル
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアルリクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアル
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアル
 
「リクルートデータセット」 ~公開までの道のりとこれから~
「リクルートデータセット」 ~公開までの道のりとこれから~「リクルートデータセット」 ~公開までの道のりとこれから~
「リクルートデータセット」 ~公開までの道のりとこれから~
 

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

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