📝
Amazon EMRってなんだろ?
Amazon EMRについて調べてみました。
Amazon EMR(Hadoopなどのビッグデータフレームワークを簡単に実行)| AWS
概要
- ビッグデータのクラウドプラットフォーム
- オープンソースツールを活用して膨大な量のデータを処理
- Apache Spark
- Apache Hive
- Apache HBase
- Apache Flink
- Apache Hudi
- Prestoなど
- ビックデータ環境の設定、運用、スケーリングが簡単
- オンプレの半分以下のコスト、標準的なApache Sparkの3倍以上の速さで、ペタバイト規模の分析を実行
メリット
- 使いやすい
- 統合開発環境 (IDE) である EMR Studioで開発、視覚化、デバッグ
- AWS Single Sign-Onを使用
- 低コスト
- 1 秒ごとに課金され、最小課金時間は 1 分
- スポットインスタンスやリザーブドインスタンスを利用可能
- 伸縮自在
- コンピューティングとストレージの分離
- コンピューティングはEC2、ストレージはS3
- EC2はAuto Scalingにより伸縮自在
- 信頼性
- クラスターを継続的にモニタリング
- 失敗したタスクを再試行
- ノード障害時の自動フェイルオーバー
- 安全性
- VPCでのクラスター起動
- KMSによる暗号化
- Kerberos を使った強力な認証
- 柔軟性
- クラスターや個別の EMR ジョブを完全に制御可能
- カスタムAMIで EMRクラスターを起動し、スクリプトを用いて簡単に設定して、第三者の追加ソフトウェアパッケージをインストール可能
- クラスターを再起動せずに、実行中のクラスターでアプリケーションをその場で再構成
デプロイオプション
- Amazon EMR on Amazon EC2
- オンデマンド
- リザーブド
- スポット
- Amazon EMR on Amazon EKS
- Amazon EMR on AWS Outposts
ユースケース
- 機械学習
- 抽出、変換、読み込み (ETL)
- クリックストリーム分析
- リアルタイムストリーミング
- インタラクティブ分析
- ゲノミクス
ポイント
- ビッグデータのクラウドプラットフォーム
- ビックデータ環境の設定、運用、スケーリングが簡単
- コストを抑え高速に分析可能
- EMR StudioというIDEで開発などが可能
- コンピューティングはEC2
- ストレージはS3
よくある質問 - Amazon EMR | AWS
Q: Amazon EMR とは何ですか?
- 莫大な量のデータを処理することができるようにするウェブサービス
- Hadoop フレームワークを使用
Q: Amazon EMR でできることは何ですか?
- 莫大なデータ処理を必要とするタスクを、能力の規模を自在に調整しながら、簡単にセットアップできる
- 大量のデータを迅速かつ効率的に処理
Q: Amazon EMR で以前はできなかったことで、新たにできるようになったことはありますか?
- 時間のかかるセットアップや管理の複雑さを劇的に削減
- 大規模な Hadoop クラスターでも数分以内ですぐに処理を開始
- クラスターは処理が完了すると特に指定しない限り自動的に終了するためコスト効率に優れる
Q: Apache Spark とは何ですか?
- ビッグデータのワークロード処理に使用されているオープンソースの分散処理システム
- インメモリキャッシュで高速な分析クエリを実行
Q: Presto とは何ですか?
- ゼロから設計された、オープンソースの分散型 SQL クエリエンジン
- どのようなサイズのデータにも高速な分析クエリを実行
Q: Amazon EMR クラスターとは何ですか?
- 割り当てられたすべての処理ステップ
Q: クラスターのステップとは何ですか?
- ユーザー定義の処理単位
- データを操作する 1 つのアルゴリズムに対しておおまかにマッピング
- ステップとは、ストリーミングプログラムとして実装された Hadoop MapReduce アプリケーション
Q: Amazon EMR にアクセスする方法を教えてください。
- EMR Studio
- AWS マネジメントコンソール
- CLI
- SDK
- EMR API
Q: いくつのクラスターを同時に実行することができますか?
- クラスターは好きな数だけ開始可能
- インスタンスの数は、使用しているクラスター全体で最大 20 に制限
Q: Amazon EMR では、Amazon EC2 と Amazon S3 はどのように使用されますか?
- 入力データとデータ処理アプリケーションをS3 にアップロード
- EMRは指定されたいくつかのEC2インスタンスを起動
- EC2インスタンスにS3からの入力データをプルしながら、クラスターの実行を開始
- クラスターが終了した後、EMRは出力データをS3に転送
ポイント
- EMRは大量のデータを迅速かつ効率的に処理する際に利用
- Hadoop フレームワークを使用
- 数分以内に処理を開始
- クラスターは割り当てられたすべての処理ステップ
- ステップはユーザー定義の処理単位
- クラスターの同時実行数は無制限だが、インスタンス数は上限申請なしだと最大20
AWSチーム社内勉強会「EMRおじさんに聞いてみよう」レポート
そもそもHadoopとは?から説明があるのでわかりやすいです。
[初心者] EMRとは何ですか/とりあえずざっとまとめてチュートリアルしてみる | DevelopersIO
用語
- MapReduce
- Googleが開発した、大規模なデータを効率的に分散処理するためのフレームワーク
- Google File System(GFS)
- Goolgeが開発した、分散ファイルシステム。
- Hadoopの場合は、Hadoop File System(HDFS)。
- EMRの場合は、EMR File System(EMRFS)。S3をHDFSのように扱える。
- Hadoop
- オープンソースのソフトウェアフレームワーク。
- Spark
- オープンソースのソフトウェアフレームワーク。
- 「Resilient Distributed Datasets (RDD)」という分散共有メモリの仕組み
- 複数マシンでメモリを共有
- Hadoopと比較して大幅に高速
- Hive
- Hadoop上に構築されたデータウェアハウス構築環境
- SQLライクな「HiveQL」を使ってデータの集約・問い合わせ・分析を行える
- Pig
- Hive同様、Hadoop上で動作するプログラムを作成する「Pig Latin」というスクリプト言語を使ってデータの集約・問い合わせ・分析を行える。
概要
- 前提
- 大量のデータがあります or 続々とデータが追加されていきます。
- 大量のデータをうまく分散処理してくれるマシンクラスターを作ります。
- 分散処理に適したアプリケーションを実行します。
分散処理基盤のアーキテクチャと機能
- 大量のデータ or 続々と追加されるデータ
- S3,Kinesis,DynanoDB
- うまく分散処理してくれるマシンクラスター
- Master/Core/Task node
- Masterが一番偉い。CoreやTaskたちがちゃんと動いているか監視する。
- CoreとTaskが頑張って仕事する
- CoreはローカルディスクのHDFSを持っている。
- 分散処理に適したアプリケーション
- Hadoop,Hive,Pig,HBase,Spark, ...etc
機能
実行場所 | 方法 | 詳細 |
クラスター外から | Stepで実行 | 任意のタイミングで設定・追加できる処理 |
AWSサービスで実行 | Lambda,Data Pipelineなど | |
各種スケジューラから実行 | Airflow,Luigi, or other schedulers on EC2 | |
クラスター上から | 各アプリケーションごとのインターフェースにより実行 |
分散処理に適したアプリケーション
- Hadoop
- Spark
- Flink
- Presto
- Zeppelinなど
EMRの暗号化について
- 保管時の暗号化
- サーバー側の暗号化またはクライアント側の暗号化が可能
- 転送時の暗号化
- S3 暗号化が有効であるかどうかにかかわらず、TLSは、EMR クラスターノードと Amazon S3 間で伝送中の EMRFS オブジェクトを暗号化する
- ローカルディスクでの暗号化
- HDFS の暗号化に加えて、LUKS の暗号化も使用が可能,
- クラスターのインスタンスストアおよび EBS ストレージボリュームに適用
- ローカル転送時の暗号化
- 各アプリケーション固有のオープンソース機能に依存する
ポイント
- MapReduceは大規模なデータを効率的に分散処理するためのフレームワーク
- Hadoop、Sparkはオープンソースのソフトウェアフレームワーク
- Hive、PigはHadoop上に構築されたデータウェアハウス構築環境
- MasterがCoreやTaskを管理
- CoreとTaskが処理
- CoreはローカルディスクのHDFSを持つ
コンソール
まとめ
今回はAmazon EMRについて調べてみました。
以下がポイントでした。
- EMRは大量のデータを迅速かつ効率的に処理する際に利用
- Hadoop フレームワークを使用
- Hadoop、Sparkはオープンソースのソフトウェアフレームワーク
- Hive、PigはHadoop上に構築されたデータウェアハウス構築環境
- コンピューティングはEC2
- ストレージはS3
- クラスターは割り当てられたすべての処理ステップ
- ステップはユーザー定義の処理単位
- MasterがCoreやTaskを管理
- CoreとTaskが処理
- CoreはローカルディスクのHDFSを持つ
参考になれば幸いです。
Discussion