2014-07-24 6 views
20

angeben Ich übergebe Eingabe-und Ausgabeordner als Parameter mapreduce Wortanzahl Programm von der Webseite.Wie AWS Access Key ID und Secret Access Key als Teil einer Amazon s3n URL

unten Fehler Anfahrt:

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).

Antwort

32

Die Dokumentation hat das Format: http://wiki.apache.org/hadoop/AmazonS3

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

Leider funktioniert das nicht, wenn das Geheimnis ein "/" enthält. Das ist ziemlich häufig. Es ist ein altbekannter Bug https://issues.apache.org/jira/browse/HADOOP-3733 und kann in hadoop 2.8 für das s3a-Protokoll behoben werden. https://issues.apache.org/jira/browse/HADOOP-11573. Die Alternative ist, die Schlüssel in conf zu setzen (aber das hat auch andere Vorbehalte) – mathieu

+0

ja, selbst in conf gesetzt funktioniert nicht für mich –

+2

Es funktionierte für emr-4.3.0. Emr-4.4.0 und emr-4,5,0 werfen 'java.lang.IllegalArgumentException: Bucket-Name darf nicht als IP-Adresse formatiert sein ', als ob die ID und das SECRET Teil des Bucket-Namens wären. Emr-4.6.0 löst "java.lang.IllegalArgumentException" aus: Der Bucket-Name sollte zwischen 3 und 63 Zeichen lang sein. Irgendwelche Ideen? – osa

8

Ich schlage vor, Sie verwenden:

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

es auch als Problemumgehung funktioniert für die Auftreten von Schrägstrichen im Schlüssel. Die Parameter mit dem ID und Zugangsschlüssel muss genau in dieser Reihenfolge geliefert werden: nach disctcp und vor Herkunft

+0

s3n wird nicht mehr unterstützt – Programmer

5

Pass in dem AWS Credentials als Teil der URL S3N Amazon ist normalerweise nicht Sicherheit empfohlen, wiese. Vor allem, wenn dieser Code in einen Repository-Speicherdienst (wie Github) geschoben wird.

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

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

oder neu installieren awscli auf Ihrem Rechner: Im Idealfall Ihre Anmeldeinformationen in dem conf/Kern-site.xml nach.

pip install awscli 
+0

Wo fügen Sie die '' Daten hinzu? Meine pom.xml scheint es nicht zu mögen. Ich habe einen Spark-Job auf einer CentOS-VM ausgeführt, und die Installation und Konfiguration von AWS CLI hat ebenfalls nicht geholfen. –

+0

fügen Sie es in dieser Datei hinzu: 'conf/core-site.xml' – dyltini

+0

Was und wo ist diese' conf/core-site.xml'? –

Verwandte Themen