SlideShare a Scribd company logo
1 of 40
Download to read offline
Developer Day
Tez  on  EMRを試してみた
1
G-‐‑‒1
クラスメソッド株式会社  能登  諭  
Ⓒ  Classmethod,  Inc.
2015年年03⽉月29⽇日
#cmdevio2015G
Ⓒ Classmethod, Inc.
自己紹介
• 氏名:能登 諭(のと さとし)!
• Twitter:@n3104!
• 得意分野:Hadoop!
• 好きなAWSサービス:EMR
2
Ⓒ Classmethod, Inc.
アジェンダ
• EMRとは
• Hiveとは
• Tezとは
• Tez on EMR
3
EMRとは
4
Ⓒ Classmethod, Inc.
Amazon Elastic MapReduce
• http://aws.amazon.com/jp/
elasticmapreduce
• AWSが提供するHadoopのウェブサービス
5
http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-what-is-emr.html
Ⓒ Classmethod, Inc.
Apache Hadoop
• http://hadoop.apache.org/
• HDFS(分散ファイルシステム)とMapReduce(並
列分散処理フレームワーク)を基礎とするオープン
ソースソフトウェア
• Hadoop2でYARN(リソース管理基盤)を追加
6
Ⓒ Classmethod, Inc.
Hadoop Distributed File System
• Master-Slave型の分散ファイルシステム
• ノードを追加することでスケール可能
7
https://hadoop.apache.org/docs/r1.2.1/hdfs_design.html
Ⓒ Classmethod, Inc.
MapReduce
• 処理をMapとReduceに分解して実装する並列分散
処理フレームワーク
• Data node上で処理を行うことでデータ転送時間を
最小化している
8
http://insights.wired.com/profiles/blogs/a-beginner-s-guide-to-cloud-apache-hadoop-and-mapreduce-paradigm
Ⓒ Classmethod, Inc.
EMRの特徴
• インフラの構築、保守が不要
• 処理の間だけ起動する
• 必要に応じてノード数を増減可能
• データはS3に保持する
• AWSの各種サービスとの連携が容易
9
http://aws.amazon.com/jp/elasticmapreduce/details/
Ⓒ Classmethod, Inc.
本家Hadoopとの違い
• Master node障害時はクラスタの再作成が必要
• 複数のジョブを同時に実行する際は複数クラスタを同
時に起動して実行する
• AWSが独自に拡張している部分のソースは公開され
ていない
10
Hiveとは
11
Ⓒ Classmethod, Inc.
Apache Hive
• https://hive.apache.org/
• HiveQL(SQL風の言語)を利用してMapReduce
処理を実行できるデータウェアハウス
12
https://cwiki.apache.org/confluence/display/Hive/Design
Ⓒ Classmethod, Inc.
HiveQLをMRジョブにコンパイル
hive> EXPLAIN SELECT COUNT(*) FROM impressions;
OK
STAGE DEPENDENCIES:
Stage-1 is a root stage
Stage-0 is a root stage
!
STAGE PLANS:
Stage: Stage-1
Map Reduce
Map Operator Tree:
TableScan
alias: impressions
...
!
Reduce Operator Tree:
Group By Operator
aggregations: count(VALUE._col0)
mode: mergepartial
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
Select Operator
...
!
Stage: Stage-0
Fetch Operator
limit: -1
13
Ⓒ Classmethod, Inc.
SQL on Hadoop
14
http://datadotz.com/sql-on-hadoop/
Ⓒ Classmethod, Inc.
一番いいのを頼む
15
2013/05 https://amplab.cs.berkeley.edu/benchmark/v1/
2014/01
http://hortonworks.com/blog/benchmarking-apache-
hive-13-enterprise-hadoop/
2014/01
http://blog.cloudera.com/blog/2014/01/impala-
performance-dbms-class-speed
2014/02 https://amplab.cs.berkeley.edu/benchmark/
2014/05
http://blog.cloudera.com/blog/2014/05/new-sql-choices-
in-the-apache-hadoop-ecosystem-why-impala-continues-
to-lead/
2014/09
http://blog.cloudera.com/blog/2014/09/new-
benchmarks-for-sql-on-hadoop-impala-1-4-widens-the-
performance-gap/
2014/11
http://www.slideshare.net/hadoopxnttdata/sql-on-
hadoop-201411
Ⓒ Classmethod, Inc.
ファイルフォーマットも重要
• テキストファイル
• SequenceFile
• Avro
• RCFile
• Parquet
16
Ⓒ Classmethod, Inc.
圧縮形式もいろいろ
• GZIP
• BZIP2
• LZO
• Snappy
17
Ⓒ Classmethod, Inc.
大まかな使い分け
• バッチ処理(数分∼)
• Hive
• 対話処理(数秒∼数分)
• Spark SQL
• Impala
• Presto
• Drill
18
Ⓒ Classmethod, Inc.
EMRで利用可能なプロダクト
19
Hive Application
http://docs.aws.amazon.com/ja_jp/
ElasticMapReduce/latest/DeveloperGuide/
emr-hive.html
AMI Version 3.6.0だとHive
0.13.1
Impala Application
http://docs.aws.amazon.com/ja_jp/
ElasticMapReduce/latest/DeveloperGuide/
emr-impala.html
AMI Version 3.6.0だとImpala
1.2.4
Spark
Bootstrap
Action
https://github.com/awslabs/emr-bootstrap-
actions/tree/master/spark
Spark 1.3.0 (1.3.0.d) with EMR
AMI 3.5.x and later
Presto
Bootstrap
Action
https://github.com/awslabs/emr-bootstrap-
actions/tree/master/presto まだベータらしい
Drill
Bootstrap
Action
https://github.com/awslabs/emr-bootstrap-
actions/tree/master/drill
動く?
Phoenix
Bootstrap
Action
https://github.com/awslabs/emr-bootstrap-
actions/tree/master/phoenix
動く?
Tez
Bootstrap
Action
https://forums.aws.amazon.com/thread.jspa?
threadID=170560
ベータかつGitHubにも公開され
ていない
Tezとは
20
Ⓒ Classmethod, Inc.
Apache Tez
• http://tez.apache.org/
• YARN上で動作するDAG(directed-acyclic-
graph)モデルによる並列分散処理フレームワーク
21
http://www.slideshare.net/ydn/tez-bikas/2
Ⓒ Classmethod, Inc.
DAG API
• 直接DAGを記述するAPIとなっている
22
http://hortonworks.com/blog/expressing-data-processing-in-apache-tez/
Ⓒ Classmethod, Inc.
ソフトウェアスタック
• MapReduceの位置を置き換える
• MapReduce互換の実装も提供しておりMapReduce
ジョブの実行も可能
23
http://hortonworks.com/blog/apache-hadoop-2-is-ga/
Ⓒ Classmethod, Inc.
デプロイが簡単
• YARN Applicationとして作られているためクラス
タの個々のノードへのインストールが不要
• 利用ライブラリは予めHDFSにコピーしておく
• 複数バーションを同時に利用できる
24
!
!
Client
Machine
!
!
Node
Manager
TezTask !
!
Node
Manager
TezTaskTezClient
HDFS
Tez Lib 1 Tez Lib 2
!
!
Client
Machine
TezClient
http://www.slideshare.net/ydn/tez-bikas/8
Ⓒ Classmethod, Inc.
Hive on Tez
• https://cwiki.apache.org/confluence/
display/Hive/Hive+on+Tez
• Hiveの実行エンジンとしてMRの代わりにTezを利用
25
http://tm.durusau.net/?p=48476
Ⓒ Classmethod, Inc.
Hive on MRとの比較
• DAGで表現することで段数を減らす事ができる
26
http://www.slideshare.net/Hadoop_Summit/w-235phall1pandey/9
Tez on EMR
27
Ⓒ Classmethod, Inc.
前提
• AMI Version 3.6.0
• Hadoop 2.4.0
• Hive 0.13.1
• Tez 0.4.1-incubating(※1)
!
※1 Tez 0.5を利用するにはHive 0.14が必要なため
今回はTez 0.4.1を利用した
28
Ⓒ Classmethod, Inc.
事前作業
• EMRクラスタの起動
• Master NodeにSSHで接続
• hadoopユーザーで接続
29
Ⓒ Classmethod, Inc.
セットアップ手順(1)
# Tezのビルド用にMavenとProtocol Buffersをインストール
sudo wget http://repos.fedorapeople.org/repos/dchen/apache-
maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-
apache-maven.repo
sudo sed -i s/$releasever/6/g /etc/yum.repos.d/epel-apache-
maven.repo
sudo yum install -y apache-maven
sudo yum install -y protobuf-devel
!
# Tezのダウンロードとビルド
wget http://archive.apache.org/dist/incubator/tez/tez-0.4.1-
incubating/tez-0.4.1-incubating-src.tar.gz
tar xzf tez-0.4.1-incubating-src.tar.gz
cd tez-0.4.1-incubating-src
mvn clean package -DskipTests=true -Dmaven.javadoc.skip=true
30
Ⓒ Classmethod, Inc.
セットアップ手順(2)
# mapred-site.xmlの更新(Hiveのみ利用の場合は不要)
cd
sed -i -e 's:<name>mapreduce.framework.name</
name><value>yarn</value>:<name>mapreduce.framework.name</
name><value>yarn-tez</value>:g' conf/mapred-site.xml
!
# ジョブの起動用のtezフォルダ作成
mkdir tez tez/conf tez/jars
cp -r tez-0.4.1-incubating-src/tez-dist/target/tez-0.4.1-
incubating/tez-0.4.1-incubating/* tez/jars
!
# HDFS上にTez実行用のライブラリをコピー
hadoop fs -mkdir -p /apps/tez-0.4.1
hadoop fs -copyFromLocal tez/jars/* /apps/tez-0.4.1/
hadoop fs -copyFromLocal share/hadoop/mapreduce /apps/
tez-0.4.1/
31
Ⓒ Classmethod, Inc.
セットアップ手順(3)
# Tezの設定ファイルの作成
cat << 'EOF' >> tez/conf/tez-site.xml
<?xml version="1.0"?>
<configuration>
<property><name>tez.lib.uris</name><value>${fs.defaultFS}/apps/tez-0.4.1/,$
{fs.defaultFS}/apps/tez-0.4.1/lib/,${fs.defaultFS}/apps/tez-0.4.1/mapreduce/,$
{fs.defaultFS}/apps/tez-0.4.1/mapreduce/lib/</value></property>
<property><name>tez.use.cluster.hadoop-libs</name><value>true</value></
property>
</configuration>
EOF
!
# hiveJars用にホームディレクトリを作っておく
hadoop fs -mkdir ./
!
# Tezの設定ファイルとライブラリをHive起動時にクラスパスに追加するように環境変数を設
定
TEZ_CONF_DIR=/home/hadoop/tez/conf/
TEZ_JARS=/home/hadoop/tez/jars/
export HADOOP_CLASSPATH=${TEZ_CONF_DIR}:${TEZ_JARS}/*:${TEZ_JARS}/lib/*
32
Ⓒ Classmethod, Inc.
Hiveの起動と実行エンジンの切り替え
hive
hive> SET hive.execution.engine=tez;
33
Ⓒ Classmethod, Inc.
検証結果
• CloudFrontのアクセスログの集計
• レコード数: 112,019
• EMRのノード数
• Master: 1(m3.xlarge)
• Core: 2(m3.xlarge)
• レスポンスタイム
• Hive on MR: 約220秒
• Hive on Tez: 約18秒
34
Ⓒ Classmethod, Inc.
テーブル定義
CREATE EXTERNAL TABLE IF NOT EXISTS impressions (
dt STRING,
tm STRING,
xedgelocation STRING,
scbytes INT,
cip STRING,
csmethod STRING,
cshost STRING,
csuristem STRING,
csstatus STRING,
csreferrer STRING,
csuseragent STRING,
csuriquery STRING,
cscookie STRING,
edgeresulttype STRING,
edgerequestid STRING,
hostheader STRING,
protocol STRING,
csbytes INT
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY 't'
LOCATION 's3://cf-logs/';
35
Ⓒ Classmethod, Inc.
検証用SQL
SELECT
dt,
tm,
COUNT(*) AS rps
FROM `impressions`
GROUP BY dt, tm
ORDER BY rps DESC LIMIT 10;
36
Ⓒ Classmethod, Inc.
Hive on MRと比較する場合
• mapreduce.framework.name=yarnのままにす
る必要がある。yarn-tezとするとMRの実行エンジ
ンがTezになる
37
MR
MR
YARN
MR
Tez
Tez
mapreduce.frame
work.name
Hive Hive Hive
hive.execution.en
gine
Ⓒ Classmethod, Inc.
セットアップのポイント
• tez.use.cluster.hadoop-libs=trueとする
• 実行環境のHadoopのライブラリを利用するオプション。EMRは独自の拡張が
あるため有効にした方が確実
• tez.lib.urisとして/home/hadoop/share/hadoop/mapreduce
配下のライブラリを含める
• yarn.application.classpathに/home/hadoop/share/hadoop/mapreduce
配下が含まれていないため別途HDFS上にコピーする
• hiveJars用にHDFS上にホームディレクトリを作成しておく
• https://cwiki.apache.org/confluence/display/Hive/Configuration
+Properties#ConfigurationProperties-hive.jar.directory
• 公式ドキュメントも読んだ方がよい
• http://tez.apache.org/install_pre_0_5_0.html
38
Ⓒ Classmethod, Inc.
まとめ
• EMRでもTezを利用することで既存のジョブの高速
化が期待できる。特にMRジョブが高速化されるのは
他のフレームワークにはないメリット
• EMRに自前でTezを入れるのはかなり無理矢理なの
で公式サポートを待った方が無難
39
Developer Day
ご静聴ありがとうございました。
スライドは後日ブログで公開します。
40
G-1
Ⓒ Classmethod, Inc.
#cmdevio2015G

More Related Content

What's hot

AWS Elastic MapReduce詳細 -ほぼ週刊AWSマイスターシリーズ第10回-
AWS Elastic MapReduce詳細 -ほぼ週刊AWSマイスターシリーズ第10回-AWS Elastic MapReduce詳細 -ほぼ週刊AWSマイスターシリーズ第10回-
AWS Elastic MapReduce詳細 -ほぼ週刊AWSマイスターシリーズ第10回-
SORACOM, INC
 
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとはdb tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
Koji Shinkubo
 
elasticsearch-hadoopをつかってごにょごにょしてみる
elasticsearch-hadoopをつかってごにょごにょしてみるelasticsearch-hadoopをつかってごにょごにょしてみる
elasticsearch-hadoopをつかってごにょごにょしてみる
Katsushi Yamashita
 
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
YusukeKuramata
 

What's hot (20)

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
 
Hive on Spark の設計指針を読んでみた
Hive on Spark の設計指針を読んでみたHive on Spark の設計指針を読んでみた
Hive on Spark の設計指針を読んでみた
 
HiveとImpalaのおいしいとこ取り
HiveとImpalaのおいしいとこ取りHiveとImpalaのおいしいとこ取り
HiveとImpalaのおいしいとこ取り
 
Kuduを調べてみた #dogenzakalt
Kuduを調べてみた #dogenzakaltKuduを調べてみた #dogenzakalt
Kuduを調べてみた #dogenzakalt
 
マルチテナント Hadoop クラスタのためのモニタリング Best Practice
マルチテナント Hadoop クラスタのためのモニタリング Best Practiceマルチテナント Hadoop クラスタのためのモニタリング Best Practice
マルチテナント Hadoop クラスタのためのモニタリング Best Practice
 
AWS Elastic MapReduce詳細 -ほぼ週刊AWSマイスターシリーズ第10回-
AWS Elastic MapReduce詳細 -ほぼ週刊AWSマイスターシリーズ第10回-AWS Elastic MapReduce詳細 -ほぼ週刊AWSマイスターシリーズ第10回-
AWS Elastic MapReduce詳細 -ほぼ週刊AWSマイスターシリーズ第10回-
 
Hiveを高速化するLLAP
Hiveを高速化するLLAPHiveを高速化するLLAP
Hiveを高速化するLLAP
 
最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り
 
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとはdb tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
 
Cloudera impalaの性能評価(Hiveとの比較)
Cloudera impalaの性能評価(Hiveとの比較)Cloudera impalaの性能評価(Hiveとの比較)
Cloudera impalaの性能評価(Hiveとの比較)
 
NetflixにおけるPresto/Spark活用事例
NetflixにおけるPresto/Spark活用事例NetflixにおけるPresto/Spark活用事例
NetflixにおけるPresto/Spark活用事例
 
Sparkストリーミング検証
Sparkストリーミング検証Sparkストリーミング検証
Sparkストリーミング検証
 
elasticsearch-hadoopをつかってごにょごにょしてみる
elasticsearch-hadoopをつかってごにょごにょしてみるelasticsearch-hadoopをつかってごにょごにょしてみる
elasticsearch-hadoopをつかってごにょごにょしてみる
 
オライリーセミナー Hive入門 #oreilly0724
オライリーセミナー Hive入門  #oreilly0724オライリーセミナー Hive入門  #oreilly0724
オライリーセミナー Hive入門 #oreilly0724
 
Cloudera Impalaをサービスに組み込むときに苦労した話
Cloudera Impalaをサービスに組み込むときに苦労した話Cloudera Impalaをサービスに組み込むときに苦労した話
Cloudera Impalaをサービスに組み込むときに苦労した話
 
Sparkパフォーマンス検証
Sparkパフォーマンス検証Sparkパフォーマンス検証
Sparkパフォーマンス検証
 
Evolution of Impala #hcj2014
Evolution of Impala #hcj2014Evolution of Impala #hcj2014
Evolution of Impala #hcj2014
 
Spark Streamingを活用したシステムの検証結果と設計時のノウハウ
Spark Streamingを活用したシステムの検証結果と設計時のノウハウSpark Streamingを活用したシステムの検証結果と設計時のノウハウ
Spark Streamingを活用したシステムの検証結果と設計時のノウハウ
 
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
 
Apache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory dataApache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory data
 

Viewers also liked

3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
AdvancedTechNight
 
D3.jsと学ぶVisualization(可視化)の世界
D3.jsと学ぶVisualization(可視化)の世界D3.jsと学ぶVisualization(可視化)の世界
D3.jsと学ぶVisualization(可視化)の世界
AdvancedTechNight
 
CSS3Rendererを使ってiOSでもサクサク3D
CSS3Rendererを使ってiOSでもサクサク3DCSS3Rendererを使ってiOSでもサクサク3D
CSS3Rendererを使ってiOSでもサクサク3D
AdvancedTechNight
 
Programming Hive Reading #4
Programming Hive Reading #4Programming Hive Reading #4
Programming Hive Reading #4
moai kids
 

Viewers also liked (20)

爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話
 
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
 
Hivemallで始める不動産価格推定サービス
Hivemallで始める不動産価格推定サービスHivemallで始める不動産価格推定サービス
Hivemallで始める不動産価格推定サービス
 
Cloud Native Hadoop #cwt2016
Cloud Native Hadoop #cwt2016Cloud Native Hadoop #cwt2016
Cloud Native Hadoop #cwt2016
 
D3.jsと学ぶVisualization(可視化)の世界
D3.jsと学ぶVisualization(可視化)の世界D3.jsと学ぶVisualization(可視化)の世界
D3.jsと学ぶVisualization(可視化)の世界
 
大規模データに対するデータサイエンスの進め方 #CWT2016
大規模データに対するデータサイエンスの進め方 #CWT2016大規模データに対するデータサイエンスの進め方 #CWT2016
大規模データに対するデータサイエンスの進め方 #CWT2016
 
ちょっと理解に自信がないな という皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
ちょっと理解に自信がないなという皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)ちょっと理解に自信がないなという皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
ちょっと理解に自信がないな という皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
 
Apache development with GitHub and Travis CI
Apache development with GitHub and Travis CIApache development with GitHub and Travis CI
Apache development with GitHub and Travis CI
 
Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3
 
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料) 40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
 
データ分析チームの振り返り
データ分析チームの振り返りデータ分析チームの振り返り
データ分析チームの振り返り
 
Amazon Machine Learning概要
Amazon Machine Learning概要Amazon Machine Learning概要
Amazon Machine Learning概要
 
CSS3Rendererを使ってiOSでもサクサク3D
CSS3Rendererを使ってiOSでもサクサク3DCSS3Rendererを使ってiOSでもサクサク3D
CSS3Rendererを使ってiOSでもサクサク3D
 
トレジャーデータ 導入体験記 リブセンス編
トレジャーデータ 導入体験記 リブセンス編トレジャーデータ 導入体験記 リブセンス編
トレジャーデータ 導入体験記 リブセンス編
 
1000台規模のHadoopクラスタをHive/Tezアプリケーションにあわせてパフォーマンスチューニングした話
1000台規模のHadoopクラスタをHive/Tezアプリケーションにあわせてパフォーマンスチューニングした話1000台規模のHadoopクラスタをHive/Tezアプリケーションにあわせてパフォーマンスチューニングした話
1000台規模のHadoopクラスタをHive/Tezアプリケーションにあわせてパフォーマンスチューニングした話
 
AWS Black Belt Online Seminar 2016 Amazon EMR
AWS Black Belt Online Seminar 2016 Amazon EMRAWS Black Belt Online Seminar 2016 Amazon EMR
AWS Black Belt Online Seminar 2016 Amazon EMR
 
The new repository in AEM 6
The new repository in AEM 6The new repository in AEM 6
The new repository in AEM 6
 
Cloudera + MicrosoftでHadoopするのがイイらしい。 #CWT2016
Cloudera + MicrosoftでHadoopするのがイイらしい。 #CWT2016Cloudera + MicrosoftでHadoopするのがイイらしい。 #CWT2016
Cloudera + MicrosoftでHadoopするのがイイらしい。 #CWT2016
 
基幹業務もHadoop(EMR)で!!のその後
基幹業務もHadoop(EMR)で!!のその後基幹業務もHadoop(EMR)で!!のその後
基幹業務もHadoop(EMR)で!!のその後
 
Programming Hive Reading #4
Programming Hive Reading #4Programming Hive Reading #4
Programming Hive Reading #4
 

Similar to Tez on EMRを試してみた

[AWSマイスターシリーズ] Amazon Elastic MapReduce (EMR)
[AWSマイスターシリーズ] Amazon Elastic MapReduce (EMR)[AWSマイスターシリーズ] Amazon Elastic MapReduce (EMR)
[AWSマイスターシリーズ] Amazon Elastic MapReduce (EMR)
Amazon Web Services Japan
 
Hiveハンズオン
HiveハンズオンHiveハンズオン
Hiveハンズオン
Satoshi Noto
 

Similar to Tez on EMRを試してみた (20)

20120303 _JAWS-UG_SUMMIT2012_エキスパートセッションEMR編
20120303 _JAWS-UG_SUMMIT2012_エキスパートセッションEMR編20120303 _JAWS-UG_SUMMIT2012_エキスパートセッションEMR編
20120303 _JAWS-UG_SUMMIT2012_エキスパートセッションEMR編
 
TokyoWebminig カジュアルなHadoop
TokyoWebminig カジュアルなHadoopTokyoWebminig カジュアルなHadoop
TokyoWebminig カジュアルなHadoop
 
20161027 hadoop summit Generating Recommendations at Amazon Scale with Apach...
20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apach...20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apach...
20161027 hadoop summit Generating Recommendations at Amazon Scale with Apach...
 
A 2-3ゾウ使いへの第一歩 hadoop on azure 編
A 2-3ゾウ使いへの第一歩 hadoop on azure 編A 2-3ゾウ使いへの第一歩 hadoop on azure 編
A 2-3ゾウ使いへの第一歩 hadoop on azure 編
 
ゾウ使いへの第一歩
ゾウ使いへの第一歩ゾウ使いへの第一歩
ゾウ使いへの第一歩
 
Hadoop事始め
Hadoop事始めHadoop事始め
Hadoop事始め
 
Cloudera大阪セミナー 20130219
Cloudera大阪セミナー 20130219Cloudera大阪セミナー 20130219
Cloudera大阪セミナー 20130219
 
[AWSマイスターシリーズ] Amazon Elastic MapReduce (EMR)
[AWSマイスターシリーズ] Amazon Elastic MapReduce (EMR)[AWSマイスターシリーズ] Amazon Elastic MapReduce (EMR)
[AWSマイスターシリーズ] Amazon Elastic MapReduce (EMR)
 
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
 
分散処理基盤ApacheHadoop入門とHadoopエコシステムの最新技術動向(OSC2015 Kansai発表資料)
分散処理基盤ApacheHadoop入門とHadoopエコシステムの最新技術動向(OSC2015 Kansai発表資料)分散処理基盤ApacheHadoop入門とHadoopエコシステムの最新技術動向(OSC2015 Kansai発表資料)
分散処理基盤ApacheHadoop入門とHadoopエコシステムの最新技術動向(OSC2015 Kansai発表資料)
 
Hiveハンズオン
HiveハンズオンHiveハンズオン
Hiveハンズオン
 
Apache Big Data Miami 2017 - Hadoop Source Code Reading #23 #hadoopreading
Apache Big Data Miami 2017 - Hadoop Source Code Reading #23 #hadoopreadingApache Big Data Miami 2017 - Hadoop Source Code Reading #23 #hadoopreading
Apache Big Data Miami 2017 - Hadoop Source Code Reading #23 #hadoopreading
 
CDH4.1オーバービュー
CDH4.1オーバービューCDH4.1オーバービュー
CDH4.1オーバービュー
 
20111130 10 aws-meister-emr_long-public
20111130 10 aws-meister-emr_long-public20111130 10 aws-meister-emr_long-public
20111130 10 aws-meister-emr_long-public
 
AWS Black Belt Online Seminar 2017 Amazon Athena
AWS Black Belt Online Seminar 2017 Amazon AthenaAWS Black Belt Online Seminar 2017 Amazon Athena
AWS Black Belt Online Seminar 2017 Amazon Athena
 
Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017
Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017
Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017
 
Hadoopトレーニング番外編 〜間違えられやすいHadoopの7つの仕様〜
Hadoopトレーニング番外編 〜間違えられやすいHadoopの7つの仕様〜Hadoopトレーニング番外編 〜間違えられやすいHadoopの7つの仕様〜
Hadoopトレーニング番外編 〜間違えられやすいHadoopの7つの仕様〜
 
俺とHashiCorp
俺とHashiCorp俺とHashiCorp
俺とHashiCorp
 
Hadoop splittable-lzo-compression
Hadoop splittable-lzo-compressionHadoop splittable-lzo-compression
Hadoop splittable-lzo-compression
 
Hadoop ecosystem NTTDATA osc15tk
Hadoop ecosystem NTTDATA osc15tkHadoop ecosystem NTTDATA osc15tk
Hadoop ecosystem NTTDATA osc15tk
 

More from Satoshi Noto (9)

このサービスは俺に聞け勉強会(機械学習)
このサービスは俺に聞け勉強会(機械学習)このサービスは俺に聞け勉強会(機械学習)
このサービスは俺に聞け勉強会(機械学習)
 
読書会のすすめ
読書会のすすめ読書会のすすめ
読書会のすすめ
 
大晦日のメッセージ配信の裏側
大晦日のメッセージ配信の裏側大晦日のメッセージ配信の裏側
大晦日のメッセージ配信の裏側
 
Fullbokをがっつり使ってみた
Fullbokをがっつり使ってみたFullbokをがっつり使ってみた
Fullbokをがっつり使ってみた
 
Run Spark on EMRってどんな仕組みになってるの?
Run Spark on EMRってどんな仕組みになってるの?Run Spark on EMRってどんな仕組みになってるの?
Run Spark on EMRってどんな仕組みになってるの?
 
MapReduceプログラミング入門
MapReduceプログラミング入門MapReduceプログラミング入門
MapReduceプログラミング入門
 
Hadoop概要説明
Hadoop概要説明Hadoop概要説明
Hadoop概要説明
 
MapReduce入門
MapReduce入門MapReduce入門
MapReduce入門
 
ただいまHadoop勉強中
ただいまHadoop勉強中ただいまHadoop勉強中
ただいまHadoop勉強中
 

Tez on EMRを試してみた

  • 1. Developer Day Tez  on  EMRを試してみた 1 G-‐‑‒1 クラスメソッド株式会社  能登  諭   Ⓒ  Classmethod,  Inc. 2015年年03⽉月29⽇日 #cmdevio2015G
  • 2. Ⓒ Classmethod, Inc. 自己紹介 • 氏名:能登 諭(のと さとし)! • Twitter:@n3104! • 得意分野:Hadoop! • 好きなAWSサービス:EMR 2
  • 3. Ⓒ Classmethod, Inc. アジェンダ • EMRとは • Hiveとは • Tezとは • Tez on EMR 3
  • 5. Ⓒ Classmethod, Inc. Amazon Elastic MapReduce • http://aws.amazon.com/jp/ elasticmapreduce • AWSが提供するHadoopのウェブサービス 5 http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-what-is-emr.html
  • 6. Ⓒ Classmethod, Inc. Apache Hadoop • http://hadoop.apache.org/ • HDFS(分散ファイルシステム)とMapReduce(並 列分散処理フレームワーク)を基礎とするオープン ソースソフトウェア • Hadoop2でYARN(リソース管理基盤)を追加 6
  • 7. Ⓒ Classmethod, Inc. Hadoop Distributed File System • Master-Slave型の分散ファイルシステム • ノードを追加することでスケール可能 7 https://hadoop.apache.org/docs/r1.2.1/hdfs_design.html
  • 8. Ⓒ Classmethod, Inc. MapReduce • 処理をMapとReduceに分解して実装する並列分散 処理フレームワーク • Data node上で処理を行うことでデータ転送時間を 最小化している 8 http://insights.wired.com/profiles/blogs/a-beginner-s-guide-to-cloud-apache-hadoop-and-mapreduce-paradigm
  • 9. Ⓒ Classmethod, Inc. EMRの特徴 • インフラの構築、保守が不要 • 処理の間だけ起動する • 必要に応じてノード数を増減可能 • データはS3に保持する • AWSの各種サービスとの連携が容易 9 http://aws.amazon.com/jp/elasticmapreduce/details/
  • 10. Ⓒ Classmethod, Inc. 本家Hadoopとの違い • Master node障害時はクラスタの再作成が必要 • 複数のジョブを同時に実行する際は複数クラスタを同 時に起動して実行する • AWSが独自に拡張している部分のソースは公開され ていない 10
  • 12. Ⓒ Classmethod, Inc. Apache Hive • https://hive.apache.org/ • HiveQL(SQL風の言語)を利用してMapReduce 処理を実行できるデータウェアハウス 12 https://cwiki.apache.org/confluence/display/Hive/Design
  • 13. Ⓒ Classmethod, Inc. HiveQLをMRジョブにコンパイル hive> EXPLAIN SELECT COUNT(*) FROM impressions; OK STAGE DEPENDENCIES: Stage-1 is a root stage Stage-0 is a root stage ! STAGE PLANS: Stage: Stage-1 Map Reduce Map Operator Tree: TableScan alias: impressions ... ! Reduce Operator Tree: Group By Operator aggregations: count(VALUE._col0) mode: mergepartial outputColumnNames: _col0 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE Select Operator ... ! Stage: Stage-0 Fetch Operator limit: -1 13
  • 14. Ⓒ Classmethod, Inc. SQL on Hadoop 14 http://datadotz.com/sql-on-hadoop/
  • 15. Ⓒ Classmethod, Inc. 一番いいのを頼む 15 2013/05 https://amplab.cs.berkeley.edu/benchmark/v1/ 2014/01 http://hortonworks.com/blog/benchmarking-apache- hive-13-enterprise-hadoop/ 2014/01 http://blog.cloudera.com/blog/2014/01/impala- performance-dbms-class-speed 2014/02 https://amplab.cs.berkeley.edu/benchmark/ 2014/05 http://blog.cloudera.com/blog/2014/05/new-sql-choices- in-the-apache-hadoop-ecosystem-why-impala-continues- to-lead/ 2014/09 http://blog.cloudera.com/blog/2014/09/new- benchmarks-for-sql-on-hadoop-impala-1-4-widens-the- performance-gap/ 2014/11 http://www.slideshare.net/hadoopxnttdata/sql-on- hadoop-201411
  • 16. Ⓒ Classmethod, Inc. ファイルフォーマットも重要 • テキストファイル • SequenceFile • Avro • RCFile • Parquet 16
  • 17. Ⓒ Classmethod, Inc. 圧縮形式もいろいろ • GZIP • BZIP2 • LZO • Snappy 17
  • 18. Ⓒ Classmethod, Inc. 大まかな使い分け • バッチ処理(数分∼) • Hive • 対話処理(数秒∼数分) • Spark SQL • Impala • Presto • Drill 18
  • 19. Ⓒ Classmethod, Inc. EMRで利用可能なプロダクト 19 Hive Application http://docs.aws.amazon.com/ja_jp/ ElasticMapReduce/latest/DeveloperGuide/ emr-hive.html AMI Version 3.6.0だとHive 0.13.1 Impala Application http://docs.aws.amazon.com/ja_jp/ ElasticMapReduce/latest/DeveloperGuide/ emr-impala.html AMI Version 3.6.0だとImpala 1.2.4 Spark Bootstrap Action https://github.com/awslabs/emr-bootstrap- actions/tree/master/spark Spark 1.3.0 (1.3.0.d) with EMR AMI 3.5.x and later Presto Bootstrap Action https://github.com/awslabs/emr-bootstrap- actions/tree/master/presto まだベータらしい Drill Bootstrap Action https://github.com/awslabs/emr-bootstrap- actions/tree/master/drill 動く? Phoenix Bootstrap Action https://github.com/awslabs/emr-bootstrap- actions/tree/master/phoenix 動く? Tez Bootstrap Action https://forums.aws.amazon.com/thread.jspa? threadID=170560 ベータかつGitHubにも公開され ていない
  • 21. Ⓒ Classmethod, Inc. Apache Tez • http://tez.apache.org/ • YARN上で動作するDAG(directed-acyclic- graph)モデルによる並列分散処理フレームワーク 21 http://www.slideshare.net/ydn/tez-bikas/2
  • 22. Ⓒ Classmethod, Inc. DAG API • 直接DAGを記述するAPIとなっている 22 http://hortonworks.com/blog/expressing-data-processing-in-apache-tez/
  • 23. Ⓒ Classmethod, Inc. ソフトウェアスタック • MapReduceの位置を置き換える • MapReduce互換の実装も提供しておりMapReduce ジョブの実行も可能 23 http://hortonworks.com/blog/apache-hadoop-2-is-ga/
  • 24. Ⓒ Classmethod, Inc. デプロイが簡単 • YARN Applicationとして作られているためクラス タの個々のノードへのインストールが不要 • 利用ライブラリは予めHDFSにコピーしておく • 複数バーションを同時に利用できる 24 ! ! Client Machine ! ! Node Manager TezTask ! ! Node Manager TezTaskTezClient HDFS Tez Lib 1 Tez Lib 2 ! ! Client Machine TezClient http://www.slideshare.net/ydn/tez-bikas/8
  • 25. Ⓒ Classmethod, Inc. Hive on Tez • https://cwiki.apache.org/confluence/ display/Hive/Hive+on+Tez • Hiveの実行エンジンとしてMRの代わりにTezを利用 25 http://tm.durusau.net/?p=48476
  • 26. Ⓒ Classmethod, Inc. Hive on MRとの比較 • DAGで表現することで段数を減らす事ができる 26 http://www.slideshare.net/Hadoop_Summit/w-235phall1pandey/9
  • 28. Ⓒ Classmethod, Inc. 前提 • AMI Version 3.6.0 • Hadoop 2.4.0 • Hive 0.13.1 • Tez 0.4.1-incubating(※1) ! ※1 Tez 0.5を利用するにはHive 0.14が必要なため 今回はTez 0.4.1を利用した 28
  • 29. Ⓒ Classmethod, Inc. 事前作業 • EMRクラスタの起動 • Master NodeにSSHで接続 • hadoopユーザーで接続 29
  • 30. Ⓒ Classmethod, Inc. セットアップ手順(1) # Tezのビルド用にMavenとProtocol Buffersをインストール sudo wget http://repos.fedorapeople.org/repos/dchen/apache- maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel- apache-maven.repo sudo sed -i s/$releasever/6/g /etc/yum.repos.d/epel-apache- maven.repo sudo yum install -y apache-maven sudo yum install -y protobuf-devel ! # Tezのダウンロードとビルド wget http://archive.apache.org/dist/incubator/tez/tez-0.4.1- incubating/tez-0.4.1-incubating-src.tar.gz tar xzf tez-0.4.1-incubating-src.tar.gz cd tez-0.4.1-incubating-src mvn clean package -DskipTests=true -Dmaven.javadoc.skip=true 30
  • 31. Ⓒ Classmethod, Inc. セットアップ手順(2) # mapred-site.xmlの更新(Hiveのみ利用の場合は不要) cd sed -i -e 's:<name>mapreduce.framework.name</ name><value>yarn</value>:<name>mapreduce.framework.name</ name><value>yarn-tez</value>:g' conf/mapred-site.xml ! # ジョブの起動用のtezフォルダ作成 mkdir tez tez/conf tez/jars cp -r tez-0.4.1-incubating-src/tez-dist/target/tez-0.4.1- incubating/tez-0.4.1-incubating/* tez/jars ! # HDFS上にTez実行用のライブラリをコピー hadoop fs -mkdir -p /apps/tez-0.4.1 hadoop fs -copyFromLocal tez/jars/* /apps/tez-0.4.1/ hadoop fs -copyFromLocal share/hadoop/mapreduce /apps/ tez-0.4.1/ 31
  • 32. Ⓒ Classmethod, Inc. セットアップ手順(3) # Tezの設定ファイルの作成 cat << 'EOF' >> tez/conf/tez-site.xml <?xml version="1.0"?> <configuration> <property><name>tez.lib.uris</name><value>${fs.defaultFS}/apps/tez-0.4.1/,$ {fs.defaultFS}/apps/tez-0.4.1/lib/,${fs.defaultFS}/apps/tez-0.4.1/mapreduce/,$ {fs.defaultFS}/apps/tez-0.4.1/mapreduce/lib/</value></property> <property><name>tez.use.cluster.hadoop-libs</name><value>true</value></ property> </configuration> EOF ! # hiveJars用にホームディレクトリを作っておく hadoop fs -mkdir ./ ! # Tezの設定ファイルとライブラリをHive起動時にクラスパスに追加するように環境変数を設 定 TEZ_CONF_DIR=/home/hadoop/tez/conf/ TEZ_JARS=/home/hadoop/tez/jars/ export HADOOP_CLASSPATH=${TEZ_CONF_DIR}:${TEZ_JARS}/*:${TEZ_JARS}/lib/* 32
  • 34. Ⓒ Classmethod, Inc. 検証結果 • CloudFrontのアクセスログの集計 • レコード数: 112,019 • EMRのノード数 • Master: 1(m3.xlarge) • Core: 2(m3.xlarge) • レスポンスタイム • Hive on MR: 約220秒 • Hive on Tez: 約18秒 34
  • 35. Ⓒ Classmethod, Inc. テーブル定義 CREATE EXTERNAL TABLE IF NOT EXISTS impressions ( dt STRING, tm STRING, xedgelocation STRING, scbytes INT, cip STRING, csmethod STRING, cshost STRING, csuristem STRING, csstatus STRING, csreferrer STRING, csuseragent STRING, csuriquery STRING, cscookie STRING, edgeresulttype STRING, edgerequestid STRING, hostheader STRING, protocol STRING, csbytes INT ) ROW FORMAT DELIMITED FIELDS TERMINATED BY 't' LOCATION 's3://cf-logs/'; 35
  • 36. Ⓒ Classmethod, Inc. 検証用SQL SELECT dt, tm, COUNT(*) AS rps FROM `impressions` GROUP BY dt, tm ORDER BY rps DESC LIMIT 10; 36
  • 37. Ⓒ Classmethod, Inc. Hive on MRと比較する場合 • mapreduce.framework.name=yarnのままにす る必要がある。yarn-tezとするとMRの実行エンジ ンがTezになる 37 MR MR YARN MR Tez Tez mapreduce.frame work.name Hive Hive Hive hive.execution.en gine
  • 38. Ⓒ Classmethod, Inc. セットアップのポイント • tez.use.cluster.hadoop-libs=trueとする • 実行環境のHadoopのライブラリを利用するオプション。EMRは独自の拡張が あるため有効にした方が確実 • tez.lib.urisとして/home/hadoop/share/hadoop/mapreduce 配下のライブラリを含める • yarn.application.classpathに/home/hadoop/share/hadoop/mapreduce 配下が含まれていないため別途HDFS上にコピーする • hiveJars用にHDFS上にホームディレクトリを作成しておく • https://cwiki.apache.org/confluence/display/Hive/Configuration +Properties#ConfigurationProperties-hive.jar.directory • 公式ドキュメントも読んだ方がよい • http://tez.apache.org/install_pre_0_5_0.html 38
  • 39. Ⓒ Classmethod, Inc. まとめ • EMRでもTezを利用することで既存のジョブの高速 化が期待できる。特にMRジョブが高速化されるのは 他のフレームワークにはないメリット • EMRに自前でTezを入れるのはかなり無理矢理なの で公式サポートを待った方が無難 39