Проблема с копированием локальных данных на HDFS на кластере Hadoop использование Amazon EC2/S3

Я имею, устанавливают кластер Hadoop, содержащий 5 узлов на Amazon EC2. Теперь, когда я вхожу в систему в Главный узел и отправляю следующую команду

bin/hadoop jar <program>.jar <arg1> <arg2> <path/to/input/file/on/S3>

Это бросает следующие ошибки (не одновременно.) Первая ошибка брошена, когда я не заменяю наклонные черты '%2F', и второе брошено, когда я заменяю их '%2F':

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 для наблюдения, какие задачи работали на Ведущем устройстве, он просто показал

1116 NameNode
1699 Jps
1180 JobTracker

отъезд DataNode и TaskTracker.

2) Мой Секретный ключ содержит два '/' (наклонные черты вправо). И я заменяю их '%2F' в S3 URI.

PS: прогоны программы, прекрасные на EC2 при выполнении на единственном узле. Его единственное, когда я запускаю кластер, я сталкиваюсь с проблемами, связанными с копированием данных к/от S3 из/в HDFS. И, что делает distcp? Я должен распределить данные даже после того, как я скопирую данные от S3 до HDFS? (Я думал, HDFS заботился об этом внутренне),

ЕСЛИ Вы могли бы направить меня к ссылке, которая объясняет, что выполнение Отображает/уменьшает программы на hadoop кластере с помощью Amazon EC2/S3. Это было бы большим.

С уважением,

Deepak.

8
задан Deepak 9 June 2010 в 21:02
поделиться

2 ответа

Вы, вероятно, хотите использовать s3n://, а не s3://. s3n:// означает "Обычный файл, доступный для чтения из внешнего мира, по этому S3 url". s3:// относится к файловой системе HDFS, отображенной на S3 bucket.

Чтобы избежать проблемы с экранированием URL для ключа доступа (и сделать жизнь намного проще), поместите их в файл /etc/hadoop/conf/core-site.xml:

<property>
  <name>fs.s3.awsAccessKeyId</name>
  <value>0123458712355</value>
</property>
<property>
  <name>fs.s3.awsSecretAccessKey</name>
  <value>hi/momasgasfglskfghaslkfjg</value>
</property>
<property>
  <name>fs.s3n.awsAccessKeyId</name>
  <value>0123458712355</value>
</property>
<property>
  <name>fs.s3n.awsSecretAccessKey</name>
  <value>hi/momasgasfglskfghaslkfjg</value>
</property>

Одно время существовала нерешенная проблема с секретными ключами, содержащими косую черту - URL расшифровывался в некоторых контекстах, но не в других. Я не знаю, было ли это исправлено, но я знаю, что с ключами в .conf это исчезло.

Другие советы:

  • Вы можете быстрее всего отладить вашу проблему, используя команды файловой системы hadoop, которые отлично работают с s3n:// (и s3://) урлами. Попробуйте hadoop fs -cp s3n://myhappybucket/ или hadoop fs -cp s3n://myhappybucket/happyfile. txt /tmp/dest1 и даже hadoop fs -cp /tmp/some_hdfs_file s3n://myhappybucket/will_be_put_into_s3
  • Команда distcp запускает команду только для маппера, чтобы скопировать дерево оттуда сюда. Используйте ее, если вам нужно скопировать очень большое количество файлов в HDFS. (Для повседневного использования, hadoop fs -cp src dest работает просто отлично).
  • Вам не обязательно перемещать данные в HDFS, если вы не хотите. Вы можете взять все исходные данные прямо из s3, а все дальнейшие манипуляции проводить либо с HDFS, либо с S3 по своему усмотрению.
  • Hadoop может запутаться, если есть файл s3n://myhappybucket/foo/bar и "каталог" (множество файлов с ключами s3n://myhappybucket/foo/bar/something). Некоторые старые версии команды s3sync оставляли в дереве S3 именно такие 38-байтовые куски.
  • Если вы начнете видеть SocketTimeoutException, примените патч для HADOOP-6254. Мы были, и мы сделали, и они исчезли.
21
ответ дан 5 December 2019 в 05:55
поделиться

Попробуйте использовать Amazon Elastic MapReduce. Это устраняет необходимость в настройке узлов hadoop, и вы можете просто получить доступ к объектам в своей учетной записи s3 так, как вы ожидаете.

3
ответ дан 5 December 2019 в 05:55
поделиться