AWSのAmazon EMRとは?
現在、多くのインターネットサービスや人々が所有する様々なデバイスから、日々膨大なデジタルデータが生成されています。多くの企業では、そうした「ビッグデータ」から新たな価値を見出し、活用することに注力するようになりました。
ビッグデータを活用する上では、より素早く大量のデータを解析する必要があります。
こうしたビジネスに貢献できる重要な役割を果たすエンジニアになるためには、ビッグデータを分析するスキルも求められるようになってきました。
ビッグデータ解析サービスとしては、Amazon Web Services(AWS)社が提供する「Amazon EMR」(AWS EMR)が有名です。「Apache Hadoop」や「Apache Spark」などのオープンソースツールを利用した、ビッグデータの分析が可能なAWSのサービス群の1つです。
今回は、Amazon EMRの特徴や使い方、メリット・デメリット、活用事例などを解説していきます。
そもそもAmazon EMRとは何か
Amazon EMRは、AWSが提供するビッグデータ環境とアプリケーションの構築、運用を簡略化できるクラウドサービスです。Apache Spark、Apache Hive、Prestoなどのオープンソースフレームワークを使用したデータ処理やインタラクティブ分析、機械学習などを実行できるビッグデータ基盤サービスです。
Amazon EMRは一言で表すと「マネージドHadoopフレームワーク」とも言われています。Hadoopとは、膨大なデータを処理するアプリケーションの実行をハードウェアのクラスタ上で実施するオープンソースのソフトウェアです。
Hadoopのコンピューティングモデルは、データを最大数千台のコンピューターで分散並列処理することで、必要に応じてノード(コンピューター)を追加して順次処理能力を拡大(スケールアウト)させることができます。
また、EMRとは「Elastic MapReduce」の略です。2009年4月に発表されたAmazon EMRは、Googleのフレームワークである「MapReduce」をベースに実装されています。
MapReduceは、Googleが開発した、大規模なデータを効率的に分散処理するためのフレームワークとして、処理の計算工程を必要な計算内容を実装した「Map」と「Reduce」の2ステップで構成されています。
【参考】:Amazon EMR公式サイト
Amazon EMRでは何ができる?
Amazon EMRの主な利用用途としては、「機械学習ツール」「大規模なデータ変換」「リアルタイムストリーミング」の活用が挙げられます。
Amazon EMRには「Apache Spark MLlib」や「Apache MXNet」などの機械学習ツールが組み込まれているため、それらのツールを簡単な設定で利用することが可能です。また、分散処理基盤を活用したビッグデータの高速分析ができるため、スケーラブルな機械学習のアルゴリズムを実行することも可能です。
さらに、AWSの統合開発環境である「Amazon SageMaker Studio」に接続すると、分析やレポート作成、モデルトレーニングなどに活用できます。
また、Amazon EMRではビッグデータに対するデータ抽出や変換・読み込みなどのワークロードを分散処理基盤を活用して効率的に実施できます。
さらに、リアルタイムストリーミングという観点では、Amazon EMRと「Apache Flink」「Apache Spark Streaming」などを組み合わせると、様々なデータソースからストリーミングされるイベントをリアルタイムに分析できます。
高い可用性と耐障害性を備えた長期間の実行に対応するストリーミングデータのパイプラインをAmazon EMRに構築できます。
Amazon EMRの特徴的な仕組み
Amazon EMRを使うことで、労力や時間をかけることなく、多大な量のデータを処理できるため、企業や開発者、研究者などに活用されています。
Amazon EMRの特徴としては、「分散アプリケーション」「分散処理基盤」である点が挙げられます。
仕組み(1):分散アプリケーション
まず、Amazon EMRでは膨大な量のデータの分散処理を効率的に実施するHadoopクラスター上で「分散アプリケーション機能」を利用できます。この機能を活用すると、対話的に利用したり、登録した手順通りに連続的に実行するバッチジョブを利用したりすることも可能です。
実行中のクラスターの再設定も必要に応じて実装できることに加え、再起動をすることなく適切な処理を自動実行できる点も特徴の1つです。
仕組み(2):分散処理基盤
次に、Amazon EMRの特徴として「1つのデータ処理を分散実行することで、処理を高速化できる「分散処理基盤」という点が挙げられます。
Amazon EMRでは、基盤となるサーバや通信に必要となる回線の運用、クラスターの設定や調整、構成などのタスクをAmazon EMRに一任できます。そうした作業を簡素化することで、膨大な量のデータを素早く処理できるようになります。
【参考】:AWSのAmazon EMRの特徴
Amazon EMRの利用方法
続いて、Amazon EMRの使い方を解説していきます。
Amazon EMRを初めて利用する場合、まずはAWSアカウントにサインアップします。サインアップした後は、管理ユーザーを作成します。その後、安全なチャネル経由でクラスター内のノードを認証して接続するため、クラスターを起動する前にSSH用のAmazon EC2キーペアを作成します。
【参考】:Amazon公式サイト「Amazon EMR のセットアップ」
ステップ1:アプリケーションを開発する
次に、実際の使い方の例を紹介します。Amazon EMRを利用開始する際は、まず「データ処理アプリケーション」を開発する必要があります。
Amazon EMRでは、Java、SQLに類似した言語「Hive」、データ処理言語「Pig」、Cascading、Ruby、Perl、Python、R、PHP、C++、Node.jsなどでアプリケーションを開発できます。Amazon EMRには、コードサンプルとチュートリアルが用意されているので、それらを活用するとすぐに使用が開始できます。
ステップ2:Amazon S3にアップロードする
続いて「アプリケーションとデータをAmazon S3にアップロード」します。
大量のデータをアップロードする場合は、物理ストレージデバイスを使用したデータのアップロードできる「AWS Import/Export Snowball」、または、データセンターから AWS への専用ネットワーク接続を確立する「AWS Direct Connect」などを利用することもできます。
ステップ3:Amazon S3にアップロードする
「AWS マネジメントコンソール」「AWS CLI」「SDK」、またはAPIを使用して、クラスターにプロビジョニングする「Amazon EC2 インスタンス」の数、使用する「インスタンスタイプ」、Apache Spark、Apache Hive、Apache HBase、Prestoなど「インストールするアプリケーション」、「アプリケーションとデータの場所」などを指定します。
起動したクラスタは、マネジメントコンソールやコマンドラインインターフェイス、SDK、またはAPIを使用して、クラスタの健全性と進行状況をモニタリングして確認できます。処理するデータの量に応じて、クラスタの能力の追加と削除をいつでも実施可能です。
ステップ4:出力結果を取得する
実行したクラスタの出力結果は、クラスタの Amazon S3、または「HDFS」から取得できます。また、「Amazon QuickSight」「Tableau」や「MicroStrategy」などのツールを使用してデータを視覚化することも可能です。
【参考】:Amazon公式サイト「Amazon EMR の開始方法」
Amazon EMRの料金体系
Amazon EMRの料金は、予測がしやすくシンプルです。1秒ごとに課金され、最小課金時間は1分です。たとえば、10ノードのクラスターを10時間稼働した場合と、100ノードのクラスターを1時間稼働した場合の料金は同じです。
また、Amazon EMRの料金は、EMRアプリケーションのデプロイ方法によって異なります。EMRアプリケーションは、Amazon EC2インスタンスを使用する「EMR クラスター」「AWS Outposts」、「EMR Serverless」を使用する「Amazon Elastic Kubernetes Service」で実行可能です。
EC2、または「AWS Fargate」のいずれかを使用して「Amazon EKS on AWS」を実行することも可能です。
【参考】:Amazon公式サイト「Amazon EMR の料金」
Amazon EMRのオプションサービス「Amazon EMR Serverless」
また、AWSは2022年6月、Amazon EMRのオプションサービスとして「Amazon EMR Serverless」を提供開始しています。
Amazon EMR Serverlessは、Amazon EMRのサーバーレスオプションとして、クラスタやサーバを構成、管理、スケーリングすることなく、Apache SparkやHiveなどのオープンソースフレームワークを使用してビッグデータ分析アプリケーションを実行することが可能です。
さらにAWSでは、Amazon EMRとアーキテクチャのコストの見積もりを算出できるツールを公開しています。
【参考】:Amazon EMRの料金概要
Amazon EMRのメリットとは?
ここからは、より具体的にAmazon EMRを利用するメリット、類似したサービスとの違いを見ていきましょう。Amazon EMRを利用する上で、ぜひ参考にしてください。
使いやすい
まず、挙げられるのが「使いやすさ」です。Amazon EMRの便利な機能の1つに「Amazon EMR Notebook」があります。Amazon EMR Notebookは、EMRクラスターでクエリとコードをリモートで実行できるサーバーレスのノートブックです。
この機能を活用することで、チーム内で対話をしながらデータを可視化したり、分析したりすることができます。また、EMRクラスターのプロビジョニングや調整などはEMRが実施するため、ユーザはデータ分析に集中することが可能です。
低コストで運用できる
次にメリットに挙げられるのが「低コスト」である点です。Amazon EMRは、先述したように1秒単位での従量課金制が採用されています。上限を設定しておくと、その設定金額を支払額が超えることはありません。
その結果、膨大な量のデータ処理にかかるコストを抑えられます。たとえば、スモールインスタンスを使用している場合、1時間当たり0.015米ドルから利用を始めることが可能です。
柔軟性がある
Amazon EMRの3つ目のメリットは「柔軟性がある」点です。Amazon EMRはコンピューティングとストレージを分離しているため、柔軟性を確保できています。
たとえば、「Auto Scaling」機能では、利用率に応じてクラスターサイズを自動的に調整できます。プロビジョニングの結果を基に、インスタンスの数を数百、数千など自動的に増減可能です。
安全性がある
4つ目のメリットは「安全性がある」という点です。Amazon EMRでは、送受信中の暗号化、ケルベロスを使用した認証など、様々な暗号化機能を簡単に利用できます。
また、ファイアウォールの設定もAmazon EMRが自動的に構成してくれるため、セキュアな環境を維持することも可能です。全てのインスタンスに対してルートアクセスを使うことで、包括的にクラスタを制御できます。
Amazon EMRと「Amazon Athena」「Redshift」との違い
AWSでは、データレイクやデータウェアハウスなどで蓄積・加工されたデータを分析できるサービスが豊富に用意されています。
その中でも、主に使われているサービスがAmazon EMRと「Amazon Athena」「Amazon Redshift」です。
Amazon Athenaは、Amazon S3に保管されているデータを直接SQLクエリを使用してデータ分析をするデータウェアハウスです。単発のデータ抽出や簡易的な分析に向いており、膨大なデータや複雑なデータ分析には向いていません。
Amazon Redshiftは、様々なデータを集計、統合、分析のために保管しておく倉庫のようなものです。大容量の構造データが対象となり、大容量かつ非構造データを処理できるAmazon EMRとは異なる用途で利用されることが多いです。
Amazon EMRはビッグデータ分析を手軽に始められるツール
ビッグデータ分析というと、専門的なスキルや複雑な設定が必要だったり、時間やコストが高くなると感じてしまったりするかもしれません。ただ、Amazon EMRを利用したビッグデータ分析では、従来よりもかなり手軽に開始できるという利点があります。
Amazon EMRを利用してビッグデータの分析を自動化・簡略化することで、これまで敷居の高かったビッグデータ分析が可能になり、業務効率化にも役立てられることでしょう。ぜひ、Amazon EMRを使いこなせるようになることをおすすめします。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから