На вики-странице Hadoop есть старое руководство: http://wiki.apache.org/hadoop/AmazonEC2 , но недавно мне пришлось следовать этому руководству, и я заметил, что оно не охватывает некоторые новые функции Amazon.
Чтобы следовать этому руководству, рекомендуется, чтобы вы уже были знакомы с основами Hadoop, очень полезное руководство «как начать» можно найти на домашней странице Hadoop: http://hadoop.apache.org/ . Кроме того, вы должны быть знакомы, по крайней мере, с внутренними компонентами Amazon EC2 и определениями экземпляров.
Когда вы регистрируете учетную запись на Amazon AWS, вы получаете 750 часов для запуска
t1.micro , но, к сожалению, вы не можете успешно запустить Hadoop на таких машинах.
На следующих шагах команда, начинающаяся с $, означает, что она должна быть выполнена на локальном компьютере, а с # — в экземпляре EC2.
Создайте сертификат X.509
Поскольку мы собираемся использовать инструменты ec2, нашей учетной записи в AWS требуется действующий сертификат X.509:
- Создайте папку .ec2:
1
|
$ mkdir ~/.ec2 |
- Войдите в систему на AWS
- Выберите «Учетные данные безопасности» и в «Учетные данные доступа» нажмите «Сертификаты X.509»;
- У вас есть два варианта:
- Создайте сертификат с помощью командной строки:
1
|
$ cd ~/.ec2; openssl genrsa -des3 -out my-pk.pem 2048 |
1
|
$ openssl rsa -in my-pk.pem -out my-pk-unencrypt.pem |
1
|
$ openssl req - new -x509 -key my-pk.pem -out my-cert.pem -days 1095 |
- Это работает только в том случае, если дата вашей машины в порядке.
- Создайте сертификат на сайте и загрузите закрытый ключ (не забудьте указать его в ~ / .ec2).
Настройка Amazon EC2-Tools
- Скачать и распаковать ec2-инструменты;
- Отредактируйте ваш ~ / .profile, чтобы экспортировать все переменные, необходимые для ec2-tools, чтобы вам не приходилось делать это каждый раз, когда вы открываете приглашение:
- Вот пример того, что должно быть добавлено в файл ~ / .profile:
- экспорт JAVA_HOME = / usr / lib / jvm / java-6-sun
- экспорт EC2_HOME = ~ / ec2-api-tools- *
- экспорт PATH = $ PATH: $ EC2_HOME / bin
- экспорт EC2_CERT = ~ / .ec2 / my-cert.pem
- Чтобы получить доступ к экземпляру, вам необходимо пройти аутентификацию (очевидные причины безопасности), таким образом, вы должны создать пару ключей (открытый и закрытый ключи):
- На https://console.aws.amazon.com/ec2/home нажмите «Пары ключей» или
- Вы можете запустить следующие команды:
- Вот пример того, что должно быть добавлено в файл ~ / .profile:
1
|
$ ec2-add-keypair my-keypair | grep –v KEYPAIR > ~/.ec2/id_rsa-keypair |
1
|
$ chmod 600 ~/.ec2/id_rsa-keypair |
Настройка Hadoop
После загрузки и распаковки Hadoop вы должны отредактировать скрипт конфигурации EC2, который находится по адресу src / contrib / ec2 / bin / hadoop-ec2-env.sh.
- Переменные AWS
- Эти переменные связаны с вашей учетной записью AWS (AWS_ACCOUNT_ID, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY), их можно найти при входе в вашу учетную запись, в учетных данных безопасности;
- AWS_ACCOUNT_ID — это ваш 12-значный номер счета.
- Эти переменные связаны с вашей учетной записью AWS (AWS_ACCOUNT_ID, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY), их можно найти при входе в вашу учетную запись, в учетных данных безопасности;
- Переменные безопасности
- Переменные безопасности (EC2_KEYDIR, KEY_NAME, PRIVATE_KEY_PATH) — это переменные, связанные с запуском и доступом к экземпляру EC2;
- Вы должны сохранить закрытый ключ в свой путь EC2_KEYDIR.
- Выберите AMI
- В зависимости от версии Hadoop, которую вы хотите запустить (HADOOP_VERSION), и типа экземпляра (INSTANCE_TYPE), вы должны использовать правильный образ для развертывания вашего экземпляра:
- Есть много общедоступных изображений AMI, которые вы можете использовать (они должны соответствовать потребностям большинства пользователей), перечислить, набрать
1
|
$ ec2-describe-images -x all | grep hadoop |
- Или вы можете создать свой собственный образ и загрузить его в корзину Amazon S3;
- После выбора AMI, который вы будете использовать, в hadoop-ec2-env.sh нужно изменить три переменные:
- S3_BUCKET: область, в которой находится изображение, которое вы будете использовать, например, hadoop-images,
- ARCH: архитектура выбранного вами изображения AMI (i386 или x84_64) и
- BASE_AMI_IMAGE: уникальный код, который отображает изображение AMI, пример ami-2b5fba42.
- Другой настраиваемой переменной является JAVA_VERSION, там вы можете определить, какая версия будет установлена вместе с экземпляром:
- Вы также можете указать ссылку, где будет расположен бинарный файл (JAVA_BINARY_URL), например, если у вас JAVA_VERSION = 1.6.0_29, можно использовать JAVA_BINARY_URL = http: //download.oracle.com/otn-pub/java/ JDK / 6u29-b11 / JDK-6u29-линукс-i586.bin.
Бег!
- Вы можете добавить содержимое src / contrib / ec2 / bin в переменную PATH, чтобы вы могли запускать команды независимо от того, где открыта подсказка;
- Чтобы запустить кластер EC2 и запустить Hadoop, используйте следующую команду. Аргументами являются имя кластера (hadoop-test) и количество ведомых (2). Когда кластер загрузится, общедоступное DNS-имя будет напечатано на консоли.
1
|
$ hadoop-ec2 launch-cluster hadoop-test 2 |
- Чтобы войти на мастер-узел из вашего «кластера», введите:
1
|
$ hadoop-ec2 login hadoop-test |
- Когда вы войдете в мастер-узел, вы сможете начать работу:
- Например, чтобы протестировать ваш кластер, вы можете запустить вычисление числа pi, которое уже предоставлено hadoop * -examples.jar:
1
|
# cd /usr/local/hadoop-* |
1
|
# bin/hadoop jar hadoop-*-examples.jar pi 10 10000000 |
- Вы можете проверить прогресс своей работы на http: // MASTER_HOST: 50030 /. Где MASTER_HOST — имя хоста, возвращаемое после запуска кластера.
- После того, как ваша работа закончена, кластер остается живым. Для выключения вы используете следующую команду:
1
|
$ hadoop-ec2 terminate-cluster hadoop-test |
- Помните, что в Amazon EC2 экземпляры взимаются за час, поэтому, если вы хотите провести тесты, вы можете поиграть с кластером еще несколько минут.
Ссылка: Hadoop + Amazon EC2 — обновленное руководство от нашего партнера по JCG Родриго Дуарте в блоге Thinking Bigger .