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
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://
. Das Tool REGION
.elasticmapreduce/emr-containers/samples/wordcount/scripts/wordcount.pyREGION
ist die Region, in der sich Ihr EKS virtueller Amazon EMR on-Cluster befindet, z. B. us-east-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ährtListBucket
undGetObjects
Zugriff auf die folgenden Amazon-S3-Buckets:-
– der Bucket, in dem sich dieREGION
.elasticmapreduceentryPoint
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
unter einem Protokollstream mit dem Namenmy_log_group_name
.my_log_stream_prefix
-
-
Verwenden Sie den folgenden Befehl, um eine Spark-Python-Anwendung auszuführen. Ersetze alle austauschbaren
red italicized
Werte durch entsprechende Werte. Das ToolREGION
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
\ --namesample-job-name
\ --execution-role-arnexecution-role-arn
\ --release-labelemr-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://
verfügbar.DOC-EXAMPLE-BUCKET-OUTPUT
/wordcount_outputSie 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. -
Verwenden Sie den folgenden Befehl, um eine SQL Spark-Anwendung auszuführen. Ersetzen Sie alle
red italicized
Werte durch entsprechende Werte. Das ToolREGION
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
\ --namesample-job-name
\ --execution-role-arnexecution-role-arn
\ --release-labelemr-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 ist
monitoringConfiguration
, 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 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.
-
Wichtig
Aufträge haben eine Standardkonfigurierte Wiederholungsrichtlinie. Informationen zum Ändern oder Deaktivieren der Konfiguration finden Sie unter Richtlinien zur Aufgabenwiederholung verwenden.