2016-02-22 9 views
5

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.

risposta

4

Questo è ora risolto. --emrfs non ha applicato correttamente la configurazione. Ma l'opzione sottostante con aws emr create-cluster funziona con entrambe le spie e hadoop distcp.

--configurations '[{"Classification":"emrfs-site","Properties":{"fs.s3.enableServerSideEncryption":"true"},"Configurations":[]}]'

Come le istanze EC2 sono stati di installazione con il profilo del ruolo di lettura/scrittura dal secchio, il mio codice scintilla ha lavorato senza dover fornire le chiavi di accesso AWS. sono disponibili in

Più opzioni di configurazione EMR, che può essere utilizzato con l'opzione --configuration con emr create-clusterhttp://docs.aws.amazon.com/ElasticMapReduce/latest/ReleaseGuide/emr-configure-apps.html

io non sono sicuro perché EMR AWS sta dando 2 opzioni per fare la stessa cosa. Uno funziona e l'altro no.

Problemi correlati