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.
Verwendung von EMR Serverless mit AWS Lake Formation für eine differenzierte Zugriffskontrolle
Übersicht
Mit den EMR Amazon-Versionen 7.2.0 und höher können Sie detaillierte Zugriffskontrollen auf Datenkatalogtabellen anwenden, die von S3 unterstützt werden. AWS Lake Formation Mit dieser Funktion können Sie Zugriffskontrollen auf Tabellen-, Zeilen-, Spalten- und Zellenebene konfigurieren für read Abfragen innerhalb Ihrer Amazon EMR Serverless Spark-Jobs. Verwenden Sie Studio, um eine detaillierte Zugriffskontrolle für Apache Spark-Batch-Jobs und interaktive Sitzungen zu konfigurieren. EMR In den folgenden Abschnitten erfahren Sie mehr über Lake Formation und dessen Verwendung mit EMR Serverless.
Für die Nutzung von Amazon EMR Serverless mit AWS Lake Formation fallen zusätzliche Gebühren an. Weitere Informationen finden Sie unter EMRAmazon-Preise
So funktioniert EMR Serverless mit AWS Lake Formation
Wenn Sie EMR Serverless mit Lake Formation verwenden, können Sie für jeden Spark-Job eine Berechtigungsebene erzwingen, um die Lake Formation Formation-Berechtigungssteuerung anzuwenden, wenn EMR Serverless Jobs ausführt. EMRServerless verwendet Spark-Ressourcenprofile, um zwei Profile
Wenn Sie vorinitialisierte Kapazität mit Lake Formation verwenden, empfehlen wir, mindestens zwei Spark-Treiber zu verwenden. Jeder Lake Formation-fähige Job verwendet zwei Spark-Treiber, einen für das Benutzerprofil und einen für das Systemprofil. Um die beste Leistung zu erzielen, sollten Sie für Lake Formation-fähige Jobs doppelt so viele Treiber verwenden wie für Jobs, die Lake Formation nicht verwenden.
Wenn Sie Spark-Jobs auf EMR Serverless ausführen, müssen Sie auch die Auswirkungen der dynamischen Zuweisung auf das Ressourcenmanagement und die Clusterleistung berücksichtigen. Die Konfiguration spark.dynamicAllocation.maxExecutors
der maximalen Anzahl von Executors pro Ressourcenprofil gilt sowohl für Benutzer- als auch für System-Executoren. Wenn Sie diese Anzahl so konfigurieren, dass sie der maximal zulässigen Anzahl von Executoren entspricht, kann es sein, dass Ihre Jobausführung aufgrund eines Executortyps, der alle verfügbaren Ressourcen verwendet, blockiert wird, wodurch der andere Executor verhindert wird, wenn Sie Job-Jobs ausführen.
Damit Ihnen nicht die Ressourcen ausgehen, legt EMR Serverless die standardmäßige maximale Anzahl von Executoren pro Ressourcenprofil auf 90% des Werts fest. spark.dynamicAllocation.maxExecutors
Sie können diese Konfiguration überschreiben, wenn Sie einen Wert zwischen 0 und 1 angebenspark.dynamicAllocation.maxExecutorsRatio
. Darüber hinaus können Sie auch die folgenden Eigenschaften konfigurieren, um die Ressourcenzuweisung und die Gesamtleistung zu optimieren:
-
spark.dynamicAllocation.cachedExecutorIdleTimeout
-
spark.dynamicAllocation.shuffleTracking.timeout
-
spark.cleaner.periodicGC.interval
Im Folgenden finden Sie einen allgemeinen Überblick darüber, wie EMR Serverless Zugriff auf Daten erhält, die durch Sicherheitsrichtlinien von Lake Formation geschützt sind.
-
Ein Benutzer sendet einen Spark-Job an eine AWS Lake Formation-fähige EMR serverlose Anwendung.
-
EMRServerless sendet den Job an einen Benutzertreiber und führt den Job im Benutzerprofil aus. Der Benutzertreiber führt eine schlanke Version von Spark aus, die nicht in der Lage ist, Aufgaben zu starten, Executors anzufordern, auf S3 oder den Glue-Katalog zuzugreifen. Es erstellt einen Jobplan.
-
EMRServerless richtet einen zweiten Treiber ein, den Systemtreiber, und führt ihn im Systemprofil aus (mit einer privilegierten Identität). EMRServerless richtet für die Kommunikation einen verschlüsselten TLS Kanal zwischen den beiden Treibern ein. Der Benutzertreiber verwendet den Kanal, um die Jobpläne an den Systemtreiber zu senden. Der Systemtreiber führt keinen vom Benutzer übermittelten Code aus. Er läuft in vollem Umfang mit Spark und kommuniziert mit S3 und dem Datenkatalog für den Datenzugriff. Es fordert Ausführende an und stellt den Jobplan in eine Abfolge von Ausführungsphasen zusammen.
-
EMRServerless führt die Phasen dann auf Executoren mit dem Benutzertreiber oder Systemtreiber aus. Benutzercode wird in jeder Phase ausschließlich auf Benutzerprofil-Executoren ausgeführt.
-
Stufen, die Daten aus Datenkatalogtabellen lesen, die durch Sicherheitsfilter geschützt sind AWS Lake Formation oder solche, die Sicherheitsfilter anwenden, werden an Systemausführende delegiert.
Förderung der Lake Formation im Amazon EMR
Um Lake Formation zu aktivieren, müssen Sie beim Erstellen einer EMR serverlosen Anwendung den Wert true
spark-defaults
Unterklassifizierung für den Laufzeitkonfigurationsparameter festlegenspark.emr-serverless.lakeformation.enabled
.
aws emr-serverless create-application \ --release-label emr-7.3.0 \ --runtime-configuration '{ "classification": "spark-defaults", "properties": { "spark.emr-serverless.lakeformation.enabled": "true" } }' \ --type "SPARK"
Sie können Lake Formation auch aktivieren, wenn Sie eine neue Anwendung in EMR Studio erstellen. Wählen Sie Lake Formation verwenden für eine detaillierte Zugriffskontrolle aus, die unter Zusätzliche Konfigurationen verfügbar ist.
Die Interworker-Verschlüsselung ist standardmäßig aktiviert, wenn Sie Lake Formation mit EMR Serverless verwenden, sodass Sie die Interworker-Verschlüsselung nicht erneut explizit aktivieren müssen.
Aktivierung von Lake Formation für Spark-Jobs
Um Lake Formation für einzelne Spark-Jobs spark.emr-serverless.lakeformation.enabled
zu aktivieren, setzen Sie ihn bei der Verwendung auf truespark-submit
.
--conf spark.emr-serverless.lakeformation.enabled=true
IAMRollenberechtigungen zur Laufzeit von Job
Lake Formation Formation-Berechtigungen kontrollieren den Zugriff auf AWS Glue Data Catalog-Ressourcen, Amazon S3 S3-Standorte und die zugrunde liegenden Daten an diesen Standorten. IAMBerechtigungen kontrollieren den Zugriff auf Lake Formation und AWS Glue APIs sowie auf Ressourcen. Obwohl Sie möglicherweise über die Lake Formation Formation-Berechtigung verfügen, auf eine Tabelle im Datenkatalog (SELECT) zuzugreifen, schlägt Ihr Vorgang fehl, wenn Sie nicht über die IAM entsprechende Berechtigung für den glue:Get*
API Vorgang verfügen.
Im Folgenden finden Sie eine Beispielrichtlinie für die Bereitstellung von IAM Berechtigungen für den Zugriff auf ein Skript in S3, für das Hochladen von Protokollen auf S3, API für AWS Glue-Berechtigungen und für den Zugriff auf Lake Formation.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ScriptAccess", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::*.amzn-s3-demo-bucket/scripts", "arn:aws:s3:::*.amzn-s3-demo-bucket/*" ] }, { "Sid": "LoggingAccess", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/logs/*" ] }, { "Sid": "GlueCatalogAccess", "Effect": "Allow", "Action": [ "glue:Get*", "glue:Create*", "glue:Update*" ], "Resource": ["*"] }, { "Sid": "LakeFormationAccess", "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess" ], "Resource": ["*"] } ] }
Lake Formation Formation-Berechtigungen für die Job-Runtime-Rolle einrichten
Registrieren Sie zunächst den Standort Ihres Hive-Tisches bei Lake Formation. Erstellen Sie dann Berechtigungen für Ihre Job-Runtime-Rolle in der gewünschten Tabelle. Weitere Informationen zu Lake Formation finden Sie unter Was ist AWS Lake Formation? im AWS Lake Formation Entwicklerhandbuch.
Nachdem Sie die Lake Formation Formation-Berechtigungen eingerichtet haben, können Sie Spark-Jobs auf Amazon EMR Serverless einreichen. Weitere Informationen zu Spark-Jobs finden Sie unter Spark-Beispiele.
Einen Joblauf einreichen
Nachdem Sie die Lake Formation Grants eingerichtet haben, können Sie Spark-Jobs auf EMR Serverless einreichen. Um Iceberg-Jobs auszuführen, müssen Sie die folgenden spark-submit
Eigenschaften angeben.
--conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkSessionCatalog --conf spark.sql.catalog.spark_catalog.warehouse=<
S3_DATA_LOCATION
> --conf spark.sql.catalog.spark_catalog.glue.account-id=<ACCOUNT_ID
> --conf spark.sql.catalog.spark_catalog.client.region=<REGION
> --conf spark.sql.catalog.spark_catalog.glue.endpoint=https://glue.<REGION
>.amazonaws.com
Unterstützung für das Open-Table-Format
Die EMR Amazon-Version 7.2.0 bietet Unterstützung für eine differenzierte Zugriffskontrolle auf Basis von Lake Formation. EMRServerless unterstützt die Tabellentypen Hive und Iceberg. In der folgenden Tabelle werden alle unterstützten Operationen beschrieben.
Operationen | Hive | Iceberg |
---|---|---|
DDLBefehle | Nur mit IAM Rollenberechtigungen | Nur mit IAM Rollenberechtigungen |
Inkrementelle Abfragen | Nicht zutreffend | Vollständig unterstützt |
Zeitreiseabfragen | Gilt nicht für dieses Tabellenformat | Vollständig unterstützt |
Metadaten-Tabellen | Gilt nicht für dieses Tabellenformat | Wird unterstützt, aber bestimmte Tabellen sind ausgeblendet. Weitere Informationen finden Sie unter Überlegungen und Einschränkungen. |
DML INSERT |
Nur mit IAM Berechtigungen | Nur mit IAM Berechtigungen |
DML UPDATE | Gilt nicht für dieses Tabellenformat | Nur mit IAM Berechtigungen |
DML DELETE |
Gilt nicht für dieses Tabellenformat | Nur mit IAM Berechtigungen |
Lesevorgänge | Vollständig unterstützt | Vollständig unterstützt |
Gespeicherte Prozeduren | Nicht zutreffend | Unterstützt mit den Ausnahmen von register_table undmigrate . Weitere Informationen finden Sie unter Überlegungen und Einschränkungen. |