我想上传几个文件到aws桶从hadoop。我有aws访问密钥,密钥和s3导入路径。
我无法通过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.x.net代理端口:80 18/11/09 00:55:40警告s3a.s3afilesystem:客户端:amazon s3错误400:400错误请求;错误请求(可重试)
com.cloudera.com.amazonaws.services.s3.model.amazons3exception:错误请求(服务:amazons3;状态码:400;错误代码:400错误请求;请求id:121931cab75c3bb0),s3扩展请求id:jn/itngzs83+a5u8e2gjqsqyardc68e+r0q/sll0gkscn0h5ydag17teb9hnsx7o590hmofgujig=at 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.executehelp(amazonhttpclient。java:489)在com.cloudera.com.amazonaws.http.amazonhttpclient.execute(amazonhttpclient。java:310)在com.cloudera.com.amazonaws.services.s3.amazon3client.invoke(amazon3client。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(文件系统)。java:98)在org.apache.hadoop.fs.filesystem$cache.getinternal(filesystem。java:2852)在org.apache.hadoop.fs.filesystem$cache.get(文件系统)。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 error tools.distcp:无效参数:org.apache.hadoop.fs.s3a.awss3ioexception:doesbucketexist on segmentor data import dev:com.cloudera.com.amazonaws.services.s3.model.amazons3exception:错误请求(服务:亚马逊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(文件系统)。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.amazons3异常:错误请求(服务:amazons3;状态码:400;错误代码:400错误请求;请求id:121931cab75c3bb0),s3扩展请求id:jn/itngzs83+a5u8e2gjqsqyardc68e+r0q/sll0gkscn0h5ydag17teb9hnsx7o590hmofgujig=at 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.executehelp(amazonhttpclient。java:489)在com.cloudera.com.amazonaws.http.amazonhttpclient.execute(amazonhttpclient。java:310)在com.cloudera.com.amazonaws.services.s3.amazon3client.invoke(amazon3client。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个以上无效参数:doesbucketexist on segmentor data import dev:com.cloudera.com.amazonaws.services.s3.model.amazon3exception:错误请求(服务:amazon s3;状态码:400;错误代码:400错误请求;请求id:121931cab75c3bb0),s3扩展请求id:jn/itngzs83+a5u8e2gjqsyardc68e+r0q/sll0gkscn0h5ydag17teb9hnsx7o590hmofgujig=:错误请求(服务:amazon s3;状态码:400;错误代码:400错误请求;请求id:121931cab75c3bb0)用法:distcp options[source\u path…]options-追加重用目标文件中的现有数据并在可能的情况下向其追加新数据-异步应阻止distcp执行-原子提交所有更改或无-带宽以mb为单位指定每个Map的带宽-删除
从目标中删除,源中缺少文件-差异
使用snapshot diff report标识源和目标之间的差异-f需要复制的文件列表-filelimit(已弃用!)限制复制到的文件数<=n-筛选指向包含字符串列表的文件的路径,以便从副本中排除路径-我忽略保存distcp执行日志的dfs上的copy-log文件夹期间的失败-m用于复制的最大并发Map数-mapredsslconf配置ssl config文件,用于hftps://. 必须在类路径中-numliststatusthreads用于生成文件列表的线程数(最多40个)-覆盖选择无条件覆盖目标文件,即使它们存在-p保留状态(rbugpcaxt)(复制、块大小、用户、组、权限、校验和类型、acl、xattr、时间戳)。如果用no指定-p,则保留复制、块大小、用户、组、权限、校验和类型和时间戳。当源路径和目标路径都位于/.reserved/raw层次结构(仅限hdfs)中时,将保留raw.*xattrs。raw.*xattrpreservation独立于-p标志。有关更多详细信息,请参阅distcp文档-rdiff使用target snapshot diff报告来标识对target-sizelimit所做的更改(已弃用!)限制复制到<=n字节的文件数-skipcrccheck是否跳过源路径和目标路径之间的crc检查-策略复制要使用的策略。默认值是基于文件大小划分工作-用于原子提交的tmp中间工作路径-更新目标,仅复制丢失的文件或目录
请让我知道如何做到这一点。
1条答案
按热度按时间wgxvkvu91#
我也遇到了同样的问题。当手动而不是通过“aws configure”命令修改~.aws中的文件时,可能会出现此问题。
你试过:
删除“config”和“credentials”文件(位于~.aws)
运行“aws configure”命令(重新创建在#1中删除的文件)
这就解决了我的问题。
这主要是因为我使用其他工具来修改这些文件。
希望对你有帮助。