【AWS】Amazon EMR ~ 入門編 ~

■ はじめに

Amazon EMR について、徐々にメモっていく

目次

【1】Amazon EMR (Elastic MapReduce)
【2】EMRのアーキテクチャ
 1)マスタノード
 2)コアノード
 3)タスクノード
 注意点
【3】分散処理基盤としてのEMR
 1)EMRFS (EMR File System)
【4】分散処理アプリケーション基盤としてのEMR
 1)サポートされているビッグデータフレームワーク
【5】メリット / デメリット
 1)メリット
 2)デメリット
【6】コスト

【1】Amazon EMR (Elastic MapReduce)

* AWSの分散処理フレームワーク
=> ビッグデータ用フレームワーク(Hadoop/Hive/HBase/Presto)を
 簡単に導入でき、大量データを分散処理してくれるAWSサービス

公式サイト

https://docs.aws.amazon.com/ja_jp/emr/latest/ManagementGuide/emr-what-is-emr.html
https://media.amazonwebservices.com/jp/wp/AWS_Amazon_EMR_Best_Practices.pdf
boto3 API
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/emr.html

【2】EMRのアーキテクチャ

* EMR は、以下の3種類のノードで構成されている
~~~~~~~~~~~~~~~
1)マスタノード
2)コアノード
3)タスクノード
~~~~~~~~~~~~~~~

1)マスタノード

* EMRの司令塔で、ジョブフロー全体管理
 => コアノード、タスクノードにジョブを振り分ける
* 1台のみ
 => フェールオーバー(failover)はできない
 => マスターノードに何らかのトラブルがあると、ジョブ全体が失敗する

2)コアノード

* データ保存領域であるHDFS(Hadoop Distributed File System)を持ち、
 データを読み込みつつデータ処理を行う
* 1台~

3)タスクノード

* データ処理を行う(データは持たない)
 => コアノードと比べて柔軟に増減可能
* 0台~

注意点

* コアノードなしでタスクノードのみで構成することは不可

【3】分散処理基盤としてのEMR

以下に分けられる
~~~~~~
1)リソース調整
2)EMRFS (EMR File System)
~~~~~~

1)リソース調整

* 分散処理に必要なEC2の調達・破棄
* 以下の2点が重要になる

[1] 伸縮自在性

* 処理するEC2を解析開始時に調達し、
 必要に応じて増減させる
* デフォルト設定だと、ジョブ完了後に
 自動的にリソースを解放される

[2] コスト

* 分析費用を小さくするための機能
 => EMR には、スポットインスタンスのオプションがあり
  コストダウンを図れる

※ スポットインスタンス

*  入札価格より時価が上回った場合に利用が強制的に中断されるが
 そのため、通常のEC2オンデマンドより価格が大幅に安く使える
* 以下の関連記事を参照のこと

https://dk521123.hatenablog.com/entry/2017/07/26/115400

2)EMRFS (EMR File System)

* AWS S3 を HDFSのように扱える
* 詳細は以下の関連記事を参照のこと

Amazon EMR ~ EMRFS ~
https://dk521123.hatenablog.com/entry/2020/11/13/145545

【4】分散処理アプリケーション基盤としてのEMR

1)サポートされているビッグデータフレームワーク

* Apache Spark
* Apache Hive
 ... 以下の関連記事を参照のこと

https://dk521123.hatenablog.com/entry/2019/11/25/235219

* Apache HBase
 ... データストア「BigTable」をベースにしたNoSQL
* Apache Flink
* Apache Hudi (Incubating)
* Apache Pig
* Presto(プレスト)
 ... オープンソースの分散型SQLクエリエンジン
 ... Athena のエンジン部分としても利用

Amazon Athena ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/06/17/173717

* Apache Phoenix
 ... HBaseに保存されているデータに対してACIDトランザクションを利用できる
* Apache Impala
 ... SQL構文でインタラクティブにアドホックにクエリをかけられる
etc

バージョン

 EMRのバージョンによって、
Hadoop や Hive のバージョンが異なるので
使用するバージョンを確認しておいたほうがいい

https://docs.aws.amazon.com/ja_jp/emr/latest/ReleaseGuide/emr-release-6x.html

【5】メリット / デメリット

1)メリット

環境構築 / 運用(version up etc)が不要

2)デメリット

コストが掛かる

料金
https://aws.amazon.com/jp/emr/pricing/

EC2 料金 + EMR 料金がかかる

【6】コスト

* 以下のサイトから自分の使う構成を選択することにより
 簡単に料金の見積もりができる

https://aws.amazon.com/jp/emr/pricing/

参考文献

https://www.atmarkit.co.jp/ait/articles/1701/01/news018_5.html
https://qiita.com/yasuzuki/items/f29d3a2db5c8b4217c9c
https://recipe.kc-cloud.jp/archives/10132
https://www.atmarkit.co.jp/ait/articles/1701/01/news018.html
https://www.atmarkit.co.jp/ait/articles/1701/01/news019.html
http://mgi.hatenablog.com/entry/2014/05/04/085148
https://japan.techrepublic.com/article/35074122.htm

関連記事

Amazon EMR ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2020/05/27/175610
Amazon EMR ~ チュートリアルのすすめ ~
https://dk521123.hatenablog.com/entry/2023/07/29/000000
Amazon EMR ~IAM Role周り ~
https://dk521123.hatenablog.com/entry/2023/07/24/160124
Amazon EMR ~ ネットワーク周り ~
https://dk521123.hatenablog.com/entry/2022/05/13/155755
Amazon EMR ~ Auto scaling ~
https://dk521123.hatenablog.com/entry/2022/05/16/115229
Amazon EMR ~ boto3 編 ~
https://dk521123.hatenablog.com/entry/2020/06/24/173334
Amazon EMR ~ AWS Glueとの連携 ~
https://dk521123.hatenablog.com/entry/2020/11/12/113312
Amazon EMR ~ EMRFS ~
https://dk521123.hatenablog.com/entry/2020/11/13/145545
Amazon EMR ~ Flink / 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2023/07/16/000000
Amazon EMR ~ Flink / 入門編 ~
https://dk521123.hatenablog.com/entry/2023/08/19/025641
Amazon EMR ~ Flink / あれこれ編 ~
https://dk521123.hatenablog.com/entry/2023/08/20/231901
Amazon EMR ~ Flink / Glue Data Catalog ~
https://dk521123.hatenablog.com/entry/2023/08/18/181646
Amazon EMR ~ EMR内部 から SES で Email を送る ~
https://dk521123.hatenablog.com/entry/2021/07/09/115553
Amazon EMR ~ Log4j / CVE-2021-44228 対策 ~
https://dk521123.hatenablog.com/entry/2022/04/18/153148
Amazon EMR ~ Session Managerを設定する ~
https://dk521123.hatenablog.com/entry/2023/08/16/201948
起動中の EMR に Session Manager を使って入る
https://dk521123.hatenablog.com/entry/2022/05/11/135632
Amazon EMR に関するトラブル
https://dk521123.hatenablog.com/entry/2020/08/05/144724
Amazon EMR の クローン 時の トラブル
https://dk521123.hatenablog.com/entry/2021/08/19/113707
EMR起動時にエラー「An EC2 ClientInternalError has occurred」が表示
https://dk521123.hatenablog.com/entry/2022/04/14/141250
EMRのStep実行時にエラー「Insufficient Lake Formation permission(s) on default」が表示
https://dk521123.hatenablog.com/entry/2022/05/09/101121
EMRでINSERTを実行した際に Fail する
https://dk521123.hatenablog.com/entry/2022/05/14/001031
EMRで Auto Scaling が FAILED する
https://dk521123.hatenablog.com/entry/2022/05/18/092046
EMRのBootstrapでエラー「BOOTSTRAP_FAILURE_BA_DOWNLOAD_FAILED_PRIMARY」が表示
https://dk521123.hatenablog.com/entry/2023/08/17/002559
Hive / HiveQL ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2019/11/25/235219
Hive / HiveQL ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/02/25/231235
Amazon Redshift ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/02/22/002139
Apache Hadoop ~ 環境設定 / Linux編 ~
https://dk521123.hatenablog.com/entry/2020/01/01/000000
AWS Glue ~ 基本編 / クローラ ~
https://dk521123.hatenablog.com/entry/2019/12/01/003455
AWS のコスト節約を考える ~ EC2編 / リザーブド・スポット etc ~
https://dk521123.hatenablog.com/entry/2017/07/26/115400
Amazon Athena ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/06/17/173717