来自s3的hadoop distcp副本:签名不匹配错误

anauzrmj  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(345)

我正在尝试将一个文件从s3复制到amazonec2上的hadoop hdfs。
我使用的命令是:

bin/hadoop distcp s3://<awsAccessKeyId>:<awsSecretAccessKey>@<bucket_name>/f1 hdfs://user/root/

f1是文件名
我也把它改成了s3n,看看它是否工作,但它没有。
我将密钥中的正斜杠替换为%2f
我得到的错误是:signaturedesnotmatch

org.jets3t.service.S3ServiceException: S3 GET failed for '/%2Ff1'

<Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message>

<StringToSignBytes>...</StringToSignBytes>

<RequestId>...</RequestId>

<HostId>..</HostId>

<SignatureProvided>NsefW5en6P728cc9llkFIk6yGc4=\
    </SignatureProvided>

<StringToSign>GETMon, 05 Aug 2013 15:28:21 GMT/<bucket_name>/%2Ff1</StringToSign>

<AWSAccessKeyId><MY_ACCESS_ID><\ /AWSAccessKeyId></Error>

我只有一个aws访问密钥id和密钥。我检查了我的aws帐户,它们是一样的。我使用相同的aws访问密钥和密钥登录到ec2集群。我也尝试过使用core-site.xml,但也没有用。
谢谢,拉吉夫

cigdeys3

cigdeys31#

重新生成对我有效的密钥的另一种方法是在运行distcp时使用-dfs.s3n.awsaccesskeyid=-dfs.s3n.awssecretaccesskey=flags。
示例:hadoop distcp-dfs.s3n.awsaccesskeyid=-dfs.s3n.awssecretaccesskey=s3n://path/to/log/dirhdfs://hdfs-node:8020/日志/
注意s3n的使用,它有5gb的文件限制:amazons3和hadoop中的s3n之间的区别
编辑:不要对秘密访问密钥进行url编码,所以斜杠“/”和加号“+”应该按原样传递!

n9vozmp4

n9vozmp42#

重新生成我的aws密钥和秘密,这样我的秘密中就没有正斜杠了。裁判:https://issues.apache.org/jira/browse/hadoop-3733

相关问题