1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wangruihuano-hadoop_deployment_script

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Описание скрипта одноклик-установки Hadoop


Установка без использования Docker

Поддерживаемая версия Hadoop: 2.8.3, ссылка на скачивание

Версия JDK: jdk-8u144-linux-x64.rpm, официальный сайт

Операционная система: CentOS 7

Перед использованием скрипта убедитесь, что файлы Hadoop и JDK находятся в этом проекте.

Шаг 1:

Скопируйте все содержимое текущей директории на узел, где будет установлен мастер-узел Hadoop.

Измените файл hadoop-install.sh в соответствии с вашими требованиями:

hadoop_package_location="./" # Путь к архиву Hadoop

hadoop_package_name="hadoop-2.8.3.tar.gz" # Название архива Hadoop

hadoop_dir_name="hadoop-2.8.3" # Название корневой директории после распаковки

jdk_package_name="jdk-8u144-linux-x64.rpm" # Название пакета JDK

jdk_package_location="./" # Путь к пакету JDK

Шаг 2:

Измените файл hosts-login.txt в соответствии с примером, используя пробелы для разделения IP-адреса, имени узла, логина пользователя. Узел namenode должен быть указан в первой строке файла.

192.168.0.104 hadoop.master root

Шаг 3:

Измените переменные окружения Java в файле hadoop-env.sh (по умолчанию после установки rpm: /usr/java/jdk1.8.0_144).

export JAVA_HOME=${JAVA_HOME}

Шаг 4:Настройте конфигурационные файлы core-site.xml, hdfs-site.xml, mapred-site.xml, yarn-site.xml в соответствии с официальной документацией Hadoop.### Шаг 5:

Выполните скрипт hadoop-install.sh.

В процессе выполнения скрипта потребуется ввести подтверждение SSH и пароли для других slave-узлов.

После завершения установки запустите узлы Hadoop следующими командами. По умолчанию переменная hadoop_location равна /root/hadoop, а hadoop_dir_name — значению, указанному на шаге 1.

cd ${hadoop_location}/${hadoop_dir_name}
./bin/hadoop namenode -format # Форматирование файловой системы
./sbin/start-all.sh # Запуск HDFS и YARN
jps # Просмотр запущенных сервисов

Откройте браузер и перейдите по адресу http://namenode:50070, где namenode — IP-адрес главного узла. Добавьте правила брандмауэра в CentOS 7

firewall-cmd --zone=dmz --add-port=50070/tcp # Разрешение входящего порта 50070
firewall-cmd --reload # Обновление правил брандмауэра

Если правила не работают, можно отключить брандмауэр

systemctl stop firewalld.service # Остановка firewall

Установка с использованием Docker

Предварительные условия

Тестирование проводилось на CentOS 7.0, версия Docker — 1.13.1.

Установка Docker см. здесь.

Перед сборкой образа убедитесь, что файл hadoop-2.8.3.tar.gz находится в каталоге hadoop_base.

Убедитесь, что время на сервере правильно установлено!

Все следующие действия выполняются под учетной записью root CentOS.

Синхронизация времени сервера (необязательно)Установите ntpdate для синхронизации времени

yum install -y ntpdate
ntpdate asia.pool.ntp.org

Сборка образов

Для установки требуется сборка четырёх образов: java, base, slave и master. Поскольку образ master основан на образе base, а образ base основан на CentOS-java, вам следует собирать образы снизу вверх.

Мы предоставили автоматический скрипт для сборки образов. Вы можете собрать образы, выполнив команду chmod +x ./build.sh && ./build.sh. Конечно, вы также можете собрать образы вручную, чтобы лучше понять процесс.

Время сборки зависит от производительности машины и состояния сети. При успешной сборке будет выдано сообщение Successfully built cbdfb7666b10, где cbdfb7666b10 — это ID образа, который будет отличаться для каждого образа.

  1. Сборка образа centos-java:

    В каталоге centos_java8 выполните команду docker build -t licte/cent-java:latest ..

  2. Сборка образа hadoop-base:

    Если необходимо, перед сборкой этого образа вы можете войти в каталог hadoop конфигурационных файлов и изменить конфигурацию по необходимости. Мы предоставили некоторые значения по умолчанию, поэтому при изменении конфигурации убедитесь, что вы также обновили соответствующие параметры ARG в Dockerfile этого образа. В текущей версии параметры, связанные с конфигурационными файлами, включают: HADOOP_HDFS_NAMENODE, HADOOP_HDFS_DATANODE и HADOOP_TMP_DIR. В каталоге hadoop_base выполните команду docker build -t licte/hadoop-base:latest ..

  3. Сборка образа hadoop-master:

    В каталоге hadoop_master выполните команду docker build -t licte/hadoop-master:latest ..

  4. Сборка hadoop-slave:

    Конфигурация публичных ключей устарела. Обратите внимание: для удобства последующего запуска Hadoop мы включили процесс распространения публичных ключей name-узла в процесс сборки образа. Поэтому перед сборкой образа slave-узла вам следует запустить один name-узел: docker run -p 50070:50070 -p 8088:8088 --name=master --hostname=hadoop.master licte/hadoop-master. После запуска будет выведен публичный ключ этого узла, который нужно скопировать в файл hadoop_slave/id_rsa.pub. Затем продолжайте следующие шаги. Конечно, вы также можете вручную скопировать содержимое публичного ключа в файл /root/.ssh/authorized_keys slave-узла после завершения сборки образа, что будет иметь ту же функцию.

    В директории hadoop_slave выполните команду docker build -t licte/hadoop-slave:latest ..

  5. Просмотр образов: Выполните команду docker images для просмотра списка образов. В списке должны присутствовать следующие записи:

    REPOSITORY                    TAG                 IMAGE ID            CREATED              SIZE
    licte/hadoop-slave            latest              050011e9b4a8        10 секунд назад      1.83 ГБ
    licte/hadoop-master           latest              4e3bdb2f1aff        Около минуты назад   1.91 ГБ
    licte/hadoop-base             latest              9f4b4f0f8d5f        3 минуты назад       1.83 ГБ
    licte/cent-java               latest              fd370190e217        13 минут назад       783 МБ
    hub.c.163.com/public/centos   6.5                 997f0ed97903        2 года назад         442 МБ
    ```### Создание сети Docker Swarm
    

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

В этом примере используется три машины, одна из которых запускает контейнер hadoop-master, называемый HM, а две остальные запускают контейнеры slave, называемые HS1 и HS2 соответственно.

На всех трех машинах установлен Docker, и все они имеют вышеупомянутые образы. Для удобства тестирования можно временно отключить брандмауэр systemctl stop firewalld.

На машине HM выполните команду docker swarm init. После выполнения команды будет выдан токен, который следует запомнить для использования другими машинами при подключении к сети.

На машинах HS1 и HS2 выполните команду docker swarm join --token ${TOKEN} ${IP}:2377, где ${TOKEN} — это значение, полученное на предыдущем шаге, а ${IP} — IP-адрес машины HM. Успешное подключение будет подтверждено сообщением This node joined a swarm as a worker..

На машине HM выполните команду docker node ls, и список узлов должен выглядеть аналогично.

ID                           ХОСТ      СТАТУС  ДОСТУПНОСТЬ  СТАТУС МЕНЕДЖЕРА
f3j741he8o6tkjv7vvue36t48 *  HM        Ready   Active        Leader
ux2mb9d1kpm0ldut65r3820og    HS1       Ready   Active        

Создание пользовательского Docker-сети (на хосте HM): docker network create -d overlay --attachable hadoop-netВыполнение docker network ls должно включать следующее:

NETWORK ID          NAME                DRIVER              SCOPE
c1c53e22e54b        bridge              bridge              local
95dbfa451619        docker_gwbridge     bridge              local
xllhrzzj8dmq        hadoop-net          overlay             swarm
e2291caef7c6        host                host                local
k15ytvl4yvj3        ingress             overlay             swarm
a112ae08ef4f        none                null                local

Запуск и конфигурация контейнеров

В зависимости от потребностей запустите один мастер-узел и несколько рабочих узлов.

Запуск namenode:

docker run -itd \
        --net=hadoop-net \
        --name=master \
        -p 50070:50070 \
        -p 8088:8088 \
        -p 9000:9000 \
        -p 8042:8042 \
        --hostname=hadoop.master \
        licte/hadoop-master

Запуск datanode (в зависимости от потребностей измените имя и hostname):

docker run -itd \
                --name slave1 \
                --hostname hadoop.slave1 \
                -p 50075:50075 \
                --net=hadoop-net \
                licte/hadoop-slave

После запуска контейнеров войдите в контейнер master (docker exec -it master bash), выполните ls, и вы увидите следующие файлы:

anaconda-ks.cfg  hdfs hosts ssh.sh hosts.example

Необходимо изменить файл hosts с учетом информации о рабочих узлах, используя hosts.example как образец.

Получение IP-адреса контейнера можно выполнить на хосте командой docker exec -it ${?} ip addr, где ${?} — это имя или ID контейнера.

После изменения файла hosts выполните ./ssh.sh для настройки безпарольного входа по SSH. В процессе выполнения скрипта вам могут потребоваться подтверждения (yes/no).После выполнения команды вы сможете войти в директорию ${HADOOP_HOME}$, выполнить sbin/start-all.shдля запуска Hadoop-кластера. **Первый запуск кластера требует подтверждения публичного ключа, вам потребуется подтвердить (yes/no).** ```После запуска можно получить информацию о кластере, выполнив команду./hadoop dfsadmin -reportв директории${HADOOP_HOME}/bin`, или через браузер по адресу http://xx.xx.xx.xx:50070, где xx.xx.xx.xx — IP-адрес машины, на которой развернут контейнер master.

Пример использования MapReduce:

# Загрузить скрипт ${HADOOP_HOME}/bin/hadoop в корневую директорию DFS
${HADOOP_HOME}/bin/hadoop fs -put ${HADOOP_HOME}/bin/hadoop /

# Запустить пример WordCount, предоставленный Hadoop
${HADOOP_HOME}/bin/hadoop jar /usr/local/hadoop-2.8.3/share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.8.3-sources.jar org.apache.hadoop.examples.WordCount /hadoop /out

# Просмотреть результат работы WordCount
${HADOOP_HOME}/bin/hdfs dfs -cat /out/part-r-00000

Расширение кластера и изменение конфигураций

Все действия выполняются в контейнере master, то есть namenode контейнере

После создания нового узла, необходимо отредактировать файл /root/hosts с учетом имени хоста, IP-адреса и имени пользователя.

Файлы конфигурации Hadoop находятся в директории ${HADOOP_HOME}/etc/hadoop. Основные конфигурационные файлы включают core-site.xml, hdfs-site.xml, mapred-site.xml, yarn-site.xml.

После изменения файлов, выполните команду ./ssh.sh в директории /root.


Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Скрипт для распределённой установки кластера Hadoop. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/wangruihuano-hadoop_deployment_script.git
git@api.gitlife.ru:oschina-mirror/wangruihuano-hadoop_deployment_script.git
oschina-mirror
wangruihuano-hadoop_deployment_script
wangruihuano-hadoop_deployment_script
master