Contenu connexe
Similaire à Amazon Elastic MapReduce with Hive/Presto ハンズオン(講義)
Similaire à Amazon Elastic MapReduce with Hive/Presto ハンズオン(講義) (20)
Plus de Amazon Web Services Japan
Plus de Amazon Web Services Japan (20)
Amazon Elastic MapReduce with Hive/Presto ハンズオン(講義)
- 12. 12
Amazon Elastic MapReduceとは?
• 1クリックでHadoopクラスタが⼿手に⼊入る
– 使い終わったらまとめて捨てるのも簡単
– スポットインスタンスを使ったコストカットも
• 設定済のアプリケーションがすぐ使える
– Application: Hive, Hue, Impalaなど
– Bootstrap Action: Presto, Sparkなど
• ⾏行行うべき処理理を簡単に設定できる
– ジョブが終わったらクラスタを消すところまで⾃自動化
- 13. 13
Task Node
Task Instance Group
Amazon EMRのアーキテクチャ
security group
security group
Master Node
Master Instance Group
Amazon
S3
DynamoDB
Amazon
Kinesis
Core Node
Core Instance Group
HDFS HDFS
HDFS HDFS
Task Node
Task Instance Group
スレーブ群を
管理理 HDFS
アクセス
AWSサービス
アクセス
- 14. 14
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
- 15. 15
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
- 16. 16
Amazon EMR Core Instance Group
• Core Node追加可能
– HDFS容量量増加
– CPU/RAM増設
• 但し、HDFSを持って
いるため、削減はで
きない
HDFS
Core Node
Core Instance Group
Hadoop1: TaskTracker
Hadoop2: NodeManager
HDFS: DataNode
Presto: Worker
- 17. 17
Amazon EMR Task Instance Group
• HDFSを持たない以外
はCoreと同じ役割
• HDFSのデータは
Core Nodeにアクセ
スする
• HDFSを持たないので
削除も⾃自由
Task Node
Task Instance Group
Hadoop1: TaskTracker
Hadoop2: NodeManager
Presto: Worker
- 18. 18
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
- 19. 19
参考: スポットリクエストと課⾦金金
単価
時間
1h 1h
<1h
スポット価格
⼊入札額
課⾦金金額
②⼊入札額>スポット価格
となったので
インスタンス起動
④⼊入札額<スポット価格
となったので
インスタンス終了了
⑥⼊入札額>スポット価格
となったので
インスタンス起動
①リクエスト
投⼊入
⑤強制終了了時の1時間
未満の利利⽤用分は⾮非課⾦金金
③1時間
単位の課⾦金金
- 20. 20
Spot Instanceの活⽤用例例
Task Instance GroupCore Instance Group
予測されたコストでSLAを満たす 低コストでSLAを上回る
On-‐‑‒demandを
Core Nodeに利利⽤用
SLAを満たすだけの
キャパシティをOn-‐‑‒
demand価格で確保
Spot Instanceを
Task Nodeに利利⽤用
On-‐‑‒demandの最⼤大
90%引き程度度の価格
で追加のキャパシ
ティを確保
- 21. 21
EMRFS: Amazon S3をHDFSの様に扱う
• 計算資源とストレージを隔離離できる
• クラスタのシャットダウンが可能
– クラスタを消してもデータをロストしない
• 複数クラスタ間でデータ共有が簡単
– クラスタのバージョンアップ検証が並⾏行行できる
EMR
EMR
Amazon
S3
- 23. 23
EMRFSのConsistent View
• Amazon S3は結果整合性
– 書き込み直後の読み取りは不不整
合の可能性
• EMRFSではConsistent View
を提供
– Amazon DynamoDBにメタデー
タを格納し整合性担保
• 結果としてオブジェクトのリ
スト取得も⾼高速に
Amazon S3
Amazon DynamoDB
EMRFSの
メタデータを格納
- 25. 25
Amazon EMRの機能: Bootstrap Action
• 全てのNodeの起動時に実⾏行行されるスクリプト
– 実⾏行行可能ファイルであれば何でもOK
• Bash, Ruby, Python, etc.
– Amazon S3にファイルを置いて指定する
– コマンドライン引数も⾃自由に指定できる
• 任意のソフトウェアをインストールしたり、設
定したりできる
– AWS提供のものもいくつか存在する
- 26. 26
Amazon EMRの機能: Step
• クラスタが準備できたら始まる処理理
– クラスタ起動時に設定することもできるし、起動しているクラスタ
に後から追加することもできる
– 例例: ⽇日次のETL処理理を⾏行行うHiveQL実⾏行行
• Amazon S3のjarファイルを指定すると実⾏行行される
– Streaming, Hive, PigはEMRがサポート
• 必要なスクリプトをS3で指定するだけ
– script-‐‑‒runner.jarでbashスクリプトを実⾏行行させることも可能
• 最後のStepが終わったら⾃自動でクラスタを終了了させ
ることもできる(Auto-‐‑‒terminate)
- 27. 27
Amazon EMRの機能: Application
• いくつかのApplicationをサポート
– Hive, Pig, Hue, HBase, etc.
– 実体はBootstrap ActionとStepの組み合わせ
• 難しいことを覚えずに、分散処理理をすぐ使える
– 最近はMapReduceを直接書くより、⽤用途に合わせたアプリケー
ションを利利⽤用することでレイテンシ最適化を⾏行行うことが多い
– Bootstrap Action, Step, Applicationを組み合わせて、分散処
理理を簡単に扱える環境を提供するのが、Amazon EMR
- 33. 33
Hive on Amazon EMR
• Applicationサポート
– クラスタ起動時に指定
– すぐに利利⽤用可能
• Metastore
– デフォルトではMaster上
のMySQLに保存
– hive-‐‑‒site.xmlを設定して任
意のMySQLも利利⽤用可能
$ aws emr create-cluster …
--applications Name=Hive
…
- 35. 35
YARNとは?
• YARN = Yet-‐‑‒Another-‐‑‒Resource-‐‑‒Negotiator
• Hadoop2から導⼊入されたリソース管理理の仕組み
– 以前は全てJobTrackerが⾏行行っていた
• YARN対応アプリケーションであればマルチテ
ナントに動かすことが容易易
– MapReduceだけでなく、分散リソースを必要とする処理理をクラ
スタが許す限りいくらでも並列列に実⾏行行できる
- 40. 40
YARNがもたらしたもの
• クラスタのリソース管理理の抽象化
– 同様のものに、Mesos, Amazon EC2 Container Service等がある
• 分散処理理実⾏行行フレームワーク
– 実際の分散処理理の開発に注⼒力力できる
– YARN対応すれば全てをマルチテナント実⾏行行できる
• YARN上のフレームワークも
– Tez: DAG処理理を⾼高速にYARN上で実⾏行行する(詳細は後で)
– Twill: YARNアプリを簡単に書ける
– Slider: コード変えずに⻑⾧長期起動アプリをYARN上で動かせる
- 46. 46
ORC File / Parquet
• 列列指向ファイルフォーマット
– カラム毎にデータをまとめて保存する
– 特定の列列を扱う処理理ではファイル全体を読む必要がない
• Optimized Row Columnar(ORC) File
– Stinger Projectで実装、RCFileの後継
• Parquet
– Twitter/Clouderaからの提案
– GoogleのDremel論論⽂文から発想を得ている
- 47. 47
ORC Fileとは
• Stripeという単位で⾏行行をグループ化
– それぞれにIndexとFooterがつく
– Indexにはmin/max等の値と、Row
Dataのポジションが⼊入っている
• Fileの最後にメタデータが⼊入っている
– Footerにはファイル全体の配置や型情報、
⾏行行数や列列毎の統計情報が⼊入っている
• Hiveがデータを効率率率よく保存するた
めのフォーマットとして設計されて
いる
- 53. 53
Massively Parallel Processing (MPP) SQL
• ⼤大規模分散SQLを実⾏行行環
境はHiveだけではない
• HiveライクなMPP
– Presto, Impala, Spark
SQL, Drill
• DWH
– Amazon Redshift
• データ⾃自体もMPPに特化さ
せてAmazon Redshift内に
保持する
Amazon Redshift
- 56. 56
Prestoとは?
• MPP SQLエンジンの1つ
• ANSI SQL準拠のクエリ⾔言語
• 独⾃自のクラスタでSQLの⾼高速分散実⾏行行に特化
– メモリ上でデータをやり取り
– 今のところYARN等の対応は無い
• MySQLやPostgreSQL等にもクエリが可能
– 異異なるデータソースをJOINすることも可能
- 58. 58
Presto on Amazon EMR
• 2015年年4⽉月現在、Applicationサポートは無し
• Bootstrap Actionでのインストールが可能
– AWSから提供されるスクリプトが存在
– https://github.com/awslabs/emr-‐‑‒bootstrap-‐‑‒actions/tree/master/presto/latest
• PrestoはYARNと別でクラスタを組むのでリ
ソース競合に注意
– お互いがサーバのリソースを使いきる可能性
– Presto専⽤用のAmazon EMRクラスタとして使うのがベター