2013-12-12 34 views
2

我正在運行CDH4.5。我試圖使用distcp s3n,但自從我升級到4.5後就遇到了問題。 我試圖讓s3distcp啓動並運行,但正在解決問題。我下載了它,並正在運行以下命令:s3distcp不適用於我CDH4.5

hadoop jar /usr/lib/hadoop/lib/s3distcp.jar --src hdfs://NN:8020/path/to/destination/folder --dest s3n://acceseKeyId:[email protected]/destination/ 

,但我得到的錯誤:

INFO mapred.JobClient: map 100% reduce 0% 
INFO mapred.JobClient: Task Id : attempt_201312042223_10889_r_000001_0, Status : FAILED 
Error: java.lang.ClassNotFoundException: com.amazonaws.services.s3.AmazonS3 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    at com.amazon.external.elasticmapreduce.s3distcp.CopyFilesReducer.executeDownloads(CopyFilesReducer.java:209) 
    at com.amazon.external.elasticmapreduce.s3distcp.CopyFilesReducer.reduce(CopyFilesReducer.java:196) 
    at com.amazon.external.elasticmapreduce.s3distcp.CopyFilesReducer.reduce(CopyFilesReducer.java:30) 
    at org.apache.hadoop.mapred.ReduceTask.runOldReducer(ReduceTask.java:506) 
    at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:447) 
    at org.apache.hadoop.mapred.Child$4.run(Child.java:268) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax 

INFO mapred.JobClient: Job Failed: NA 
13/12/12 13:55:25 INFO s3distcp.S3DistCp: Try to recursively delete hdfs:/tmp/985ffdb0-1bc8-4d00-aba6-fd9b18e905f1/tempspace 
Exception in thread "main" java.lang.RuntimeException: Error running job 
    at com.amazon.external.elasticmapreduce.s3distcp.S3DistCp.run(S3DistCp.java:586) 
    at com.amazon.external.elasticmapreduce.s3distcp.S3DistCp.run(S3DistCp.java:216) 
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70) 
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84) 
    at com.amazon.external.elasticmapreduce.s3distcp.Main.main(Main.java:12) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.hadoop.util.RunJar.main(RunJar.java:208) 
Caused by: java.io.IOException: Job failed! 
    at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1388) 
    at com.amazon.external.elasticmapreduce.s3distcp.S3DistCp.run(S3DistCp.java:568) 

我然後把快捷鍵和身份證到我的核心-site.xml中的所有數據和名稱節點:

<property> 
    <name>fs.s3.awsSecretAccessKey</name> 
    <value>bippitybopityboo</value> 
    </property> 
    <property> 
    <name>fs.s3.awsAccessKeyId</name> 
    <value>supercalifragilisticexpialadoscious</value> 
    </property> 
    <property> 
    <name>fs.s3n.awsSecretAccessKey</name> 
    <value>bippitybopityboo</value> 
    </property> 
    <property> 
    <name>fs.s3n.awsAccessKeyId</name> 
    <value>supercalifragilisticexpialadoscious</value> 
    </property> 

,仍然得到了同樣的錯誤,當我試圖這樣的:

hadoop jar /usr/lib/hadoop/lib/s3distcp.jar --src hdfs://NN:8020/path/to/destination/folder --dest s3n://mybucket/destination/ 

有一些配置我應該做,或者我錯過了一些jar文件或執行不正確?

感謝您的任何幫助

回答

-1

您需要適用於Java的AWS開發工具包。從http://aws.amazon.com/de/sdkforjava/中獲取它,然後將罐子放入/usr/lib/hadoop/lib或將其與-libjars選項一起傳遞。假設版本1.7.1的AWS SDK的命令會再像:

hadoop jar /usr/lib/hadoop/lib/s3distcp.jar \ 
    -libjars aws-java-sdk-1.7.1/lib/aws-java-sdk-1.7.1.jar \ 
    --src hdfs://NN:8020/path/to/destination/folder \ 
    --dest s3n://acceseKeyId:[email protected]/destination/ 

參考文獻:

0

有同樣的問題。解決的辦法是從s3n改爲s3a。

# change from this 
--dest s3n://acceseKeyId:[email protected]/destination/ 
# to this 
--dest s3a://acceseKeyId:[email protected]/destination/ 

也見這裏:S3 Support in Apache Hadoop

S3已被棄用S3N不能維持這樣使用S3A前進。

S3A是推薦S3客戶端的Hadoop 2.7及更高版本

繼承了S3本地,S3N://文件系統,該器S3a:系統採用 亞馬遜的圖書館與S3交互。這允許S3a支持更大的文件(不超過5GB限制),更高的性能操作和更多 。該文件系統旨在替代或繼承 S3 Native:從s3n:// URL訪問的所有對象也應該是 ,只需通過替換URL模式即可從s3a訪問。

Unmainteained:S3N文件系統(URI方案:S3N://)

S3N是S3客戶端的Hadoop 2.6和更早版本。從Hadoop的2.7+, 開關S3A

一個本地文件系統進行讀取和S3.With 這個文件系統寫一般的文件是,你可以對用其他工具編寫 S3訪問文件。相反,其他工具可以使用Hadoop訪問編寫爲 的文件。 S3N代碼是穩定和廣泛使用的,但並不是 添加任何新功能(這就是爲什麼它保持穩定)。

S3N要求類路徑上的jets3t JAR兼容版本。

由於Hadoop 2.6,S3集成的所有工作都與S3A一起工作。 S3N是 除了安全風險外,沒有維護 - 這有助於保證 的安全。針對S3N的大多數錯誤報告都將作爲WONTFIX和 關閉「使用S3A」文本。如果可以的話,請切換到S3A,並在提交針對S3N的錯誤報告之前嘗試使用 。

(已棄用)S3塊的文件系統(URI方案:S3://)