2013-08-05 4 views
1

Я пытаюсь скопировать файл с S3 на мой HDO HD на Amazon EC2.Hadoop distcp copy from S3: Подпись не соответствует ошибке

Команда, я использую это:

bin/hadoop distcp s3://<awsAccessKeyId>:<awsSecretAccessKey>@<bucket_name>/f1 hdfs://user/root/ 
  • f1 это имя файла
  • Я также изменил его S3N, чтобы увидеть, если он работает, но это не так.
  • я заменяю слэш в моем секретном ключе доступа с помощью% 2F

Ошибки, что я получаю это: SignatureDoesNotMatch

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 Access Key Id и секретный ключ. Я проверил свою учетную запись AWS, и они такие же. Я использую тот же ключ доступа AWS и секретный ключ для входа в мой кластер EC2. Я также пробовал использовать core-site.xml, но это тоже не помогло.

Спасибо, Раджив

+0

Я также нашел, что вам понадобится ваш s3-url для начала с s3n вместо s3 – viper

+0

это сработало для меня: http://stackoverflow.com/questions/14681938/invalid-hostname-error-when-connecting-to- s3-sink-when-using-secret-key-having-f – Roshini

ответ

1

Восстанавливающие мой AWS ключ и Секретный таким образом, что нет прямого слэша в моей тайне работала для меня. Ref: https://issues.apache.org/jira/browse/HADOOP-3733

+0

К сожалению, знак плюса все равно вызовет сбой интерфейса – tribbloid

+0

Я пробовал это, и он по-прежнему дает ту же ошибку, мой новый ключ содержит знак плюса + ', который я не уверен, следует снова избежать – tribbloid

1

Альтернативой восстанавливающий ключ, который работал для меня было использовать -Dfs.s3n.awsAccessKeyId = -Dfs.s3n.awsSecretAccessKey = флаги при работе distcp.

Пример: Hadoop distcp -Dfs.s3n.awsAccessKeyId = -Dfs.s3n.awsSecretAccessKey = S3N: // путь/к/войти/DIR HDFS: // HDFS-узел: 8020/журналы/

Обратите внимание на использование s3n, у которого есть ограничение на 5 ГБ: Difference between Amazon S3 and S3n in Hadoop

Редактировать: Не кодируйте секретный ключ доступа, поэтому слэш «/» и плюсы «+» должны быть переданы так, как они есть!

+0

Последнее решение не будет работать, файловая система hadoop все еще жалуется: java.lang.IllegalArgumentException: Wrong FS – tribbloid

+0

@tribbloid какая точная команда и версия hadoop? – Garren

Смежные вопросы