2014-07-24 7 views
20

Sto passando le cartelle di input e output come parametri per mappare il programma di conteggio parole dalla pagina web.Come specificare l'ID chiave di accesso AWS e la chiave di accesso segreta come parte di un URL sazon amazon

Ottenere sotto l'errore:

HTTP Status 500 - Request processing failed; nested exception is java.lang.IllegalArgumentException: AWS Access Key ID and Secret Access Key must be specified as the username or password (respectively) of a s3n URL, or by setting the fs.s3n.awsAccessKeyId or fs.s3n.awsSecretAccessKey properties (respectively).

risposta

32

La documentazione ha il formato: http://wiki.apache.org/hadoop/AmazonS3

s3n://ID:[email protected]/Path 
+10

Sfortunatamente questo non funziona se capita che il segreto abbia un "/" in esso. Che è abbastanza frequente È un vecchio bug noto https://issues.apache.org/jira/browse/HADOOP-3733 e potrebbe essere corretto in hadoop 2.8 per il protocollo s3a. https://issues.apache.org/jira/browse/HADOOP-11573. L'alternativa è mettere le chiavi in ​​conf (ma questo ha anche altri avvertimenti) – mathieu

+0

sì, anche mettere in conf non funziona per me –

+2

Ha funzionato per emr-4.3.0. Emr-4.4.0 ed emr-4,5,0 throw 'java.lang.IllegalArgumentException: Il nome del bucket non deve essere formattato come un indirizzo IP', come se l'ID e il SECRET facessero parte del nome del bucket. Emr-4.6.0 lancia 'java.lang.IllegalArgumentException: Il nome del bucket deve essere compreso tra 3 e 63 caratteri. Qualche idea? – osa

8

vi suggerisco di utilizzare questo:

hadoop distcp \ 
-Dfs.s3n.awsAccessKeyId=<your_access_id> \ 
-Dfs.s3n.awsSecretAccessKey=<your_access_key> \ 
s3n://origin hdfs://destinations 

Funziona anche come una soluzione per il occorrenza di barre nella chiave. i parametri con il tasto ID e l'accesso devono essere forniti esattamente in questo ordine: dopo disctcp e prima origine

+0

s3n non è più supportato – Programmer

5

Passando nelle credenziali AWS come parte del Rio delle Amazzoni S3N URL non viene normalmente consigliato, la sicurezza saggio. Soprattutto se quel codice viene inviato a un servizio di deposito di repository (come github). Idealmente impostare le credenziali nella conf/core-site.xml come:

<configuration> 
    <property> 
    <name>fs.s3n.awsAccessKeyId</name> 
    <value>XXXXXX</value> 
    </property> 

    <property> 
    <name>fs.s3n.awsSecretAccessKey</name> 
    <value>XXXXXX</value> 
    </property> 
</configuration> 

o reinstallare awscli sulla vostra macchina.

pip install awscli 
+0

Dove aggiungere i dati ''? Il mio pom.xml non sembra gradirlo. Sto eseguendo un lavoro Spark su una macchina virtuale CentOS e l'installazione e la configurazione della CLI AWS non sono state d'aiuto. –

+0

aggiungilo in questo file: 'conf/core-site.xml' – dyltini

+0

Cosa e dov'è questo' conf/core-site.xml'? –