2017-04-21 3 views
0

EMR 단계를 사용하여 S3에서 HDFS로 파일을 복사하는 EMR 클러스터를 생성했으며 s3-dist-cp를 사용하여 그 반대의 경우도 마찬가지입니다. 이 클러스터는 주문형 클러스터이므로 IP를 추적하지 않습니다.EMR에서 런타임시 HDFS 경로를 유추

첫 번째 EMR 단계는 다음과 같습니다. hadoop fs -mkdir /input -이 단계가 성공적으로 완료되었습니다. 다음은 내가 사용하고있는 명령입니다 :

두 번째 EMR 단계는

s3-dist-cp --s3Endpoint=s3.amazonaws.com --src=s3://<bucket-name>/<folder-name>/sample.txt --dest=hdfs:///input -

를 실패이 단계 나는 다음과 같은 예외 오류 얻을 :

Error: java.lang.IllegalArgumentException: java.net.UnknownHostException: sample.txt at org.apache.hadoop.security.SecurityUtil.buildTokenService(SecurityUtil.java:378) at org.apache.hadoop.hdfs.NameNodeProxies.createNonHAProxy(NameNodeProxies.java:310) at org.apache.hadoop.hdfs.NameNodeProxies.createProxy(NameNodeProxies.java:176) at org.apache.hadoop.hdfs.DFSClient.(DFSClient.java:678) at org.apache.hadoop.hdfs.DFSClient.(DFSClient.java:619) at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:149) at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2717) at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:93) at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2751) at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2733) at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:377) at org.apache.hadoop.fs.Path.getFileSystem(Path.java:295) at com.amazon.elasticmapreduce.s3distcp.CopyFilesReducer.reduce(CopyFilesReducer.java:213) at com.amazon.elasticmapreduce.s3distcp.CopyFilesReducer.reduce(CopyFilesReducer.java:28) at org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:171) at org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:635) at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:390) at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1698) at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158) Caused by: java.net.UnknownHostException: sample.txt

을하지만이 파일은 않습니다 S3에 존재하며 EMR의 스파크 애플리케이션을 통해 읽을 수 있습니다.

+0

왜 EMRFS를 사용하지 않고 직접 HDFS S3 마운트 포인트를 볼 수 있습니까? 이 오류는 종종 지역에 의해 발생할 수 있습니다. – Henry

+0

s3EndPoint 인수없이 명령을 실행 해 볼 수 있습니까? 계정에 지정된 값이 있으면 끝점을 통해 전송됩니다. 그것도 작동하지 않으면 hadoop distcp를 한 번 사용해보십시오. – Chirag

+0

@Chirag : 우리는 그것을 시도하고 그것은 작동하지 않았다. – sashmi

답변

1

해결 방법은 s3-dist-cp를 사용하는 동안 소스 및 대상 모두에서 파일 이름을 언급해서는 안됩니다. 당신의 src 디렉토리에있는 파일을 필터링하려면, 당신은 --srcPattern 옵션을 사용할 수 있습니다

예 : S3 - 거리-CP --s3Endpoint = s3.amazonaws.com --src = S3 : // // --dest = hdfs : /// input/--srcPattern = sample.txt *

관련 문제