Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
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

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