翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
チュートリアル: Amazon の開始方法 EMR
Amazon EMRクラスターをすばやくセットアップし、Spark アプリケーションを実行するワークフローについて説明します。
Amazon EMRクラスターのセットアップ
Amazon EMRでは、ビッグデータフレームワークでデータを処理および分析するためのクラスターをわずか数分でセットアップできます。このチュートリアルでは、Spark を使用してサンプルクラスターを起動する方法と、Amazon S3 バケットに保存されているシンプルな PySpark スクリプトを実行する方法について説明します。ここでは、計画と設定、管理、クリーンアップの 3 つの主要なワークフローカテゴリで重要な Amazon EMRタスクについて説明します。
チュートリアルの途中には詳細なトピックへのリンクがあります。また、「次のステップ」セクションに追加手順の概要が記載されています。質問がある場合や行き詰まった場合は、ディスカッションフォーラム
前提条件
-
Amazon EMRクラスターを起動する前に、「」のタスクを完了してくださいAmazon EMR を設定する前に。
コスト
-
作成するサンプルクラスターは、ライブ環境で実行されます。クラスターには最低料金が発生します。追加料金が発生しないように、このチュートリアルの最後の手順で必ずクリーンアップタスクを完了してください。料金は、Amazon のEMR料金に従って 1 秒あたりの料金で発生します。料金はリージョンによっても異なります。詳細については、「Amazon のEMR料金
」を参照してください。 -
Amazon S3 に保存する小さなファイルについて、最低料金が発生する場合があります。 AWS 無料利用枠の使用制限内であれば、Amazon S3 の一部またはすべての料金が免除される場合があります。詳細については、「Amazon S3 の料金
」と「AWS 無料利用枠 」を参照してください。
ステップ 1: データリソースを設定し、Amazon EMRクラスターを起動する
Amazon 用のストレージを準備する EMR
Amazon を使用する場合EMR、さまざまなファイルシステムから選択して、入力データ、出力データ、ログファイルを保存できます。このチュートリアルでは、 EMRFSを使用して S3 バケットにデータを保存します。 EMRFSは、Amazon S3 に通常のファイルを読み書きできる Hadoop ファイルシステムの実装です。詳細については、「Amazon でのストレージおよびファイルシステムの操作 EMR」を参照してください。
このチュートリアル用にバケットを作成するには、「Amazon Simple Storage Service ユーザーガイド」の「S3 バケットを作成する方法」に従ってください。Amazon EMRクラスターを起動する予定のリージョンと同じ AWS リージョンにバケットを作成します。たとえば、米国西部 (オレゴン) の us-west-2 です。
Amazon で使用するバケットとフォルダEMRには、次の制限があります。
-
名前に使用できるのは、小文字、数字、ピリオド (.)、およびハイフン (-) のみです。
-
名前の末尾を数字にすることはできません。
-
バケット名はすべての AWS アカウントで一意である必要があります。
-
出力フォルダは空である必要があります。
Amazon の入力データを使用してアプリケーションを準備する EMR
Amazon 用のアプリケーションを準備する最も一般的な方法はEMR、アプリケーションとその入力データを Amazon S3 にアップロードすることです。次に、クラスターに作業内容を送信するときに、スクリプトとデータを保存する Amazon S3 の場所を指定します。
このステップでは、Amazon S3 バケットにサンプル PySpark スクリプトをアップロードします。使用する PySpark スクリプトを用意しました。このスクリプトは食品施設の検査データを処理し、S3 バケットに結果ファイルを返します。結果ファイルには、「赤」タイプの違反が最も多い上位 10 施設がリストされます。
また、 PySpark スクリプトが処理するサンプル入力データを Amazon S3 にアップロードします。入力データは、ワシントン州キング郡にある保健局の 2006~2020 年の検査結果の修正版です。詳細については、「King County Open Data: Food Establishment Inspection Data
name, inspection_result, inspection_closed_business, violation_type, violation_points 100 LB CLAM, Unsatisfactory, FALSE, BLUE, 5 100 PERCENT NUTRICION, Unsatisfactory, FALSE, BLUE, 5 7-ELEVEN #2361-39423A, Complete, FALSE, , 0
のサンプル PySpark スクリプトを準備するには EMR
-
以下のコード例を任意のエディタの新しいファイルにコピーします。
import argparse from pyspark.sql import SparkSession def calculate_red_violations(data_source, output_uri): """ Processes sample food establishment inspection data and queries the data to find the top 10 establishments with the most Red violations from 2006 to 2020. :param data_source: The URI of your food establishment data CSV, such as 's3://amzn-s3-demo-bucket/food-establishment-data.csv'. :param output_uri: The URI where output is written, such as 's3://amzn-s3-demo-bucket/restaurant_violation_results'. """ with SparkSession.builder.appName("Calculate Red Health Violations").getOrCreate() as spark: # Load the restaurant violation CSV data if data_source is not None: restaurants_df = spark.read.option("header", "true").csv(data_source) # Create an in-memory DataFrame to query restaurants_df.createOrReplaceTempView("restaurant_violations") # Create a DataFrame of the top 10 restaurants with the most Red violations top_red_violation_restaurants = spark.sql("""SELECT name, count(*) AS total_red_violations FROM restaurant_violations WHERE violation_type = 'RED' GROUP BY name ORDER BY total_red_violations DESC LIMIT 10""") # Write the results to the specified output URI top_red_violation_restaurants.write.option("header", "true").mode("overwrite").csv(output_uri) if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument( '--data_source', help="The URI for you CSV restaurant data, like an S3 bucket location.") parser.add_argument( '--output_uri', help="The URI where output is saved, like an S3 bucket location.") args = parser.parse_args() calculate_red_violations(args.data_source, args.output_uri)
-
health_violations.py
という名前でファイルを保存します。 -
health_violations.py
を、このチュートリアル用に作成した Amazon S3 のバケットにアップロードします。手順については、「Amazon Simple Storage Service ユーザーガイド」の「バケットにオブジェクトをアップロードする」を参照してください。
のサンプル入力データを準備するには EMR
-
zip ファイル food_establishment_data.zip をダウンロードします。
-
food_establishment_data.zip
を解凍し、ご使用のマシンにfood_establishment_data.csv
として保存します。 -
このチュートリアル用に作成した S3 バケットにCSVファイルをアップロードします。手順については、「Amazon Simple Storage Service ユーザーガイド」の「バケットにオブジェクトをアップロードする」を参照してください。
のデータの設定の詳細についてはEMR、「」を参照してくださいAmazon で処理する入力データを準備する EMR。
Amazon EMRクラスターを起動する
ストレージの場所とアプリケーションを準備したら、サンプル Amazon EMRクラスターを起動できます。このステップでは、最新の Amazon EMRリリースバージョンを使用して Apache Spark クラスターを起動します。
ステップ 2: Amazon EMRクラスターに作業を送信する
作業を送信して結果を表示する
クラスターを起動したら、データを処理して分析するために、実行中のクラスターに作業を送信できます。作業をステップとして Amazon EMRクラスターに送信します。ステップとは、1 つ以上のアクションで構成される作業の単位です。たとえば、値の計算や、データの転送と処理のためにステップを送信することが考えられます。ステップは、クラスターの起動時にも、実行中のクラスターに対しても送信できます。チュートリアルのこの部分では、実行中のクラスターにステップとして health_violations.py
を送信します。ステップの詳細については、「Amazon EMRクラスターに作業を送信する」を参照してください。
ステップのライフサイクルに関する詳細は、「ステップの実行によるデータの処理」を参照してください。
結果を表示する
ステップが正常に実行されると、Amazon S3 の出力フォルダで出力結果を表示できます。
health_violations.py
の結果を表示するには
https://console.aws.amazon.com/s3/
で Amazon S3 コンソールを開きます。 -
[バケット名] を選択し、次に、ステップの送信時に指定した出力フォルダを選択します。例えば、
amzn-s3-demo-bucket
と ですmyOutputFolder
。 -
出力フォルダーに次の項目が表示されることを確認します。
-
_SUCCESS
という名前の小さなサイズのオブジェクト。 -
結果
part-
を含むプレフィックスで始まるCSVファイル。
-
-
結果を含むオブジェクトを選択し、[ダウンロード] をクリックして結果をローカルファイルシステムに保存します。
-
任意のエディタで、結果を開きます。出力ファイルには、赤の違反が最も多い上位 10 施設がリストされます。出力ファイルには、各施設に対する赤の違反の総数も表示されます。
health_violations.py
結果の例を次に示します。name, total_red_violations SUBWAY, 322 T-MOBILE PARK, 315 WHOLE FOODS MARKET, 299 PCC COMMUNITY MARKETS, 251 TACO TIME, 240 MCDONALD'S, 177 THAI GINGER, 153 SAFEWAY INC #1508, 143 TAQUERIA EL RINCONSITO, 134 HIMITSU TERIYAKI, 128
Amazon EMRクラスター出力の詳細については、「」を参照してくださいAmazon EMRクラスター出力の場所を設定する。
Amazon を使用する場合はEMR、実行中のクラスターに接続して、ログファイルの読み取り、クラスターのデバッグ、Spark シェルなどのCLIツールの使用を行うことができます。Amazon EMRでは、Secure Shell (SSH) プロトコルを使用してクラスターに接続できます。このセクションではSSH、 の設定、クラスターへの接続、Spark のログファイルの表示方法について説明します。クラスターへの接続に関する詳細は、「Amazon EMRクラスターノードへの認証」を参照してください。
クラスターSSHへの接続を許可する
クラスターに接続する前に、クラスターセキュリティグループを変更してインバウンドSSH接続を許可する必要があります。Amazon EC2 セキュリティグループは、クラスターへのインバウンドトラフィックとアウトバウンドトラフィックを制御する仮想ファイアウォールとして機能します。このチュートリアル用にクラスターを作成すると、Amazon はユーザーに代わって次のセキュリティグループEMRを作成しました。
- ElasticMapReduceマスター
-
プライマリノードに関連付けられたデフォルトの Amazon EMRマネージドセキュリティグループ。Amazon EMRクラスターでは、プライマリノードはクラスターを管理する Amazon EC2インスタンスです。
- ElasticMapReduceスレーブ
-
コアノードとタスクノードに関連付けられているデフォルトのセキュリティグループ。
を使用してクラスターに接続する AWS CLI
オペレーティングシステムに関係なく、 を使用してクラスターSSHへの接続を作成できます AWS CLI。
を使用してクラスターに接続し、ログファイルを表示するには AWS CLI
-
クラスターへの SSH接続を開くには、次のコマンドを使用します。をキーペアファイルのフルパスとファイル名
<mykeypair.key>
に置き換えます。例えば、C:\Users\<username>\.ssh\mykeypair.pem
と指定します。aws emr ssh --cluster-id
<j-2AL4XXXXXX5T9>
--key-pair-file<~/mykeypair.key>
-
/mnt/var/log/spark
に移動して、クラスターのマスターノード上の Spark ログにアクセスします。次に、その場所にあるファイルを表示します。マスターノード上の追加のログファイルのリストについては、「プライマリノードのログファイルを表示する」を参照してください。cd /mnt/var/log/spark ls
Amazon EMR on EC2は Unified Studio Amazon SageMaker AI でサポートされているコンピューティングタイプでもあります。 Amazon SageMaker AI Unified Studio EMRのリソースで を使用および管理する方法については、「 での Amazon EC2 の管理」を参照してください。 EMR EC2
ステップ 3: Amazon EMRリソースをクリーンアップする
クラスターを終了する
クラスターに作業を送信し、PySpark アプリケーションの結果を確認したので、クラスターを終了できます。クラスターを終了すると、クラスターに関連付けられているすべての Amazon EMR料金と Amazon EC2インスタンスが停止します。
クラスターを終了すると、Amazon はクラスターに関するメタデータを 2 か月間無料でEMR保持します。アーカイブされたメタデータは、新しいジョブのためのクラスターのクローン作成や、参照目的でのクラスター設定への再アクセスに便利です。メタデータには、クラスターが S3 に書き込むデータや、クラスターHDFSの に保存されているデータは含まれません。
注記
Amazon EMRコンソールでは、クラスターを終了した後、リストビューからクラスターを削除することはできません。Amazon がメタデータEMRをクリアすると、終了したクラスターはコンソールから消えます。
S3 リソースを削除する
追加料金が発生しないように、Amazon S3 バケットを削除する必要があります。バケットを削除すると、このチュートリアル用のすべての Amazon S3 リソースが削除されます。バケットに含まれている内容は次のとおりです。
-
PySpark スクリプト
-
入力データセット
-
出力結果フォルダ
-
ログファイルフォルダ
PySpark スクリプトまたは出力を別の場所に保存した場合は、保存済みファイルを削除するための追加の手順が必要になる場合があります。
注記
バケットを削除する前に、クラスターを終了する必要があります。そうしないと、バケットを空にできない可能性があります。
バケットを削除するには、「Amazon Simple Storage Service ユーザーガイド」の「S3 バケットを削除する方法」に従ってください。
次のステップ
これで、最初の Amazon EMRクラスターが最初から最後まで起動されました。また、ビッグデータアプリケーションの準備と送信、結果の表示、クラスターの終了などの重要なEMRタスクも完了しました。
Amazon EMR ワークフローをカスタマイズする方法の詳細については、以下のトピックを参照してください。
Amazon のビッグデータアプリケーションを調べる EMR
「Amazon EMRリリースガイド」の「クラスターにインストールできるビッグデータアプリケーションを検出して比較する」。リリースガイドには、各EMRリリースバージョンの詳細と、Amazon で Spark や Hadoop などのフレームワークを使用するためのヒントが記載されていますEMR。
クラスターのハードウェア、ネットワーク、およびセキュリティを計画する
このチュートリアルでは、高度なオプションを設定せずにシンプルなEMRクラスターを作成しました。高度なオプションを使用すると、Amazon EC2インスタンスタイプ、クラスターネットワーク、クラスターセキュリティを指定できます。要件を満たすクラスターの計画と起動に関する詳細は、「Amazon EMRクラスターの計画、設定、起動」と「Amazon のセキュリティ EMR」を参照してください。
クラスターを管理する
「Amazon EMRクラスターの管理」で、実行中のクラスターの操作について詳しく説明しています。クラスターを管理するために、クラスターに接続し、ステップをデバッグし、クラスターのアクティビティと状態を追跡できます。EMR マネージドスケーリングを使用して、ワークロードの需要に応じてクラスターリソースを調整することもできます。
別のインターフェースを使用する
Amazon EMRコンソールに加えて、、ウェブサービス AWS Command Line Interface、APIまたはサポートされている多くの のいずれかEMRを使用して Amazon を管理できます AWS SDKs。詳細については、「管理インターフェイス」を参照してください。
Amazon EMRクラスターにインストールされているアプリケーションは、さまざまな方法で操作することもできます。Apache Hadoop のようないくつかのアプリケーションでは、表示可能なウェブインターフェイスを公開しています。詳細については、「Amazon EMRクラスターでホストされているウェブインターフェイスを表示する」を参照してください。
EMR テクニカルブログを参照する
Amazon EMRの新機能のサンプルチュートリアルと詳細な技術的説明については、 AWS ビッグデータブログ