【发布时间】:2017-04-21 17:34:38
【问题描述】:
我已经使用 s3-dist-cp 将文件从 S3 复制到 HDFS 和反之亦然的 EMR 步骤生成了一个 EMR 集群。 该集群是按需集群,因此我们不会跟踪 IP。
第一个 EMR 步骤是:
hadoop fs -mkdir /input - 此步骤已成功完成。
第二个 EMR 步骤是: 以下是我正在使用的命令:
s3-dist-cp --s3Endpoint=s3.amazonaws.com --src=s3://<bucket-name>/<folder-name>/sample.txt --dest=hdfs:///input - 这一步失败
我得到以下异常错误:
错误:java.lang.IllegalArgumentException:java.net.UnknownHostException:sample.txt 在 org.apache.hadoop.security.SecurityUtil.buildTokenService(SecurityUtil.java:378) 在 org.apache.hadoop.hdfs.NameNodeProxies.createNonHAProxy(NameNodeProxies.java:310) 在 org.apache.hadoop.hdfs.NameNodeProxies.createProxy(NameNodeProxies.java:176) 在 org.apache.hadoop.hdfs.DFSClient.(DFSClient.java:678) 在 org.apache.hadoop.hdfs.DFSClient.(DFSClient.java:619) 在 org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:149) 在 org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2717) 在 org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:93) 在 org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2751) 在 org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2733) 在 org.apache.hadoop.fs.FileSystem.get(FileSystem.java:377) 在 org.apache.hadoop.fs.Path.getFileSystem(Path.java:295) 在 com.amazon.elasticmapreduce.s3distcp.CopyFilesReducer.reduce(CopyFilesReducer.java:213) 在 com.amazon.elasticmapreduce.s3distcp.CopyFilesReducer.reduce(CopyFilesReducer.java:28) 在 org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:171) 在 org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:635) 在 org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:390) 在 org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164) 在 java.security.AccessController.doPrivileged(本机方法) 在 javax.security.auth.Subject.doAs(Subject.java:422) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1698) 在 org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158) 引起:java.net.UnknownHostException: sample.txt
但这个文件确实存在于 S3 上,我可以通过 EMR 上的 spark 应用程序读取它。
【问题讨论】:
-
为什么不直接使用 EMRFS 并查看 HDFS S3 直接挂载点?通常这样的错误可能是由地区引起的。
-
您可以尝试不带 s3EndPoint 参数运行命令吗,如果帐户中指定了端点,则传输总是通过端点进行。如果这也不起作用,请尝试使用 hadoop distcp 一次。
-
@Chirag :我们试过了,但没用。
标签: amazon-web-services amazon-emr s3distcp