Статьи

Как настроить многоузловой кластер Hadoop в Amazon EC2, часть 1

Потратив некоторое время на изучение псевдораспределенного кластера с одним узлом, пришло время познакомиться с реальным миром. В зависимости от того, что работает лучше всего. Важно отметить, что для этого есть несколько способов, и я собираюсь рассказать о том, как настроить многоузловой кластер hadoop на Amazon EC2. Мы собираемся настроить кластер hasoop с 4 узлами, как показано ниже.

  • NameNode (Мастер)
  • SecondaryNameNode
  • DataNode (Slave1)
  • DataNode (Slave2)

Вот что тебе понадобится

  1. Аккаунт Amazon AWS
  2. PuTTy  Windows Client (для подключения к экземпляру Amazon EC2)
  3. PuTTYgen (для генерации закрытого ключа — он будет использоваться в putty для подключения к экземпляру EC2)
  4. WinSCP (секретная копия)

Это будет серия из двух частей

В части 1 я расскажу об инфраструктуре, как показано ниже

  1. Настройка инстансов Amazon EC2
  2. Настройка клиентского доступа к инстансам Amazon (с помощью Putty.)
  3. Настройка доступа WinSCP к экземплярам EC2

В части 2 я расскажу об установке многоузлового кластера hadoop

  1. Hadoop Multi-Node Установка и настройка

1. Настройка инстансов Amazon EC2

При использовании 4-х узловых кластеров и минимального размера тома 8 ГБ, в среднем будет взиматься плата в размере 2 долл. США в день во всех 4 запущенных экземплярах. Вы можете остановить экземпляр в любое время, чтобы избежать оплаты, но вы потеряете публичный IP-адрес и хост, и перезапуск экземпляра создаст новые. Вы также можете в любой момент прекратить работу своего экземпляра Amazon EC2, и по умолчанию он удалит ваш экземпляр после завершения, поэтому просто будьте осторожны в своих действиях.

1.1 Получить учетную запись Amazon AWS

Если у вас еще нет учетной записи, создайте новую. У меня уже есть аккаунт AWS, и я собираюсь пропустить процесс регистрации. Amazon EC2 поставляется с подходящими экземплярами бесплатного уровня.

Снимок экрана 2014-01-10 в 1.33.28 вечера

1.2 Запуск экземпляра

После того, как вы зарегистрировали аккаунт Amazon. Войдите в Amazon Web Services, нажмите «Моя учетная запись» и перейдите к консоли Amazon EC2.

Launch_Instance

1.3 Выберите AMI

Я выбираю Ubuntu Server 12.04.3 Сервер 64-битной ОС

Step_1_choose_AMI1.4 Выберите тип экземпляра

Выберите микро экземпляр

Step_2_Instance_Type

1.5 Настройка количества экземпляров

Как уже упоминалось, мы настраиваем 4-х узловый кластер hadoop, поэтому, пожалуйста, введите 4 в качестве количества экземпляров. Пожалуйста, проверьте требования уровня бесплатного пользования Amazon EC2. Вы можете настроить кластер из 3 узлов с объемом хранилища <30 ГБ, чтобы избежать любых расходов. В производственной среде вы хотите иметь SecondayNameNode в качестве отдельной машины

Step_3_Instance_Details

1.6 Добавить хранилище

Минимальный объем тома составляет 8 ГБ

Step_4_Add_Storage

1.7 Описание экземпляра

Дайте вашему экземпляру имя и описание

Step_5_Instance_description

1.8 Определите группу безопасности

Создайте новую группу безопасности, позже мы собираемся изменить группу безопасности с помощью правил безопасности.

Step_6_Security_Group

1.9 Запустить экземпляр и создать пару безопасности

Просмотрите и запустите экземпляр.

Amazon EC2 использует криптографию с открытым ключом для шифрования и дешифрования информации для входа в систему. Криптография с открытым ключом использует открытый ключ для шифрования фрагмента данных, такого как пароль, затем получатель использует закрытый ключ для дешифрования данных. Открытый и закрытый ключи известны как  пара ключей .

Создайте новую пару ключей и дайте ей имя «hadoopec2cluster» и загрузите файл пары ключей (.pem) на свой локальный компьютер. Нажмите Launch Instance

hadoopec2cluster_keypair

1.10 Запуск экземпляров

После того, как вы нажмете «Launch Instance», 4 экземпляр должен быть запущен в состоянии «pending»

launching_instance

Однажды в «работающем» состоянии мы теперь переименуем имя экземпляра, как показано ниже.

  1. HadoopNameNode (Мастер)
  2. HadoopSecondaryNameNode
  3. HadoopSlave1 (узел данных будет находиться здесь)
  4. HaddopSlave2 (узел данных будет находиться здесь)

running_instances

Запишите ID экземпляра, общедоступный DNS / URL (ec2-54-209-221-112.compute-1.amazonaws.com) и общедоступный IP для каждого экземпляра для справки. Он понадобится нам позже для подключения с Замазка клиента. Также обратите внимание, что мы используем «HadoopEC2SecurityGroup».

Public_DNS_IP_instance_id

Вы можете использовать существующую группу или создать новую. Когда вы создаете группу с параметрами по умолчанию, она добавляет правило для SSH на порт 22. Для того, чтобы иметь доступ по TCP и ICMP, нам нужно добавить 2 дополнительных правила безопасности. Добавьте «Все TCP», «Все ICMP» и «SSH (22)» в соответствии с правилами для входящих подключений в «HadoopEC2SecurityGroup». Это позволит выполнять команды ping, SSH и другие подобные команды между серверами и с любой другой машины в Интернете. Обязательно «Применить изменения правил», чтобы сохранить изменения.

Эти протоколы и порты также необходимы для обеспечения связи между серверами кластера. Поскольку это тестовая настройка, мы разрешаем доступ ко всем для TCP, ICMP и SSH и не заботимся о деталях отдельного порта сервера и безопасности.

Security_Group_Rule

2. Настройка клиентского доступа к инстансам Amazon

Теперь давайте удостоверимся, что мы можем подключиться ко всем 4 экземплярам. Для этого мы собираемся использовать клиент Putty. Мы собираемся настроить SSH-доступ без пароля между серверами для настройки кластера. Это позволяет осуществлять удаленный доступ с главного сервера на подчиненные серверы, чтобы главный сервер мог удаленно запускать службы узла данных и отслеживания задач на подчиненных серверах.

Мы будем использовать загруженный файл hadoopec2cluster.pem для генерации закрытого ключа (.ppk). Для генерации закрытого ключа нам нужен клиент Puttygen. Вы можете скачать putty и puttygen и различные утилиты в zip отсюда .

2.1 Генерация закрытого ключа

Давайте запустим клиент PUTTYGEN и импортируем пару ключей, которую мы создали на шаге запуска экземпляра — «hadoopec2cluster.pem»

Перейдите к Конверсиям и «Ключу импорта»

import_key

load_private_keyПосле импорта ключа Вы можете ввести фразу-пароль, чтобы защитить свой закрытый ключ, или оставить поля фразы-пароля пустыми, чтобы использовать закрытый ключ без какой-либо фразы-пароля. Парольная фраза защищает закрытый ключ от любого несанкционированного доступа к серверам, использующим ваш компьютер и ваш закрытый ключ.

Любой доступ к серверу с использованием закрытого ключа, защищенного парольной фразой, потребует от пользователя ввода ключевой фразы, чтобы разрешить доступ с закрытым ключом к серверу AWS EC2.

2.2 Сохранить приватный ключ

Теперь сохраните закрытый ключ, нажав «Сохранить закрытый ключ» и нажав «Да», так как мы собираемся оставить пароль пустым.

Save_PrivateKey

Сохраните файл .ppk и дайте ему осмысленное имя

save_ppk_file

Теперь мы готовы подключиться к нашей машине Amazon Instance впервые.

2.3 Подключение к инстансу Amazon

Давайте сначала подключимся к HadoopNameNode. Запустите клиент Putty, получите общедоступный URL-адрес, импортируйте закрытый ключ .ppk, который мы только что создали, для доступа по SSH без пароля. Согласно документации Amazon , для машин с Ubuntu имя пользователя — «Ubuntu».

2.3.1 Предоставить закрытый ключ для аутентификации

connect_to_HadoopNameNode3

2.3.2 Имя хоста, порт и тип подключения

и «Открыть», чтобы начать сеанс замазки

connect_to_HadoopNameNode4

при первом запуске сеанса вы увидите сообщение ниже, нажмите «Да»connect_to_HadoopNameNode

и попросит вас ввести имя пользователя, введите ubuntu,  если все пойдет хорошо, вам будет выдано приветственное сообщение с оболочкой Unix в конце.

connect_to_HadoopNameNode2

Если есть проблема с вашим ключом, вы можете получить ниже сообщение об ошибкеputty_error_message

Аналогично подключитесь к оставшимся 3 машинам HadoopSecondaryNameNode, HaddopSlave1, HadoopSlave2 соответственно, чтобы убедиться, что вы можете подключиться успешно.

4_connnected_amazon_instances

2.4 Включить публичный доступ

Выпуск  Ifconfig команды и запишите адрес IP. Затем мы собираемся обновить имя хоста с помощью общедоступного URL-адреса ec2 и, наконец, мы собираемся обновить файл / etc / hosts, чтобы сопоставить общедоступный URL-адрес ec2 с ip-адресом. Это поможет нам настроить главные и подчиненные узлы с именем хоста вместо IP-адреса.

Ниже приведен вывод HadoopNameNode ifconfig

Ifconfig

host_name_ip_address_mapping

Теперь, введите команду hostname, она отобразит IP-адрес, такой же, как адрес inet из команды ifconfig.

hostname_by_ip

Нам нужно изменить имя хоста на публичный URL ec2 с помощью следующей команды

prebuffer_0nbsp;sudo hostname ec2-54-209-221-112.compute-1.amazonaws.com

update_hostname

2.5 Изменить / etc / hosts

Позволяет изменить хост на открытый IP-адрес EC2 и имя хоста.

Откройте / etc / hosts в vi, в самой первой строке будет показано 127.0.0.1 localhost, нам нужно заменить его на имя хоста amazon ec2 и ip-адрес, который мы только что собрали.

open_etc_hosts_in_vi

Измените файл и сохраните ваши изменения

modify_vi_hosts

Повторите разделы 2.3 и 2.4 для остальных 3 машин.

3. Настройте доступ WinSCP к экземплярам EC2

Для безопасной передачи файлов с вашего компьютера с Windows на Amazon EC2 WinSCP — это удобная утилита.

Укажите имя хоста, имя пользователя и файл закрытого ключа и сохраните вашу конфигурацию и логин

WinSCP

winscp_error

Если вы видите вышеупомянутую ошибку, просто проигнорируйте, и при успешном входе в систему вы увидите файловую систему unix зарегистрированного пользователя / home / ubuntu вашего компьютера Amazon EC2 Ubuntu.

winscp_view

Загрузите файл .pem на главный компьютер (HadoopNameNode). Он будет использоваться при подключении к подчиненным узлам во время демонов запуска hadoop.

Если вы сделали это далеко, хорошая работа! Вещи станут более интересными в части 2 .