Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Utilizzo di EMR Serverless con AWS Lake Formation per un controllo granulare degli accessi
Panoramica
Con le EMR versioni 7.2.0 e successive di Amazon, puoi sfruttare AWS Lake Formation per applicare controlli di accesso granulari alle tabelle di Data Catalog supportate da S3. Questa funzionalità consente di configurare i controlli di accesso a livello di tabella, riga, colonna e cella per read domande all'interno dei tuoi job Amazon EMR Serverless Spark. Per configurare un controllo granulare degli accessi per i processi batch e le sessioni interattive di Apache Spark, usa Studio. EMR Consulta le sezioni seguenti per saperne di più su Lake Formation e su come utilizzarlo con EMR Serverless.
L'utilizzo di Amazon EMR Serverless con AWS Lake Formation comporta costi aggiuntivi. Per ulteriori informazioni, consulta i EMRprezzi di Amazon
Come funziona EMR Serverless con AWS Lake Formation
L'utilizzo di EMR Serverless with Lake Formation ti consente di applicare un livello di autorizzazioni su ogni lavoro Spark per applicare il controllo delle autorizzazioni di Lake Formation quando Serverless esegue i lavori. EMR EMRServerless utilizza i profili di risorse Spark per creare due profili
Quando utilizzi la capacità preinizializzata con Lake Formation, ti consigliamo di avere almeno due driver Spark. Ogni job abilitato per Lake Formation utilizza due driver Spark, uno per il profilo utente e uno per il profilo di sistema. Per ottenere prestazioni ottimali, è necessario utilizzare il doppio del numero di driver per i lavori abilitati a Lake Formation rispetto a chi non utilizza Lake Formation.
Quando esegui i job Spark su EMR Serverless, devi anche considerare l'impatto dell'allocazione dinamica sulla gestione delle risorse e sulle prestazioni del cluster. La configurazione spark.dynamicAllocation.maxExecutors
del numero massimo di esecutori per profilo di risorsa si applica sia agli esecutori utente che a quelli di sistema. Se si configura tale numero in modo che sia uguale al numero massimo consentito di executor, l'esecuzione del job potrebbe bloccarsi a causa di un tipo di executor che utilizza tutte le risorse disponibili, impedendo all'altro executor di eseguire i job di job.
Per non esaurire le risorse, EMR Serverless imposta il numero massimo predefinito di esecutori per profilo di risorsa al 90% del valore. spark.dynamicAllocation.maxExecutors
È possibile ignorare questa configurazione quando si specifica spark.dynamicAllocation.maxExecutorsRatio
un valore compreso tra 0 e 1. Inoltre, è possibile configurare le seguenti proprietà per ottimizzare l'allocazione delle risorse e le prestazioni complessive:
-
spark.dynamicAllocation.cachedExecutorIdleTimeout
-
spark.dynamicAllocation.shuffleTracking.timeout
-
spark.cleaner.periodicGC.interval
Di seguito è riportata una panoramica di alto livello su come EMR Serverless accede ai dati protetti dalle politiche di sicurezza di Lake Formation.
-
Un utente invia un job Spark a un'applicazione Serverless AWS Lake Formation EMR abilitata.
-
EMRServerless invia il lavoro a un driver utente ed esegue il lavoro nel profilo utente. Il driver utente esegue una versione snella di Spark che non è in grado di avviare attività, richiedere esecutori, accedere a S3 o al Glue Catalog. Costruisce un piano di lavoro.
-
EMRServerless configura un secondo driver chiamato driver di sistema e lo esegue nel profilo di sistema (con un'identità privilegiata). EMRServerless configura un TLS canale crittografato tra i due driver per la comunicazione. Il driver utente utilizza il canale per inviare i piani di lavoro al driver di sistema. Il driver di sistema non esegue il codice inviato dall'utente. Esegue Spark completo e comunica con S3 e il Data Catalog per l'accesso ai dati. Richiede esecutori e compila il Job Plan in una sequenza di fasi di esecuzione.
-
EMRServerless esegue quindi le fasi sugli executor con il driver utente o il driver di sistema. Il codice utente in qualsiasi fase viene eseguito esclusivamente sugli esecutori dei profili utente.
-
Le fasi che leggono i dati dalle tabelle del Data Catalog protette da AWS Lake Formation o che applicano filtri di sicurezza sono delegate agli esecutori di sistema.
Abilitare Lake Formation in Amazon EMR
Per abilitare Lake Formation, è necessario impostare spark.emr-serverless.lakeformation.enabled
la true
spark-defaults
sottoclassificazione per il parametro di configurazione di runtime durante la creazione di un'applicazione EMR Serverless.
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"
Puoi anche abilitare Lake Formation quando crei una nuova applicazione in EMR Studio. Scegli Use Lake Formation per un controllo granulare degli accessi, disponibile in Configurazioni aggiuntive.
La crittografia tra lavoratori è abilitata per impostazione predefinita quando si utilizza Lake Formation con EMR Serverless, quindi non è necessario abilitare nuovamente in modo esplicito la crittografia tra lavoratori.
Attivazione dei lavori di Lake Formation per Spark
Per abilitare Lake Formation per i singoli job Spark, imposta su spark.emr-serverless.lakeformation.enabled
true durante l'utilizzospark-submit
.
--conf spark.emr-serverless.lakeformation.enabled=true
IAMAutorizzazioni del ruolo Job Runtime
Le autorizzazioni di Lake Formation controllano l'accesso alle risorse di AWS Glue Data Catalog, alle sedi Amazon S3 e ai dati sottostanti in tali sedi. IAMle autorizzazioni controllano l'accesso a Lake Formation and AWS Glue APIs e alle risorse. Sebbene tu possa avere l'autorizzazione Lake Formation per accedere a una tabella nel Data Catalog (SELECT), l'operazione fallisce se non disponi dell'IAMautorizzazione per l'glue:Get*
APIoperazione.
Di seguito è riportato un esempio di politica su come fornire IAM le autorizzazioni per accedere a uno script in S3, caricare i log su S3, le API autorizzazioni AWS Glue e l'autorizzazione per accedere a 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": ["*"] } ] }
Configurazione delle autorizzazioni di Lake Formation per il ruolo Job Runtime
Innanzitutto, registra la posizione del tuo tavolo Hive con Lake Formation. Quindi crea le autorizzazioni per il tuo ruolo di job runtime nella tabella desiderata. Per maggiori dettagli su Lake Formation, vedi What is AWS Lake Formation? nella Guida per gli AWS Lake Formation sviluppatori.
Dopo aver configurato le autorizzazioni di Lake Formation, puoi inviare lavori Spark su Amazon EMR Serverless. Per ulteriori informazioni sui job Spark, consulta gli esempi di Spark.
Invio di un job run
Dopo aver completato la configurazione delle sovvenzioni Lake Formation, puoi inviare lavori Spark su EMR Serverless. Per eseguire i job Iceberg, devi fornire le seguenti proprietà. spark-submit
--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
Supporto per il formato a tabella aperta
La EMR versione 7.2.0 di Amazon include il supporto per il controllo granulare degli accessi basato su Lake Formation. EMRServerless supporta i tipi di tabelle Hive e Iceberg. La tabella seguente descrive tutte le operazioni supportate.
Operazioni | Hive | Iceberg |
---|---|---|
DDLcomandi | Solo con autorizzazioni di IAM ruolo | Solo con autorizzazioni di IAM ruolo |
Query incrementali | Non applicabile | Completamente supportato |
Query temporali | Non applicabile a questo formato di tabella | Completamente supportato |
Tabelle dei metadati | Non applicabile a questo formato di tabella | Supportato, ma alcune tabelle sono nascoste. Per ulteriori informazioni, consulta Considerazioni e limitazioni. |
DML INSERT |
Solo con IAM autorizzazioni | Solo con IAM autorizzazioni |
DML UPDATE | Non applicabile a questo formato di tabella | Solo con IAM autorizzazioni |
DML DELETE |
Non applicabile a questo formato di tabella | Solo con IAM autorizzazioni |
Operazioni di lettura | Completamente supportato | Completamente supportato |
Stored procedure | Non applicabile | Supportato con le eccezioni di register_table emigrate . Per ulteriori informazioni, consulta Considerazioni e limitazioni. |