2014-07-24 155 views
20

我將輸入和輸出文件夾作爲參數傳遞給網頁中的mapreduce字數統計程序。如何指定AWS訪問密鑰ID和祕密訪問密鑰作爲亞馬遜S3N URL的一部分

獲得以下錯誤:

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

回答

32

該文檔的格式爲:http://wiki.apache.org/hadoop/AmazonS3

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

不幸的是,如果它的祕密中有一個「/」,這不起作用。這是相當頻繁的。這是一個古老的已知錯誤https://issues.apache.org/jira/browse/HADOOP-3733,並且可能在s3a協議的hadoop 2.8中修復。 https://issues.apache.org/jira/browse/HADOOP-11573。另一種方法是將密鑰置於conf(但是這也有其他警告) – mathieu

+0

是的,即使放在conf也不適用於我 –

+2

它適用於emr-4.3.0。 Emr-4.4.0和emr-4,5,0拋出'java.lang.IllegalArgumentException:桶名稱不能被格式化爲IP地址,就好像ID和SECRET是桶名稱的一部分一樣。 Emr-4.6.0拋出java.lang.IllegalArgumentException:桶名應該在3到63個字符之間。有任何想法嗎? – osa

8

我建議你使用這樣的:

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

它也可以作爲一種解決方法鑰匙出現斜槓。明智後disctcp之前起源

+0

s3n不再被支持 – Programmer

5

在AWS憑據傳遞作爲亞馬遜S3N URL的一部分,通常不建議使用,安全性: 與標識和訪問關鍵的參數必須嚴格按順序提供。特別是如果該代碼被推送到存儲服務庫(如github)。在conf/core-site.xml中理想地設置您的憑據爲:

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

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

或者在您的計算機上重新安裝awscli。

pip install awscli 
+0

在哪裏添加''數據?我的pom.xml似乎不喜歡它。我在CentOS虛擬機上運行Spark作業,安裝和配置AWS CLI也沒有幫助。 –

+0

在此文件中加入:'conf/core-site.xml' – dyltini

+0

這個'conf/core-site.xml'在什麼地方? –

相關問題