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-application
Befehl, 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-application
API.
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
-
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/
-
Geben Sie im folgenden Befehl Ihre Anwendungs-ID ein. application-id
job-role-arn
Ersetzen 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"
}
}'
-
Notieren Sie sich die in der Ausgabe zurückgegebene Job-Run-ID. job-run-id
Ersetzen 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
-
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;
-
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
-
Ersetzen Sie den Befehl im folgenden Befehl application-id
durch Ihre eigene Anwendungs-ID. job-role-arn
Ersetzen 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"
}
}
}'
-
Notieren Sie sich die in der Ausgabe zurückgegebene Job-Run-ID. job-run-id
Ersetzen 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-bucket
Ersetzen 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.