aws black belt tech シリーズ 2015 - amazon elastic mapreduce

84
1 Amazon Elastic MapReduce AWS Black Belt Tech Webinar 2015 アマゾン データ サービス ジャパン株式会社 ソリューションアーキテクト 岩永 亮介 2015/9/16 ※2016/08/17更新

Upload: amazon-web-services-japan

Post on 22-Jan-2018

21.956 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

1

Amazon Elastic MapReduce

AWS Black Belt Tech Webinar 2015アマゾン データ サービス ジャパン株式会社ソリューションアーキテクト 岩永 亮介

2015/9/16 ※2016/08/17更新

Page 2: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

2

Amazon Elastic MapReduceの歴史

• 2009年に最初のリリース– MapReduceジョブを、ボタン1つで実行できる環境を提供

• Hadoopエコシステムの進化に対応– Pig, Hive, HBase, Impala, Presto, Hue, Hadoop 2.0, Spark

• AWSサービスの進化に対応– Spot, IAM, DynamoDB, VPC, CloudWatch, CLI, Kinesis, KMS

→ もはやMapReduceだけではない!

Page 3: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

3

ビッグデータパイプライン

S3

Kinesis

DynamoDB

AWS Lambda

KCL Apps

EMR

EMR Redshift

MachineLearning

Collect Process Analyze

Store

Data Collectionand Storage

DataProcessing

EventProcessing

Data Analysis

Data Answers

Page 4: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

4

分散処理基盤

• 分散処理に必要なリソースを簡単に調達/廃棄可能

– Master/Core/Task node

– EMRFS

– Bootstrap Action, Steps

分散処理アプリケーション

• 複雑な設定無しに分散アプリケーションを利用可能

– Hadoop, YARN

– Hive, Pig, HBase, Spark..

Amazon EMRを構成する2つの要素

Page 5: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

5

Agenda

• 分散処理基盤としてのAmazon EMR

• Amazon EMR主要アップデート (2014/10以降)

• 分散処理アプリケーションとしてのAmazon EMR

• まとめ

Page 6: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

6

分散処理基盤としてのAmazon EMR- アーキテクチャ -

Page 7: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

7

Task Node

Task Instance Group

Amazon EMRのアーキテクチャ

security group

security group

Master Node

Master Instance Group

Amazon S3Amazon

DynamoDB

Amazon Kinesis

Core Node

Core Instance Group

HDFS HDFS

HDFS HDFS

Task Node

Task Instance Group

スレーブ群を管理

HDFSアクセス

AWSサービスアクセス

Page 8: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

8

Amazon EMR Master Instance Group

• Master Nodeは1つ– Failoverは非対応

• いわゆるマスターの役割を担う– NameNodeや

JobTrackerなどが動く

– Core NodeやTask Nodeの監視

Master Node

Master Instance Group

Hadoop1: JobTracker

Hadoop2: ResourceManager

HDFS: NameNode

Hive: HiveServer, MetaStore

Presto: Coordinator

Page 9: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

9

Amazon EMR Core Instance Group

• 1つ以上のCore Node

• いわゆるスレーブの役割を担う

– TaskTrackerなど

– DataNodeが動きローカルディスクがHDFSとして使われる

HDFS

Core Node

Core Instance Group

Hadoop1: TaskTracker

Hadoop2: NodeManager

HDFS: DataNode

Presto: Worker

Page 10: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

10

Amazon EMR Core Instance Group

• Core Node追加可能

– HDFS容量増加

– CPU/RAM増設

• HDFSを持っているため、削減はできない

– 4.1.0からは削減も可能に

HDFS

Core Node

Core Instance Group

Hadoop1: TaskTracker

Hadoop2: NodeManager

HDFS: DataNode

Presto: Worker

Page 11: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

11

Amazon EMR Task Instance Group

• HDFSを持たない以外はCoreと同じ役割

• HDFSのデータはCore Nodeにアクセスする

• HDFSを持たないので削除も自由

Task Node

Task Instance Group

Hadoop1: TaskTracker

Hadoop2: NodeManager

(Presto: Worker)

Page 12: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

12

Amazon EMR Task Instance Group

• 複数Group設定可能

– Spotのbid価格を調整

– Instance Typeを調整

• 余っているRIを活用したり、市場価格に合わせてSpotを調整したりと柔軟に対応

Task Instance Group 2

Task Instance Group 1

c3.xlarge * 2

bid: $0.1

r3.xlarge * 2

bid: $0.5

Page 13: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

13

Spot Instanceの活用例

Task Instance GroupCore Instance Group

予測されたコストで最低要件を満たす 低コストでより高速に

On-demandをCore Nodeに利用

最低要件を満たすだけのキャパシティをOn-demand価格で確保

Spot InstanceをTask Nodeに利用

On-demandの最大90%引き程度の価格で追加のリソースを確保

例: m3.xlarge 6台で10時間かかる処理 (倍の12台なら、5時間で終わると仮定)

Core Node(On-demand)のみ: $0.336×10h×6台 = $20.16 で10時間※

Task Node(Spot)で倍に: $0.336×5h×6台 + $0.12×5h×6台 = $13.68 で5時間※

※2015年9月16日現在のus-east-1の価格です。Spotの価格は時によって変動するので仮の価格です。

Page 14: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

14

分散処理基盤としてのAmazon EMR- 機能・特徴 -

Page 15: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

15

EMRFS: Amazon S3をHDFSの様に扱う

• 計算資源とストレージを隔離できる

• クラスタのシャットダウンが可能

– クラスタを消してもデータをロストしない

• 複数クラスタ間でデータ共有が簡単

– クラスタのバージョンアップ検証が並行できる

• データの高い耐久性

EMR

EMR

Amazon S3

Page 16: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

16

EMRFSの特徴

• “s3://”と指定するだけで利用可能

• Amazon S3の機能がそのまま使える– 例: 古いデータはAmazon Glacierに自動で移動させる

• Amazon S3のサーバサイド・クライアントサイドの暗号化も利用可能– 他のアプリでクライアント暗号化したAmazon S3データも読み

出し可能

• クラスタを消してもデータは消えない

Page 17: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

17

EMRFSのConsistent View

• Amazon S3は結果整合性

– 書き込み直後の読み取りは不整合の可能性

• EMRFSではConsistent Viewを提供

– Amazon DynamoDBにメタデータを格納し整合性担保

• 結果としてオブジェクトのリスト取得も高速に

Amazon S3 Amazon DynamoDB

EMRFSのメタデータを格納

Page 18: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

18

Amazon EMRならではの使い方

• 必要な時だけクラスタ起動– 消せばお金はかからない– 処理が終わったら自動で消え

る設定も可能

• データは全てAmazon S3– クラスタを消してもデータは

消えない– データを貯める段階ではクラ

スタ不要

t

Page 19: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

19

Amazon EMRの機能: Bootstrap Action

• 全てのNode起動時に実行されるスクリプト– 実行可能ファイルであれば何でもOK

• Bash, Ruby, Python, etc.

– Amazon S3に置いて指定、コマンドライン引数も自由に指定

• 任意のソフトウェアをインストールしたり、設定したりできる– AWS提供のものもいくつか存在する

Page 20: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

20

Amazon EMRの機能: Step

• クラスタが準備できたら始まる処理– クラスタ起動時に設定することもできるし、起動しているクラスタ

に後から追加することもできる– 例: 日次のETL処理を行うHiveQL実行

• Amazon S3上のjarファイルを指定して実行– Streaming, Hive, Pig, SparkはEMRがサポート– script-runner.jarでbashスクリプトを実行させることも可能

• 最後のStepが終わったら自動でクラスタを終了させることもできる(Auto-terminate)

Page 21: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

21

Amazon EMRでのジョブ実行方法

• Stepで実行– Amazon EMRの仕組みの上で実行

– 成功/失敗等を簡単に管理できる

– 現状はシリアル実行のみ

• 各アプリケーション毎のインタフェースで実行– Master Nodeにsshして、コマンド実行

– Hiveserver, spark-submit等でジョブを叩き込むなど

Page 22: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

22

Amazon EMR主要アップデート(2014/10以降)

Page 23: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

23

Amazon EMR主要アップデート (2014/10以降)

• (前出)複数のTask Node Group

• カスタムSecurity Group

• Amazon S3のクライアントサイド暗号化対応

• アプリケーションサポート追加(Hue, Spark)

• Private SubnetでもEMRが起動可能に

• EBSの設定が可能に & M4/C4もサポート

• Release 4.x, 5.x

Page 24: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

24

カスタムSecurity Groupが利用可能に

• 自身で作成したSecurity Groupを指定可能– 例: クラスタ毎に別のSecurity Groupを設定して、分離度を上げる

• Security Groupは2種類– Managed: 必須、必要なルールが自動的に追加される

• SG内、master-slave間、管理用通信(Amazonから8443 portへ)

– Additional: 任意、追加のルールを設定する用途

https://aws.amazon.com/about-aws/whats-new/2015/01/22/customizable-security-groups-and-

multiple-task-instances-now-available-for-amazon-emr/

Page 25: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

25

Amazon S3クライアントサイド暗号化対応

• EMRFSの拡張として提供– EMRFSを使っていれば透過的に暗号化・復号される

• クライアントサイド暗号化– (サーバサイド暗号化では、Amazon S3の内部で暗号化も復号も行う)

– クライアントサイド暗号化では、Amazon EMRで暗号化・復号する

• Amazon S3への保存前に暗号化して保存する

• 鍵の提供元として、Amazon KMSまたはカスタムプロバイダを指定可能

https://aws.amazon.com/about-aws/whats-new/2015/03/amazon-emr-support-for-amazon-s3-client-

side-encryption-now-available/

Page 26: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

26

EMRFS – クライアントサイド暗号化

Amazon S3

クラ

イア

ント

から

Am

azo

n S

3に

暗号

化し

て保

存ク

ライ

アン

トサ

イド

暗号

化を

有効

化し

たEM

RFSで

復号

して

読み

込み

キーベンダー (AWS KMSか、カスタムのプロバイダ)

(クライアントサイドで暗号化されたオブジェクト)

Page 27: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

27

アプリケーションサポートの追加

• Spark– AMI Version 3.8.0以降

• Hue– AMI Version 3.3.0以降

– Release 4.1.0以降

• Release 4.0.0には含まれていないので注意

https://aws.amazon.com/about-aws/whats-new/2015/06/apache-spark-now-available-on-amazon-emr/

https://aws.amazon.com/about-aws/whats-new/2014/11/07/amazon-elastic-mapreduce-now-supports-hue/

Page 28: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

28

Private SubnetでもEMRが起動可能に

• SubnetがPrivateでも起動可能に– EMR 4.2.0以降で対応

• Publicとの違い– S3のVPC endpointが必要

– DynamoDB等へのアクセスにはNAT GW等が必要

– EMR Serviceが利用するSecurity Groupが必要

Page 29: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

29

EBSの設定が可能に&M4/C4もサポート

• EMRのAPI等からEBSを設定可能に

– タイプ、サイズ等を指定可能

• EBSのSC1/ST1もサポート

– HDFSで効果を発揮する

• M4とC4が利用可能に

Page 30: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

30

Amazon EMR Release (2015/07以降)

• Release 4.0.0 – 2015/07• Release 4.1.0 – 2015/09• Release 4.2.0 – 2015/11• Release 4.3.0 – 2016/01• Release 4.4.0 – 2016/03• Release 4.5.0 – 2016/04• Release 4.6.0 – 2016/04• Release 4.7.1 – 2016/06• Release 4.7.2 – 2016/07• Release 5.0.0 – 2016/08

• 約12ヶ月間で10回のリリース

• 進化の早いHadoopエコシステムに追従していくため

Page 31: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

31

Amazon EMR Release登場

• ポートやパスを標準的なものへ変更– Amazon EMR独自の設定から、オープンソースの標準設定へ

• アプリケーションの設定を直接的に変更できる様に– 設定ファイルを編集するのではなく、パラメータを直接指定できる

• マネージメントコンソール、ドキュメントも刷新– Quick Createでより簡単にクラスタ作成

– ドキュメントは、Management GuideとRelease Guideへ

※従来のAMIベースのバージョンの時との差分について、ドキュメントに詳細がまとまっています

http://docs.aws.amazon.com/ElasticMapReduce/latest/ReleaseGuide/emr-release-differences.html

Page 32: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

32

Release: ポートやパスの変更

• オープンソースの標準的な設定に変更– 従来はカスタムのポートやパスを利用していた

– 変更例:

• yarn.resourcemanager.webapp.address port 9026 => 8088

• /home/hadoop/hive => /usr/lib/hive, /etc/hive/conf, /var/log/hive

• 実行ユーザもコンポーネント毎に別ユーザへ– 従来は全てhadoopユーザだった

– yarnユーザ、hiveユーザなどに変更

Page 33: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

33

Release: アプリケーションの設定変更

• Classification + Propertiesで直接的な指定– 従来はBootstrap Actionなどで変更していた

– 以下の様な構造のデータを指定するだけで設定変更可能になった

http://docs.aws.amazon.com/ElasticMapReduce/latest/ReleaseGuide/emr-configure-apps.html

[{"Classification": "mapred-site","Properties": {"mapred.tasktracker.map.tasks.maximum": "2","mapreduce.map.sort.spill.percent": "90","mapreduce.tasktracker.reduce.tasks.maximum": "5"

}}

]

/etc/hadoop/conf/mapred-site.xmlに設定値が記述される

Page 34: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

34

Release: コンソール、ドキュメント変更

• マネージメントコンソールでQuick Create可能に– ソフトウェア、ハードウェア、セキュリティの3項目だけ

– 従来通りのコンソールもGo to advanced optionsのリンクから利用可能

• ドキュメントが新たにリリース– Management Guide

• Amazon EMRのサービスとプラットフォームに関するドキュメント• http://docs.aws.amazon.com/ElasticMapReduce/latest/ManagementGuide

– Release Guide• インストールされているソフトウェア等のリリースに関するドキュメント• http://docs.aws.amazon.com/ElasticMapReduce/latest/ReleaseGuide

Page 35: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

35

アプリケーションの変更履歴 (〜4.7.2) 続く

Page 36: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

36

アプリケーションの変更履歴 (〜4.7.2)

Page 37: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

37

アプリケーションの変更履歴 (〜5.0.0)

Page 38: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

38

Release 4.0.0

• サポートアプリケーションが以下に変更– Hadoop 2.6.0

– Hive 1.0.0

– Pig 0.14.0

– Mahout 0.10.0

– Spark 1.4.1

• Apache Bigtopベースのパッケージングシステムへ– これまでよりも、速い更新が可能に

Page 39: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

39

Release 4.1.0

• アプリケーション更新– Spark 1.5.0

– Hue 3.7.1 (新規)

• サンドボックスで、開発中のアプリケーションも利用可能– Presto 0.119

– Zeppelin 0.6 (Snapshot)

– Oozie 4.0.1

Page 40: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

40

Release 4.2.0

• アプリケーション更新– Spark 1.5.2

– Ganglia 3.6.0 (新規)

• サンドボックス更新– Presto 0.125

– Zeppelin 0.5.5

– Oozie 4.2.0

Page 41: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

41

Release 4.3.0

• アプリケーション更新– Hadoop 2.7.1

– Spark 1.6.0

– Ganglia 3.7.2

• サンドボックス更新– Presto 0.130

Page 42: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

42

Release 4.4.0

• アプリケーション更新

– HCatalog 1.0.0 (新規)

– Mahout 0.11.1

• サンドボックス更新

– Sqoop 1.4.6 (新規)

– Presto 0.136

– Zeppelin 0.5.6

• Sparkのデフォルト設定変更

– Dynamic allocationがデフォルトで有効に

• Java 8が同梱

– JAVA_HOMEを設定するだけで使える

Page 43: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

43

Release 4.5.0

• アプリケーション更新

– Spark 1.6.1

– Hadoop 2.7.2

• サンドボックス更新

– Presto 0.140

• EMRFSの機能追加

– S3のSSE-KMS暗号化が利用可能に

• AWS KMSで作成したCMKを指定できる

Page 44: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

44

Release 4.6.0

• アプリケーション更新– HBase 1.2.0 (新規) – NoSQL on Hadoop

• サンドボックス更新– Zookeeper 3.4.8 (新規)

– Presto 0.143

Page 45: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

45

Release 4.7.1 ※バグ修正があったので4.7.0は非推奨

• アプリケーション更新– Phoenix 4.7.0 (新規) – SQL on HBase

– Tez 0.8.3 (新規) – DAG engine on YARN

– HBase 1.2.1

– Mahaut 0.12.0

• サンドボックス更新– Presto 0.147

Page 46: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

46

Release 4.7.2

• アプリケーション更新– Mahout 0.12.2

– Spark 1.6.2

• サンドボックス更新– Presto 0.148

Page 47: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

47

Release 5.0.0

• アプリケーション更新– Hive 2.1– Presto 0.150– Spark 2.0 (Scala 2.11)– Hue 3.10.0– Pig 0.16.0– Tez 0.8.4– Zeppelin 0.6.1

• デフォルト変更– Java 8– Tez (Hive, Pig)

• デバッグ改善– Stepの失敗理由が簡単に見

れる様に

• Sandboxが無くなった– アプリケーション名が変更

されたので注意

Page 48: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

48

分散処理アプリケーションとしてのAmazon EMR

Page 49: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

49

Amazon EMRにおけるアプリケーション

• サポートアプリケーション– クラスタ作成時に簡単なオプションをつけるだけでインストー

ル可能なもの

– Release Label/AMI Version毎に使えるアプリケーション、バージョンが異なる

• カスタムインストールアプリケーション– サポートが無くても、Bootstrap ActionやStepsを組み合わせ

て任意のアプリケーションをインストール可能

Page 50: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

50

アプリケーション: Hadoop

• YARN = Yet-Another-Resource-Negotiator

• Hadoop2から導入されたリソース管理の仕組み– 以前は全てJobTrackerが行っていた

• Resource Requestベースのスケジューラ– ApplicationMasterからのリクエストに

応じて、空いているリソースをResourceManagerが割り当てる

MapReduce

Pig Hive OtherOther

HDFS

OtherMap

ReducePig Hive

YARN

HDFS

Hadoop V1

Hadoop V2

Page 51: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

51

YARN: ResourceManager

• マスターサーバで稼働

• スレーブ群のリソース情報を集約

– CPU, Memory, etc.

• 必要なリソースを探して割り当てる

• ジョブの管理は行わない

– ApplicationMasterの仕事

http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html

Page 52: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

52

YARN: NodeManager

• スレーブサーバで稼働

• そのサーバのリソース情報をRMに報告

• サーバ上のContainerの管理を行う

– 要求に答えてContainerを起動する

http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html

Page 53: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

53

YARN: Container

• スレーブのリソースが切り出されたもの

• NMによって起動される

• 実行方式– DefaultContainerExecutor

• プロセス

– LinuxContainerExecutor• cgroups

– DockerContainerExecutor• Docker

http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html

Page 54: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

54

YARN: ApplicationMaster

• ジョブ全体を管理するContainer

– 旧JobTrackerの様な存在

– ジョブ毎に1つのAM

• ジョブを分散処理するContainer全体の進捗管理や監視を行う

– Scheduler

http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html

Page 55: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

55

Amazon EMRとYARN

• MapReduce, Hive, Pig, Spark on YARN– Amazon EMRクラスタが持つ計算資源を、YARNがアプリケー

ションに割り振ってくれる

• マルチテナントなクラスタも簡単に作れる– MRでもHiveでもSparkでも、共通のリソースを分割して使える

Page 56: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

56

アプリケーション: Hive

• SQL likeな宣言的言語で、ビッグデータに対する処理が行えるアプリケーション

• データソースに対してスキーマを定義することで、あたかもテーブルの様に扱える– 通常はHDFSがデータソース– Amazon EMRではEMRFS(Amazon S3)が利用可能

• 他にも、Amazon Kinesis, Amazon DynamoDBへのコネクタを提供

• 処理の実際は実行エンジンによって異なる– MapReduce, Tez, Spark

https://hive.apache.org/

Page 57: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

57

Hiveの処理例

Metastore

HDFS

Cluster

Amazon S3

HiveserverCREATE

TABLE

SELECT

FROM

1: テーブル定義でHDFSやAmazon S3をソースに指定

2: テーブル定義がメタデータとして保存される

3: 定義したテーブルに対して処理を実行 4: テーブルの

メタデータを取得

5:クラスタに処理を依頼

6: 実際のデータソースから読み出しつつ指定された処理を行う

AmazonDynamoDB

Amazon Kinesis

Page 58: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

58

Hive Metastoreの重要性

• 他のSQL実行エンジンでも同じMetastoreを参照可能

• MetastoreのMySQLをクラスタ外に持つことも可能– Amazon EMRの通常は

Masterのローカル

Metastore

Amazon S3

HDFS

Page 59: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

59

新しいファイルフォーマット ORC File / Parquet

• 列指向ファイルフォーマット– カラム毎にデータをまとめて保存する– 特定の列を扱う処理ではファイル全体を読む必要が

ない– → Optimized Row Columnar(ORC) File / Parquet

• 行指向ファイルフォーマット– 1行ずつファイルに保存する– 1カラムのみ必要でも、レコード全体を読む必要があ

る– → TEXTFILE, SEQUENCEFILE

ORCのデータ構造

https://orc.apache.org/docs/spec-intro.html

Page 60: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

60

列指向フォーマットを使うメリット

• 特定列のみの読み書きが効率的– ビッグデータ分析では全列を使うことは稀

– 単純な統計データならメタデータのみで完結する

• 列毎には似たデータが続くので圧縮効率が良い

• 行毎にグループ化されているので、1行のデータは1つのファイルに収まっている

Page 61: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

61

HiveでのORC File/Parquetの使い方

• テーブル定義で指定するだけ

• あとは何も意識しなくて良い

CREATE TABLE t (

col1 STRING,

) STORED AS [ORC/PARQUET];

INSERT INTO t (…);

SELECT col1 FROM t;

Page 62: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

62

HiveでAmazon Kinesisのデータを処理

• Amazon Kinesisが保持するStreamデータを、Hiveのテーブルとして扱える– Amazon Kinesisの保持期限を考慮して、データアーカイブ用途など– 注: Hiveでは速度が出ないので、いわゆるストリーム処理は厳しい

• Stream内のShard毎にMapperがデータを読み出す– デフォルトはAmazon Kinesisの保持データをフルスキャン– チェックポイント(Amazon DynamoDBに記録)を使うと、前回読みだした

データ以降のみ読むことも可能

Shard-0

Shard-1

Mapper

Mapper

SELECT

FROM

123

id data

1 …

2 …

3 …Amazon Kinesis

Page 63: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

63

HiveでAmazon Kinesisのデータを処理Hiveテーブル作成

Amazon KinesisStreamを指定

HQLの実行(例)

通常のHQLを実行するだけ。内部的にはAmazon Kinesisからデータを取得し処理を行う

Page 64: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

64

アプリケーション: Spark

• 高速な分散処理フレームワークとして話題– メモリキャッシュ、なるべく

ディスクを使わない– 繰り返し処理(機械学習等)で

効果が高い

• フレームワーク上で、更にアプリケーションが展開– SQL,ストリーム,機械学習,グ

ラフ

http://spark.apache.org/

Page 65: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

65

Spark SQL & DataFrame API

• Spark SQL– DataFrame APIを操作する

1つの手段– Hive Metastoreも利用可能

• DataFrame API– RDD + Schema– SQL/Java/Scala/Python/

Rで同等の処理速度を実現• JVMのバイトコードへ変換

http://www.slideshare.net/databricks/2015-0616-spark-summit/16

http://spark.apache.org/sql/

Page 66: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

66

• Discretized Stream(DStream)と呼ばれる、高レベルの抽象表現

• Resilient Distributed Dataset(RDD)のシーケンスとして表現される– いわゆる、マイクロバッチ処理

DStreamRDD@T1 RDD@T2

Messages

Receiver

Spark Streaming – 基本コンセプト

Page 67: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

67

Amazon KinesisとSpark Streaming

• Amazon KinesisのStreamが、Amazon EMR上のSparkにDStreamとして流れてくる– Sparkの中にAmazon Kinesis用のライブラリが同梱されている– 裏側では、Kinesis Client Libraryを利用して読み込み

• 数秒〜数分のマイクロバッチで、ニア-リアルタイム処理を実現– 速報値ダッシュボード、異常検知など

http://spark.apache.org/docs/latest/streaming-kinesis-integration.html

Shard-0

Shard-1

KCL thread

KCL threadAmazon Kinesis

DStream

RDD@T1 RDD@T2

Page 68: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

68

Spark Dynamic Resource Allocation

• 複数Executorのメモリ上でRDDをキャッシュ– Heapを全て使えるわけではないので、サイズに注意

• Dynamic Resource Allocation = Executorの数を動的に調整可能– StreamingのApplicationがトラフィックに合わせてスケール

– spark-shell等が使わないリソースを確保し続けることもない

– 4.0.0では面倒な設定が終えてあるので、すぐに利用可能!

https://spark.apache.org/docs/1.4.1/job-scheduling.html

Page 69: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

69

まとめ

Page 70: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

70

分散処理基盤

• 分散処理に必要なリソースを簡単に調達/廃棄可能

分散処理アプリケーション

• 複雑な設定無しに分散アプリケーションを利用可能

Amazon EMRで分散処理

分散処理したいデータがあるなら、ボタン1つで今すぐに!

Page 71: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

71

参考資料(英語)

• Amazon EMR Management Guidehttp://docs.aws.amazon.com/ElasticMapReduce/latest/ManagementGuide

• Amazon EMR Release Guidehttp://docs.aws.amazon.com/ElasticMapReduce/latest/ReleaseGuide

• Amazon EMR API Referencehttp://docs.aws.amazon.com/ElasticMapReduce/latest/API/

• Amazon EMR Developer Guide (2.x and 3.x 向け)http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/

• AWS CLI emrhttp://docs.aws.amazon.com/cli/latest/reference/emr/index.html

Page 72: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

72

Q&A

次回Webinarのお申し込みhttp://aws.amazon.com/jp/event_schedule/

Page 73: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

73

Webinar資料の配置場所

• AWS クラウドサービス活用資料集– http://aws.amazon.com/jp/aws-jp-introduction/

Page 74: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

74

公式Twitter/FacebookAWSの最新情報をお届けします

@awscloud_jp

検索

最新技術情報、イベント情報、お役立ち情報、お得なキャンペーン情報などを日々更新しています!

もしくはhttp://on.fb.me/1vR8yWm

Page 75: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

75

ご参加ありがとうございました。

Page 76: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

76

Appendix

Page 77: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

77

IAM Roleの指定が必須に

• 2015年6月30日以降、IAM Roleを指定しないとクラスタが起動できなくなった

• IAM Roleは2種類、デフォルトで作成される– EMR role

• Amazon EMRが、Amazon EC2を起動したりするのに必要な権限

– EC2 instance profile

• Amazon EC2が、Amazon S3等にアクセスするのに必要な権限

http://aws.typepad.com/sajp/2015/06/emr-mandatory-iam-update.html

Page 78: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

78

Amazon EMR Application 紹介 for 5.0.0

• 分散処理系

– Hadoop, Hive, Tez, Spark, Presto, Pig, Mahout, Sqoop

• データベース系

– HBase, Phoenix

• GUI系

– Hue, Zeppelin, Oozie

• その他

– Ganglia, HCatalog, Zookeeper

Page 79: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

79

Application 紹介: 分散処理系

• Hadoop– 分散処理の基盤。YARN(リソース管理)+HDFS(分散ストレージ)の上で、

各種アプリが実行される。MapReduceもその1つ。多くのEMRアプリがYARNを使うので、ほぼ必須。

• Hive– YARN上で実行される、分散SQL実行環境。実行エンジンとして

MapReduceなどが使える。S3のデータを直接読み書き可能。

• Tez– YARN上でDAG(有効非巡回グラフ)を実行するのに最適化したエンジン。

Hiveの実行エンジンに指定するだけで、多くのHiveクエリが高速化する。

Page 80: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

80

Application 紹介: 分散処理系

• Spark– 分散処理のフレームワーク。YARN上で実行でき、MapReduce

よりも高速かつ簡単に分散処理可能。Spark上でSpark SQL(Hive互換)やSpark Streaming(ストリーム処理), MLlib(機械学習)といったこともでき、今最も注目されるプロジェクト。

• Presto– 分散SQL実行エンジン。YARNではなく独自のクラスタ構成だが、

SQLの実行に特化していてかなり高速。異なるストレージ間でのJOINも可能。SQLはANSI SQL準拠。

Page 81: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

81

Application 紹介: 分散処理系

• Pig– MapReduceを独自DSLで定義して実行できる。新規で使われるこ

とは最近少なくなってきた。

• Mahout– MapReduceやSpark上で動く機械学習ライブラリ。新規で使われ

ることは最近少なくなってきた。

• Sqoop– RDBMSと、HDFSやS3の間でのデータの移動をMapReduceで分散

処理する。

Page 82: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

82

Application 紹介: データベース系

• HBase– HDFS上に構成される分散KVS。高いスループットや大容量な

データの扱いが得意。

• Phoenix– HBaseのデータに対してSQLインタフェースでアクセスできる。

Page 83: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

83

Application 紹介: GUI系

• Hue– Hiveのテーブルを管理、クエリを実行して結果を確認できるGUI。

• Zeppelin– GUIからSparkのコードやSpark SQLを実行したり、結果をグラフ

などで可視化し、それを保存・再実行できるノートブック。

• Oozie– ワークフローを定義してスケジュール実行できる。MapReduceや

Hiveなどをジョブとして扱える。

Page 84: AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce

84

Application 紹介: その他

• Ganglia– インスタンスのリソース(CPU,Memory,Network等)の状態を収集

して、可視化できる運用ソフト。

• HCatalog– HiveのテーブルにPig等からアクセスできるようにするツール。

• Zookeeper– 分散型のコーディネータで、KVSや分散ロック、リーダー選定等の

機能を持つ。分散処理アプリの裏側で使われている(HBase)。