Я не могу заставить Hadoop начать использовать Amazon EC2 / S3 - PullRequest
1 голос
/ 04 ноября 2010

Я создал образ AMI и установил Hadoop из сборки Cloudera CDH2.Я настроил свой core-site.xml следующим образом:

<property>
   <name>fs.default.name</name>
   <value>s3://<BUCKET NAME>/</value>
 </property>
 <property>
    <name>fs.s3.awsAccessKeyId</name>
    <value><ACCESS ID></value>
 </property>
 <property>
    <name>fs.s3.awsSecretAccessKey</name>
    <value><SECRET KEY></value>
 </property>
 <property>
    <name>hadoop.tmp.dir</name>
    <value>/var/lib/hadoop-0.20/cache/${user.name}</value>
 </property>

Но при запуске демонов hadoop в журнале namenode появляется следующее сообщение:

2010-11-03 23:45:21,680 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode:      java.lang.IllegalArgumentException: Invalid URI for NameNode address (check     fs.default.name): s3://<BUCKET NAME>/ is not of scheme 'hdfs'.
    at org.apache.hadoop.hdfs.server.namenode.NameNode.getAddress(NameNode.java:177)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:198)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:306)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1006)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1015)

2010-11-03 23:45:21,691 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: SHUTDOWN_MSG:

ОднакоЯ могу выполнять команды hadoop из командной строки следующим образом:

hadoop fs -put sun-javadb-common-10.5.3-0.2.i386.rpm s3://<BUCKET NAME>/

 hadoop fs -ls s3://poc-jwt-ci/
Found 3 items
drwxrwxrwx   -          0 1970-01-01 00:00 /
-rwxrwxrwx   1      16307 1970-01-01 00:00 /sun-javadb-common-10.5.3-0.2.i386.rpm
drwxrwxrwx   -          0 1970-01-01 00:00 /var

Вы заметите, что в корзине есть папки / и /var.Я запустил формат hadoop namenode -format, когда впервые увидел эту ошибку, затем перезапустил все службы, но все равно получил странный Invalid URI for NameNode address (check fs.default.name): s3://<BUCKET NAME>/ is not of scheme 'hdfs'.

. Я также заметил, что созданная файловая система выглядит так:*

Есть идеи о том, что происходит?

Ответы [ 5 ]

3 голосов
/ 05 ноября 2010

Сначала я предлагаю вам использовать Amazon Elastic MapReduce.С вашей стороны не требуется никаких настроек.EMR также имеет несколько внутренних оптимизаций и мониторинга, которые работают в вашу пользу.

Во-вторых, не используйте s3: в качестве FS по умолчанию.Во-первых, s3 слишком медленный, чтобы использовать его для хранения промежуточных данных между заданиями (типичная единица работы в hadoop - это от десятка до десятков заданий MR).он также хранит данные в «проприетарном» формате (блоки и т. д.).Поэтому внешние приложения не могут эффективно касаться данных в s3.

Обратите внимание, что s3: в EMR - это не то же самое, что s3: в стандартном дистрибутиве hadoop.Амазонки, ребята, на самом деле псевдоним s3: as s3n: (s3n: просто raw / native s3 access).

1 голос
/ 26 июля 2012

Я думаю, вы не должны выполнять bin/hadoop namenode -format, потому что он используется для форматирования hdfs. В более поздней версии hadoop перенес эти функции в отдельный файл сценариев, который называется «bin / hdfs». После установки параметров конфигурации в core-site.xml и других файлах конфигурации вы можете напрямую использовать S3 в качестве базовой файловой системы.

1 голос
/ 10 июня 2011

Вы также можете использовать Apache Whirr для этого рабочего процесса, например:

  1. Начните с загрузки последней версии (на данный момент версии 0.7.0) с http://www.apache.org/dyn/closer.cgi/whirr/

  2. Распакуйте архив и попробуйте запустить ./bin/whirr version. Для этого вам нужно установить Java.

  3. Сделайте свои учетные данные Amazon AWS доступными в качестве переменных среды:

    export AWS_ACCESS_KEY_ID=... 
    export AWS_SECRET_ACCESS_KEY=...
  4. Обновите конфигурацию Hadoop EC2 в соответствии с вашими потребностями, отредактировав recipes/hadoop-ec2.properties. Проверьте Руководство по конфигурации для получения дополнительной информации.

  5. Запустите кластерный Hadoop, выполнив:

    ./bin/whirr launch-cluster --config recipes/hadoop-ec2.properties
  6. Чтобы просмотреть подробный вывод журнала, выполните команду tail -f whirr.log

  7. Теперь вы можете войти в свой кластер и выполнять свою работу.

    ./bin/whirr list-cluster --config recipes/hadoop-ec2.properties
    ssh namenode-ip
    start jobs as needed or copy data from / to S3 using distcp
    

Для получения более подробной информации вы должны прочитать Краткое руководство по началу работы и 5-минутное руководство

Отказ от ответственности: я один из коммиттеров.

0 голосов
/ 17 февраля 2015

Используйте s3n вместо s3.

hadoop fs -ls s3n://<BUCKET NAME>/etc
0 голосов
/ 15 июня 2014

Использование

fs.defaultFS = s3n: // awsAccessKeyId: awsSecretAccessKey @ BucketName в вашем /etc/hadoop/conf/core-site.xml

Тогда не запускайте свою датододу или наменод, если у вас есть сервисы, которые нуждаются в ваших датоде и наменоде, это не сработает ..

Я сделал это и могу получить доступ к своему ведру, используя такие команды, как sudo hdfs dfs -ls /

Обратите внимание, что если у вас есть awsSecretAccessKey с символом "/", то вам придется url кодировать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...