我想从hadoop上传一些文件到AWS桶中。我有 AWS ACCESS KEY,SECRET KEY和S3 IMPORT PATH。
我无法通过AWS CLI命令访问。 我将密钥设置在AWS凭证文件中。 我尝试做“ aws s3 ls” 我收到
错误An error occurred (InvalidToken) when calling the ListBuckets operation: The provided token is malformed or otherwise invalid.
由于上述代码无效,因此我尝试使用distcp命令,如下所示。
hadoop distcp -Dmapreduce.job.queuename=root.mr.sbg.sla -Dfs.s3a.proxy.host=qypprdproxy02.ie.xxx.net -Dfs.s3a.proxy.port=80 -Dfs.s3a.endpoint=s3.us-west-2.amazonaws.com -Dfs.s3a.aws.credentials.provider="org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider" -Dfs.s3a.access.key="AXXXXXXXXXXQ" -Dfs.s3a.secret.key="4I9nXXXXXXXXXXXXHA" -Dfs.s3a.session.token="FQoDYXdzECkaDNBtHNfS5sKxXqNdMyKeAuqLbVXG72KvcPmUtnpLGbM7UE59zjvNNo0u8mWlslCEvZcZLxXw1agAInzGH8vnGleqxjzuBBgXMXXXXXXXG0zpHA8eyrwCZqUBXSg9cdqevv1sFT8lUIEi5uTGLjHXgkQoBXXXXXXXXXXXXXXt80Rp4vb3P7k5N2AVZmuVvM/SEH/qMLiFabDbVliGXqw7MHXTXXXXXXXXXXXXXXXtW8JvmOFPR3nGdQ4VKzw0deSbNmL/BCivfh9pf7ubm5RFRSLxqcdoT7XAXIWf1jJguEGygcBkFRh2Ztvr8OYcG78hLEJX61ssbKWXokOKTBMnUxx4b0jIG1isXerDaO6RRVJdBrTXn2Somzigo4ZbL0wU=" TXXXX/Data/LiXXXXL/HS/ABC/part-1517397360173-r-00000 s3a://data-import-dev/1012018.csv
对于上述命令,我也收到以下错误消息。
18/11/09 00:55:40信息http.AmazonHttpClient:配置代理。代理 主机:qypprdproxy02.ie.XXXX.net代理端口:80 18/11/09 00:55:40 WARN s3a.S3AFileSystem:客户端:Amazon S3错误400:400错误的请求;坏 请求(可重试)
com.cloudera.com.amazonaws.services.s3.model.AmazonS3Exception:错误 请求(服务:Amazon S3;状态代码:400;错误代码:400错误 请求;请求ID:121931CAB75C3BB0),S3扩展请求ID: jn / iTngZS83 + A5U8e2gjQsyArDC68E + r0q / Sll0gkSCn0h5yDaG17TEb9HNSx7o590hmofguJIg = 在 com.cloudera.com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1182) 在 com.cloudera.com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:770) 在 com.cloudera.com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:489) 在 com.cloudera.com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:310) 在 com.cloudera.com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3785) 在 com.cloudera.com.amazonaws.services.s3.AmazonS3Client.headBucket(AmazonS3Client.java:1107) 在 com.cloudera.com.amazonaws.services.s3.AmazonS3Client.doesBucketExist(AmazonS3Client.java:1070) 在 org.apache.hadoop.fs.s3a.S3AFileSystem.verifyBucketExists(S3AFileSystem.java:312) 在 org.apache.hadoop.fs.s3a.S3AFileSystem.initialize(S3AFileSystem.java:260) 在 org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2815) 在org.apache.hadoop.fs.FileSystem.access $ 200(FileSystem.java:98)在 org.apache.hadoop.fs.FileSystem $ Cache.getInternal(FileSystem.java:2852) 在org.apache.hadoop.fs.FileSystem $ Cache.get(FileSystem.java:2834) 在org.apache.hadoop.fs.FileSystem.get(FileSystem.java:387)处 org.apache.hadoop.fs.Path.getFileSystem(Path.java:296)在 org.apache.hadoop.tools.DistCp.setTargetPathExists(DistCp.java:205) 在org.apache.hadoop.tools.DistCp.run(DistCp.java:131)处 org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)在 org.apache.hadoop.tools.DistCp.main(DistCp.java:441)18/11/09 00:55:40 错误tools.DistCp:无效的参数: org.apache.hadoop.fs.s3a.AWSS3IOException:didBucketExist存在于 segmentor-data-import-dev: com.cloudera.com.amazonaws.services.s3.model.AmazonS3Exception:错误 请求(服务:Amazon S3;状态代码:400;错误代码:400错误 请求;请求ID:121931CAB75C3BB0),S3扩展请求ID: jn / iTngZS83 + A5U8e2gjQsyArDC68E + r0q / Sll0gkSCn0h5yDaG17TEb9HNSx7o590hmofguJIg =: 错误的请求(服务:Amazon S3;状态代码:400;错误代码:400错误 请求;请求ID:121931CAB75C3BB0) org.apache.hadoop.fs.s3a.S3AUtils.translateException(S3AUtils.java:178) 在 org.apache.hadoop.fs.s3a.S3AFileSystem.verifyBucketExists(S3AFileSystem.java:318) 在 org.apache.hadoop.fs.s3a.S3AFileSystem.initialize(S3AFileSystem.java:260) 在 org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2815) 在org.apache.hadoop.fs.FileSystem.access $ 200(FileSystem.java:98)在 org.apache.hadoop.fs.FileSystem $ Cache.getInternal(FileSystem.java:2852) 在org.apache.hadoop.fs.FileSystem $ Cache.get(FileSystem.java:2834) 在org.apache.hadoop.fs.FileSystem.get(FileSystem.java:387)处 org.apache.hadoop.fs.Path.getFileSystem(Path.java:296)在 org.apache.hadoop.tools.DistCp.setTargetPathExists(DistCp.java:205) 在org.apache.hadoop.tools.DistCp.run(DistCp.java:131)处 org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)在 org.apache.hadoop.tools.DistCp.main(DistCp.java:441)由以下原因引起: com.cloudera.com.amazonaws.services.s3.model.AmazonS3Exception:错误 请求(服务:Amazon S3;状态代码:400;错误代码:400错误 请求;请求ID:121931CAB75C3BB0),S3扩展请求ID: jn / iTngZS83 + A5U8e2gjQsyArDC68E + r0q / Sll0gkSCn0h5yDaG17TEb9HNSx7o590hmofguJIg = 在 com.cloudera.com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1182) 在 com.cloudera.com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:770) 在 com.cloudera.com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:489) 在 com.cloudera.com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:310) 在 com.cloudera.com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3785) 在 com.cloudera.com.amazonaws.services.s3.AmazonS3Client.headBucket(AmazonS3Client.java:1107) 在 com.cloudera.com.amazonaws.services.s3.AmazonS3Client.doesBucketExist(AmazonS3Client.java:1070) 在 org.apache.hadoop.fs.s3a.S3AFileSystem.verifyBucketExists(S3AFileSystem.java:312) ... 11更多无效的参数:didBucketExist于 segmentor-data-import-dev: com.cloudera.com.amazonaws.services.s3.model.AmazonS3Exception:错误 请求(服务:Amazon S3;状态代码:400;错误代码:400错误 请求;请求ID:121931CAB75C3BB0),S3扩展请求ID: jn / iTngZS83 + A5U8e2gjQsyArDC68E + r0q / Sll0gkSCn0h5yDaG17TEb9HNSx7o590hmofguJIg =: 错误的请求(服务:Amazon S3;状态代码:400;错误代码:400错误 请求;请求ID:121931CAB75C3BB0)用法:distcp选项 [source_path ...] 选项-append重用目标文件中的现有数据,并 如果可能,向其添加新数据-async应该阻止distcp执行-atomic提交所有更改或不提交-bandwidth以MB为单位指定每个映射的带宽-delete
从目标中删除,源-diff
中缺少的文件 使用快照差异报告来确定 源和目标之间的差异-f需要复制的文件列表-filelimit(不建议使用!)限制复制的文件数 到<= n -filters包含列表的文件的路径 从中排除的路径字符串 复制。 -i忽略复制期间的失败-log文件夹位于 distcp执行日志所在的DFS 保存-m用于的最大并发映射数 复制ssl配置文件的-mapredSslConf配置,以使用 与hftps://。必须在类路径中。 -numListstatusThreads要用于的线程数 建筑文件 列表(最多40个)。 -overwrite选择覆盖目标文件 即使它们存在也无条件。 -p保留状态(rbugpcaxt)(复制, 块大小,用户,组,权限, 校验和类型,ACL,XATTR,时间戳)。如果 -p指定为no,然后 保留复制,块大小,用户, 组,权限,校验和类型和 时间戳记。 raw。* xattrs在以下情况下保留 源路径和目标路径都是 在/.reserved/raw层次结构(HDFS 只要)。 raw。* xattrpreservation是 独立于-p标志。请参阅 有关更多详细信息,请参见DistCp文档。 -rdiff使用目标快照差异报告来识别 对目标-sizelimit进行的更改(不建议使用!)限制复制的文件数 到<= n个字节-skipcrccheck是否在源之间跳过CRC检查 和目标路径。 -strategy复制要使用的策略。默认为除法 基于文件大小的工作-tmp用于的中间工作路径 atomic commit -update更新目标,仅复制缺少的文件或 目录
请让我知道如何实现这一目标。
答案 0 :(得分:1)
我遇到了同样的问题。手动而不是通过“ aws configure”命令修改〜.aws内部的文件时,可能会出现此问题。
您尝试过:
那为我解决了这个问题。
这主要是因为我使用了其他工具来修改这些文件。
希望对您有帮助。