Erste Schritte mit Amazon EMR auf EKS - Amazon EMR

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erste Schritte mit Amazon EMR auf EKS

Dieses Thema hilft Ihnen bei den ersten Schritten mit EMR Amazon, EKS indem Sie eine Spark-Anwendung auf einem virtuellen Cluster bereitstellen. Es enthält Schritte zum Einrichten der richtigen Berechtigungen und zum Starten eines Jobs. Bevor Sie beginnen, sollten Sie sicherstellen, dass Sie die in Amazon einrichten EMR auf EKS beschriebenen Schritte ausgeführt haben. Auf diese Weise erhalten Sie Tools wie das AWS CLI Setup vor der Erstellung Ihres virtuellen Clusters. Weitere Vorlagen, die Ihnen den Einstieg erleichtern können, finden Sie in unserem Leitfaden zu bewährten Methoden für EMR Container unter GitHub.

Sie benötigen die folgenden Informationen aus den Einrichtungsschritten:

  • Virtuelle Cluster-ID für den EKS Amazon-Cluster und den Kubernetes-Namespace, die bei Amazon registriert sind EMR

    Wichtig

    Achten Sie beim Erstellen eines EKS Clusters darauf, m5.xlarge als Instance-Typ oder einen anderen Instance-Typ mit einem höheren AND-Speicher zu verwenden. CPU Die Verwendung eines Instance-Typs mit weniger CPU oder weniger Arbeitsspeicher als m5.xlarge kann aufgrund unzureichender verfügbarer Ressourcen im Cluster zu einem Jobfehler führen.

  • Name der IAM Rolle, die für die Jobausführung verwendet wird

  • Release-Label für die EMR Amazon-Version (z. B.emr-6.4.0-latest)

  • Zielziele für die Protokollierung und Überwachung:

    • CloudWatch Amazon-Protokollgruppenname und Logstream-Präfix

    • Amazon-S3-Standort zum Speichern von Ereignis- und Containerprotokollen

Wichtig

Amazon EMR on EKS Jobs verwendet Amazon CloudWatch und Amazon S3 als Zielziele für die Überwachung und Protokollierung. Sie können den Aufgabenfortschritt überwachen und Fehler beheben, indem Sie sich die an diese Ziele gesendeten Aufgabenprotokolle ansehen. Um die Protokollierung zu aktivieren, muss die IAM Richtlinie, die der IAM Rolle für die Auftragsausführung zugeordnet ist, über die erforderlichen Berechtigungen für den Zugriff auf die Zielressourcen verfügen. Wenn die IAM Richtlinie nicht über die erforderlichen Berechtigungen verfügt, müssen Sie die unter Konfiguration einer Auftragsausführung zur Verwendung von Amazon S3 S3-Protokollen und Konfiguration einer Auftragsausführung zur Verwendung von CloudWatch Protokollen beschriebenen Schritte ausführen, bevor Sie diesen Beispielauftrag ausführen. Die Vertrauensrichtlinie der Auftragsausführungsrolle aktualisieren

Eine Spark-Anwendung ausführen

Gehen Sie wie folgt vor, um eine einfache Spark-Anwendung auf Amazon EMR on auszuführenEKS. Die entryPoint-Anwendungsdatei für eine Spark-Python-Anwendung befindet sich unter s3://REGION.elasticmapreduce/emr-containers/samples/wordcount/scripts/wordcount.py. Das Tool REGION ist die Region, in der sich Ihr EKS virtueller Amazon EMR on-Cluster befindet, z. B. us-east-1.

  1. Aktualisieren Sie die IAM Richtlinie für die Jobausführungsrolle mit den erforderlichen Berechtigungen, wie die folgenden Richtlinienerklärungen zeigen.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ReadFromLoggingAndInputScriptBuckets", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::*.elasticmapreduce", "arn:aws:s3:::*.elasticmapreduce/*", "arn:aws:s3:::DOC-EXAMPLE-BUCKET-OUTPUT", "arn:aws:s3:::DOC-EXAMPLE-BUCKET-OUTPUT/*", "arn:aws:s3:::DOC-EXAMPLE-BUCKET-LOGGING", "arn:aws:s3:::DOC-EXAMPLE-BUCKET-LOGGING/*" ] }, { "Sid": "WriteToLoggingAndOutputDataBuckets", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET-OUTPUT/*", "arn:aws:s3:::DOC-EXAMPLE-BUCKET-LOGGING/*" ] }, { "Sid": "DescribeAndCreateCloudwatchLogStream", "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:*:*" ] }, { "Sid": "WriteToCloudwatchLogs", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:*:*:log-group:my_log_group_name:log-stream:my_log_stream_prefix/*" ] } ] }
    • Die erste Anweisung ReadFromLoggingAndInputScriptBuckets in dieser Richtlinie gewährt ListBucket und GetObjects Zugriff auf die folgenden Amazon-S3-Buckets:

      • REGION.elasticmapreduce – der Bucket, in dem sich die entryPoint Anwendungsdatei befindet.

      • DOC-EXAMPLE-BUCKET-OUTPUT ‐ ein Bucket, das Sie für Ihre Ausgabedaten definieren.

      • DOC-EXAMPLE-BUCKET-LOGGING ‐ ein Bucket, das Sie für Ihre Logging-Daten definieren.

    • Die zweite Anweisung WriteToLoggingAndOutputDataBuckets in dieser Richtlinie erteilt dem Auftrag die Erlaubnis, Daten in Ihre Ausgabe- bzw. Protokollierungs-Buckets zu schreiben.

    • Die dritte Anweisung DescribeAndCreateCloudwatchLogStream erteilt dem Job die Erlaubnis, Amazon CloudWatch Logs zu beschreiben und zu erstellen.

    • Die vierte Anweisung WriteToCloudwatchLogs gewährt Berechtigungen zum Schreiben von Protokollen in eine CloudWatch Amazon-Protokollgruppe mit dem Namen my_log_group_name unter einem Protokollstream mit dem Namen my_log_stream_prefix.

  2. Verwenden Sie den folgenden Befehl, um eine Spark-Python-Anwendung auszuführen. Ersetze alle austauschbaren red italicized Werte durch entsprechende Werte. Das Tool REGION ist die Region, in der sich Ihr EKS virtueller Amazon EMR on-Cluster befindet, z. B. us-east-1.

    aws emr-containers start-job-run \ --virtual-cluster-id cluster_id \ --name sample-job-name \ --execution-role-arn execution-role-arn \ --release-label emr-6.4.0-latest \ --job-driver '{ "sparkSubmitJobDriver": { "entryPoint": "s3://REGION.elasticmapreduce/emr-containers/samples/wordcount/scripts/wordcount.py", "entryPointArguments": ["s3://DOC-EXAMPLE-BUCKET-OUTPUT/wordcount_output"], "sparkSubmitParameters": "--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.executor.cores=2 --conf spark.driver.cores=1" } }' \ --configuration-overrides '{ "monitoringConfiguration": { "cloudWatchMonitoringConfiguration": { "logGroupName": "my_log_group_name", "logStreamNamePrefix": "my_log_stream_prefix" }, "s3MonitoringConfiguration": { "logUri": "s3://DOC-EXAMPLE-BUCKET-LOGGING" } } }'

    Die Ausgabedaten dieses Aufträge sind unter s3://DOC-EXAMPLE-BUCKET-OUTPUT/wordcount_output verfügbar.

    Sie können auch eine JSON Datei mit bestimmten Parametern für Ihre Jobausführung erstellen. Führen Sie dann den start-job-run Befehl mit einem Pfad zur JSON Datei aus. Weitere Informationen finden Sie unter Reichen Sie einen Auftrag ein, der ausgeführt wird mit StartJobRun. Weitere Informationen zur Konfiguration von Auftrag-Ausführungsparametern finden Sie unter Optionen für die Konfiguration einer Aufgabenausführung.

  3. Verwenden Sie den folgenden Befehl, um eine SQL Spark-Anwendung auszuführen. Ersetzen Sie alle red italicized Werte durch entsprechende Werte. Das Tool REGION ist die Region, in der sich Ihr EKS virtueller Amazon EMR on-Cluster befindet, z. B. us-east-1.

    aws emr-containers start-job-run \ --virtual-cluster-id cluster_id \ --name sample-job-name \ --execution-role-arn execution-role-arn \ --release-label emr-6.7.0-latest \ --job-driver '{ "sparkSqlJobDriver": { "entryPoint": "s3://query-file.sql", "sparkSqlParameters": "--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.executor.cores=2 --conf spark.driver.cores=1" } }' \ --configuration-overrides '{ "monitoringConfiguration": { "cloudWatchMonitoringConfiguration": { "logGroupName": "my_log_group_name", "logStreamNamePrefix": "my_log_stream_prefix" }, "s3MonitoringConfiguration": { "logUri": "s3://DOC-EXAMPLE-BUCKET-LOGGING" } } }'

    Eine SQL Beispielabfragedatei ist unten dargestellt. Sie benötigen einen externen Dateispeicher wie S3, in dem die Daten für die Tabellen gespeichert werden.

    CREATE DATABASE demo; CREATE EXTERNAL TABLE IF NOT EXISTS demo.amazonreview( marketplace string, customer_id string, review_id string, product_id string, product_parent string, product_title string, star_rating integer, helpful_votes integer, total_votes integer, vine string, verified_purchase string, review_headline string, review_body string, review_date date, year integer) STORED AS PARQUET LOCATION 's3://URI to parquet files'; SELECT count(*) FROM demo.amazonreview; SELECT count(*) FROM demo.amazonreview WHERE star_rating = 3;

    Die Ausgabe für diesen Job ist in den Standardprotokollen des Treibers in S3 oder CloudWatch, je nachdem, was konfiguriert istmonitoringConfiguration, verfügbar.

  4. Sie können auch eine JSON Datei mit bestimmten Parametern für Ihre Jobausführung erstellen. Führen Sie dann den start-job-run Befehl mit einem Pfad zur JSON Datei aus. Weitere Informationen finden Sie unter Ausführen einer Auftragsausführung. Weitere Informationen zur Konfiguration von Auftrag-Ausführungsparametern finden Sie unter Optionen für die Konfiguration einer Auftragsausführung.

    Um den Fortschritt des Jobs zu überwachen oder Fehler zu debuggen, können Sie die in Amazon S3 hochgeladenen CloudWatch Protokolle, Logs oder beides überprüfen. Weitere Informationen zum Protokollpfad in Amazon S3 finden Sie unter Auftragsausführung für die Verwendung von S3-Protokollen konfigurieren und Cloudwatch-Protokolle unter Auftragsausführung für die Verwendung von CloudWatch Protokollen konfigurieren. Folgen Sie den nachstehenden Anweisungen, um CloudWatch Protokolle in Logs anzuzeigen.

    • Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/.

    • Wählen Sie im Navigationsbereich Protokolle aus. Wählen Sie dann die Protokollgruppen aus.

    • Wählen Sie die Protokollgruppe für Amazon EMR on aus EKS und sehen Sie sich dann die hochgeladenen Protokollereignisse an.

    Überwachung mithilfe von CloudWatch Protokollen
Wichtig

Aufträge haben eine Standardkonfigurierte Wiederholungsrichtlinie. Informationen zum Ändern oder Deaktivieren der Konfiguration finden Sie unter Richtlinien zur Aufgabenwiederholung verwenden.