Я настроил кластер Hadoop, содержащий 5 узлов на Amazon EC2. Теперь, когда я вхожу в мастер-узел и отправляю следующую команду
bin/hadoop jar <program>.jar <arg1> <arg2> <path/to/input/file/on/S3>
Выдает следующие ошибки (не одновременно). Первая ошибка выдается, когда я не заменяю косые черты на «% 2F», а вторая выдается, когда я заменяю их на «% 2F»: 1004 *
1) Java.lang.IllegalArgumentException: Invalid hostname in URI S3://<ID>:<SECRETKEY>@<BUCKET>/<path-to-inputfile>
2) org.apache.hadoop.fs.S3.S3Exception: org.jets3t.service.S3ServiceException: S3 PUT failed for '/' XML Error Message: The request signature we calculated does not match the signature you provided. check your key and signing method.
Примечание:
1) когда я отправил jps, чтобы увидеть, какие задачи выполнялись на Master, он просто показал
1116 NameNode
1699 Jps
1180 JobTracker
оставляя DataNode и TaskTracker.
2) Мой секретный ключ содержит два символа «/» (косая черта). И я заменяю их на «% 2F» в S3 URI.
PS: Программа отлично работает на EC2 при запуске на одном узле. Только когда я запускаю кластер, я сталкиваюсь с проблемами, связанными с копированием данных в / из S3 из / в HDFS. И что делает distcp? Нужно ли распространять данные даже после того, как я скопирую данные из S3 в HDFS? (Я думал, HDFS позаботился об этом внутри)
ЕСЛИ вы могли бы направить меня по ссылке, объясняющей запуск программ Map / Reduce в кластере hadoop с использованием Amazon EC2 / S3. Это было бы здорово.
С уважением,
Дипак.