Sto eseguendo AWS EMR Cluster per eseguire lavori spark. Per lavorare con i bucket s3, la configurazione di hadoop viene impostata con le chiavi di accesso, le chiavi segrete, enableServerSideEncryption e l'algoritmo da utilizzare per la crittografia. Si prega di consultare il codice qui sottoSpark/Hadoop - Impossibile salvare su s3 con crittografia lato server
val hadoopConf = sc.hadoopConfiguration; hadoopConf.set("fs.s3.impl", "org.apache.hadoop.fs.s3native.NativeS3FileSystem") hadoopConf.set("fs.s3.awsAccessKeyId", "xxx") hadoopConf.set("fs.s3.awsSecretAccessKey", "xxx") hadoopConf.set("fs.s3.enableServerSideEncryption", "true") hadoopConf.set("fs.s3.serverSideEncryptionAlgorithm","AES256")
Sotto la configurazione di cui sopra, il programma scintilla è in grado di leggere da secchio S3, eseguire l'elaborazione. Ma fallisce quando tenta di salvare i risultati su s3, che impone che i dati devono essere crittografati. Se il bucket consente i dati non crittografati, viene salvato con successo senza crittografia.
Ciò si verifica anche se il cluster è stato creato con l'opzione che applica la crittografia lato server --emrfs Encryption=ServerSide,Args=[fs.s3.serverSideEncryptionAlgorithm=AES256]
.
hadoop distcp da hdfs su emr su s3 anche non riesce. Tuttavia, s3-dist-copy (versione di hss hdfs distcp) se impostato con l'opzione --s3ServerSideEncryption funziona correttamente.
Tuttavia, l'istanza ec2 ha il ruolo richiesto l'autorizzazione per caricare i dati nello stesso bucket con crittografia lato server senza l'utilizzo di chiavi di accesso utente. Si prega di consultare il comando di esempio qui sotto. Se -sse viene omesso nel comando sottostante, genererà un "Errore di accesso negato".
aws s3 cp test.txt s3://encrypted-bucket/ —sse
sarà utile, se qualcuno potrebbe aiutare con la configurazione richiesta in scintilla/Hadoop per salvare i dati AWS s3 con crittografia lato server.