Erste Schritte vom AWS CLI - 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 vom AWS CLI

Schritt 1: Erstellen Sie eine EMR serverlose Anwendung

Verwenden Sie den emr-serverless create-applicationBefehl, um Ihre erste EMR serverlose Anwendung zu erstellen. Sie müssen den Anwendungstyp und das EMR Amazon-Release-Label angeben, das der Anwendungsversion zugeordnet ist, die Sie verwenden möchten. Der Name der Anwendung ist optional.

Spark

Führen Sie den folgenden Befehl aus, um eine Spark-Anwendung zu erstellen.

aws emr-serverless create-application \ --release-label emr-6.6.0 \ --type "SPARK" \ --name my-application
Hive

Führen Sie den folgenden Befehl aus, um eine Hive-Anwendung zu erstellen.

aws emr-serverless create-application \ --release-label emr-6.6.0 \ --type "HIVE" \ --name my-application

Notieren Sie sich die in der Ausgabe zurückgegebene Anwendungs-ID. Sie verwenden die ID, um die Bewerbung und bei der Einreichung des Jobs zu starten, im Folgenden alsapplication-id.

Bevor Sie fortfahrenSchritt 2: Senden Sie einen ausgeführten Job an Ihre EMR Serverless-Anwendung, stellen Sie sicher, dass Ihre Bewerbung den CREATED Status mit dem erreicht hat get-applicationAPI.

aws emr-serverless get-application \ --application-id application-id

EMRServerless erstellt Mitarbeiter, um Ihre angeforderten Jobs zu bearbeiten. Standardmäßig werden diese bei Bedarf erstellt. Sie können jedoch auch eine vorinitialisierte Kapazität angeben, indem Sie den initialCapacity Parameter bei der Erstellung der Anwendung festlegen. Mit dem Parameter können Sie auch die maximale Gesamtkapazität einschränken, die eine Anwendung verwenden kann. maximumCapacity Weitere Informationen zu diesen Optionen finden Sie unter Konfiguration einer Anwendung.

Schritt 2: Senden Sie einen ausgeführten Job an Ihre EMR Serverless-Anwendung

Jetzt ist Ihre EMR serverlose Anwendung bereit, Jobs auszuführen.

Spark

In diesem Schritt verwenden wir ein PySpark Skript, um zu berechnen, wie oft eindeutige Wörter in mehreren Textdateien vorkommen. Ein öffentlicher, schreibgeschützter S3-Bucket speichert sowohl das Skript als auch den Datensatz. Die Anwendung sendet die Ausgabedatei und die Protokolldaten aus der Spark-Laufzeit an /output die /logs Verzeichnisse im S3-Bucket, die Sie erstellt haben.

Um einen Spark-Job auszuführen
  1. Verwenden Sie den folgenden Befehl, um das Beispielskript, das wir ausführen werden, in Ihren neuen Bucket zu kopieren.

    aws s3 cp s3://us-east-1.elasticmapreduce/emr-containers/samples/wordcount/scripts/wordcount.py s3://amzn-s3-demo-bucket/scripts/
  2. Geben Sie im folgenden Befehl Ihre Anwendungs-ID ein. application-id job-role-arnErsetzen Sie es durch die Runtime-Rolle, in der ARN Sie sie erstellt habenErstellen Sie eine Job-Runtime-Rolle. Ersetze job-run-name mit dem Namen, den Sie Ihren Job Run nennen möchten. Ersetzen Sie alle amzn-s3-demo-bucket Zeichenketten durch den Amazon S3 S3-Bucket, den Sie erstellt haben, und fügen Sie ihn dem Pfad /output hinzu. Dadurch wird ein neuer Ordner in Ihrem Bucket erstellt, in den EMR Serverless die Ausgabedateien Ihrer Anwendung kopieren kann.

    aws emr-serverless start-job-run \ --application-id application-id \ --execution-role-arn job-role-arn \ --name job-run-name \ --job-driver '{ "sparkSubmit": { "entryPoint": "s3://amzn-s3-demo-bucket/scripts/wordcount.py", "entryPointArguments": ["s3://amzn-s3-demo-bucket/emr-serverless-spark/output"], "sparkSubmitParameters": "--conf spark.executor.cores=1 --conf spark.executor.memory=4g --conf spark.driver.cores=1 --conf spark.driver.memory=4g --conf spark.executor.instances=1" } }'
  3. Notieren Sie sich die in der Ausgabe zurückgegebene Job-Run-ID. job-run-idErsetzen Sie sie in den folgenden Schritten durch diese ID.

Hive

In diesem Tutorial erstellen wir eine Tabelle, fügen einige Datensätze ein und führen eine Zählaggregationsabfrage aus. Um den Hive-Job auszuführen, erstellen Sie zunächst eine Datei, die alle Hive-Abfragen enthält, die als Teil eines einzelnen Jobs ausgeführt werden sollen, laden Sie die Datei auf S3 hoch und geben Sie diesen S3-Pfad an, wenn Sie den Hive-Job starten.

Um einen Hive-Job auszuführen
  1. Erstellen Sie eine Datei mit dem Namenhive-query.ql, die alle Abfragen enthält, die Sie in Ihrem Hive-Job ausführen möchten.

    create database if not exists emrserverless; use emrserverless; create table if not exists test_table(id int); drop table if exists Values__Tmp__Table__1; insert into test_table values (1),(2),(2),(3),(3),(3); select id, count(id) from test_table group by id order by id desc;
  2. Laden Sie hive-query.ql es mit dem folgenden Befehl in Ihren S3-Bucket hoch.

    aws s3 cp hive-query.ql s3://amzn-s3-demo-bucket/emr-serverless-hive/query/hive-query.ql
  3. Ersetzen Sie den Befehl im folgenden Befehl application-id durch Ihre eigene Anwendungs-ID. job-role-arnErsetzen Sie es durch die Runtime-Rolle, in der ARN Sie sie erstellt habenErstellen Sie eine Job-Runtime-Rolle. Ersetzen Sie alle amzn-s3-demo-bucket Zeichenketten durch den Amazon S3 S3-Bucket, den Sie erstellt haben, /output und fügen Sie /logs dem Pfad und hinzu. Dadurch werden neue Ordner in Ihrem Bucket erstellt, in die EMR Serverless die Ausgabe- und Protokolldateien Ihrer Anwendung kopieren kann.

    aws emr-serverless start-job-run \ --application-id application-id \ --execution-role-arn job-role-arn \ --job-driver '{ "hive": { "query": "s3://amzn-s3-demo-bucket/emr-serverless-hive/query/hive-query.ql", "parameters": "--hiveconf hive.log.explain.output=false" } }' \ --configuration-overrides '{ "applicationConfiguration": [{ "classification": "hive-site", "properties": { "hive.exec.scratchdir": "s3://amzn-s3-demo-bucket/emr-serverless-hive/hive/scratch", "hive.metastore.warehouse.dir": "s3://amzn-s3-demo-bucket/emr-serverless-hive/hive/warehouse", "hive.driver.cores": "2", "hive.driver.memory": "4g", "hive.tez.container.size": "4096", "hive.tez.cpu.vcores": "1" } }], "monitoringConfiguration": { "s3MonitoringConfiguration": { "logUri": "s3://amzn-s3-demo-bucket/emr-serverless-hive/logs" } } }'
  4. Notieren Sie sich die in der Ausgabe zurückgegebene Job-Run-ID. job-run-idErsetzen Sie sie in den folgenden Schritten durch diese ID.

Schritt 3: Überprüfen Sie die Ausgabe Ihres Joblaufs

Die Ausführung des Auftrags sollte in der Regel 3 bis 5 Minuten dauern.

Spark

Mit dem folgenden Befehl können Sie den Status Ihres Spark-Jobs überprüfen.

aws emr-serverless get-job-run \ --application-id application-id \ --job-run-id job-run-id

Wenn Ihr Protokollziel auf eingestellt ists3://amzn-s3-demo-bucket/emr-serverless-spark/logs, finden Sie die Protokolle für diesen speziellen Job, der ausgeführt wird, unters3://amzn-s3-demo-bucket/emr-serverless-spark/logs/applications/application-id/jobs/job-run-id.

Bei Spark-Anwendungen überträgt EMR Serverless alle 30 Sekunden Ereignisprotokolle in den sparklogs Ordner in Ihrem S3-Protokollziel. Wenn Ihr Job abgeschlossen ist, werden die Spark-Laufzeitprotokolle für den Treiber und die Executoren in Ordner hochgeladen, die entsprechend dem Worker-Typ benannt sind, z. B. oder. driver executor Die Ausgabe des PySpark Jobs wird in hochgeladen. s3://amzn-s3-demo-bucket/output/

Hive

Mit dem folgenden Befehl können Sie den Status Ihres Hive-Jobs überprüfen.

aws emr-serverless get-job-run \ --application-id application-id \ --job-run-id job-run-id

Wenn Ihr Protokollziel auf eingestellt ists3://amzn-s3-demo-bucket/emr-serverless-hive/logs, finden Sie die Protokolle für diesen speziellen Job, der ausgeführt wird, unters3://amzn-s3-demo-bucket/emr-serverless-hive/logs/applications/application-id/jobs/job-run-id.

Bei Hive-Anwendungen lädt EMR Serverless kontinuierlich den Hive-Treiber in den HIVE_DRIVER Ordner und die Tez-Aufgabenprotokolle in den TEZ_TASK Ordner Ihres S3-Protokollziels hoch. Nachdem der ausgeführte Job den SUCCEEDED Status erreicht hat, ist die Ausgabe Ihrer Hive-Abfrage an dem Amazon S3 S3-Speicherort verfügbar, den Sie im monitoringConfiguration Feld von configurationOverrides angegeben haben.

Schritt 4: Bereinigen

Wenn Sie mit der Arbeit an diesem Tutorial fertig sind, sollten Sie erwägen, die von Ihnen erstellten Ressourcen zu löschen. Wir empfehlen Ihnen, Ressourcen freizugeben, die Sie nicht erneut verwenden möchten.

Löschen Sie Ihre Bewerbung

Verwenden Sie den folgenden Befehl, um eine Anwendung zu löschen.

aws emr-serverless delete-application \ --application-id application-id

Löschen Sie Ihren S3-Log-Bucket

Verwenden Sie den folgenden Befehl, um Ihren S3-Logging- und Output-Bucket zu löschen. amzn-s3-demo-bucketErsetzen Sie es durch den tatsächlichen Namen des S3-Buckets, der inBereiten Sie den Speicher für EMR Serverless vor.. erstellt wurde

aws s3 rm s3://amzn-s3-demo-bucket --recursive aws s3api delete-bucket --bucket amzn-s3-demo-bucket

Löschen Sie Ihre Job-Runtime-Rolle

Um die Runtime-Rolle zu löschen, trennen Sie die Richtlinie von der Rolle. Anschließend können Sie sowohl die Rolle als auch die Richtlinie löschen.

aws iam detach-role-policy \ --role-name EMRServerlessS3RuntimeRole \ --policy-arn policy-arn

Verwenden Sie den folgenden Befehl, um die Rolle zu löschen.

aws iam delete-role \ --role-name EMRServerlessS3RuntimeRole

Verwenden Sie den folgenden Befehl, um die Richtlinie zu löschen, die der Rolle zugeordnet war.

aws iam delete-policy \ --policy-arn policy-arn

Weitere Beispiele für die Ausführung von Spark- und Hive-Jobs finden Sie unter Stellen bei Spark undJobs bei Hive.