Поиск по сайту:

Как установить Apache Hadoop на Ubuntu 22.04


Это руководство существует для этих версий ОС

  • Ubuntu 22.04 (Jammy Jellyfish)
  • Ubuntu 20.04 (Focal Fossa)

На этой странице

  1. Предпосылки
  2. Установка Java OpenJDK
  3. Настройка аутентификации пользователя и аутентификации SSH без пароля
  4. Скачивание Hadoop
  5. Настройка переменных среды Hadoop
  6. Настройка кластера Apache Hadoop: псевдораспределенный режим
    1. Настройка NameNode и DataNode
    2. Менеджер по пряже

    Apache Hadoop — это платформа с открытым исходным кодом для обработки и хранения больших данных. В современных отраслях Hadoop стал стандартной структурой для больших данных. Hadoop предназначен для работы в распределенных системах с сотнями или даже тысячами кластеризованных компьютеров или выделенных серверов. Имея это в виду, Hadoop может обрабатывать большие наборы данных с большим объемом и сложностью как для структурированных, так и для неструктурированных данных.

    Каждое развертывание Hadoop содержит следующие компоненты:

    1. Hadoop Common: общие утилиты, поддерживающие другие модули Hadoop.
    2. Распределенная файловая система Hadoop (HDFS): распределенная файловая система, обеспечивающая высокоскоростной доступ к данным приложений.
    3. Hadoop YARN: платформа для планирования заданий и управления ресурсами кластера.
    4. Hadoop MapReduce: система на основе YARN для параллельной обработки больших наборов данных.

    В этом руководстве мы установим последнюю версию Apache Hadoop на сервер Ubuntu 22.04. Hadoop устанавливается на сервер с одним узлом, и мы создаем псевдораспределенный режим развертывания Hadoop.

    Предпосылки

    Для завершения этого руководства вам потребуются следующие требования:

    • Сервер Ubuntu 22.04. В этом примере используется сервер Ubuntu с именем хоста hadoop server и IP-адресом 192.168.5.100.
    • Пользователь без полномочий root с правами администратора sudo/root.

    Установка Java OpenJDK

    Hadoop — это огромный проект под эгидой Apache Software Foundation, в основном написанный на Java. На момент написания этой статьи последняя версия hadoop — v3.3,4, полностью совместимая с Java v11.

    Java OpenJDK 11 по умолчанию доступен в репозитории Ubuntu, и вы установите его через APT.

    Для начала запустите приведенную ниже команду apt, чтобы обновить и обновить списки/репозитории пакетов в вашей системе Ubuntu.

    sudo apt update

    Теперь установите Java OpenJDK 11 с помощью приведенной ниже команды apt. В репозитории Ubuntu 22.04 пакет default-jdk ссылается на Java OpenJDK v11.

    sudo apt install default-jdk

    При появлении запроса введите y для подтверждения и нажмите ENTER для продолжения. И начнется установка Java OpenJDK.

    После установки Java выполните приведенную ниже команду, чтобы проверить версию Java. Вы должны установить Java OpenJDK 11 в своей системе Ubuntu.

    java -version

    Теперь, когда Java OpebnJDK установлен, вы затем настроите нового пользователя с SSH-аутентификацией без пароля, который будет использоваться для запуска процессов и служб Hadoop.

    Настройка аутентификации пользователя и SSH без пароля

    Apache Hadoop требовал, чтобы в системе работала служба SSH. Это будет использоваться сценариями Hadoop для управления удаленным демоном Hadoop на удаленном сервере. На этом шаге вы создадите нового пользователя, который будет использоваться для запуска процессов и служб Hadoop, а затем настроите аутентификацию SSH без пароля.

    Если в вашей системе не установлен SSH, выполните приведенную ниже команду apt, чтобы установить SSH. Пакет pdsh представляет собой многопоточный клиент удаленной оболочки, позволяющий выполнять команды на нескольких хостах в параллельном режиме.

    sudo apt install openssh-server openssh-client pdsh

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

    sudo useradd -m -s /bin/bash hadoop
    sudo passwd hadoop

    Введите новый пароль для пользователя hadoop и повторите пароль.

    Затем добавьте пользователя hadoop в группу sudo с помощью приведенной ниже команды usermod. Это позволяет пользователю hadoop выполнять команду sudo.

    sudo usermod -aG sudo hadoop

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

    su - hadoop

    После входа в систему ваше приглашение станет таким: \[email \.

    Затем выполните приведенную ниже команду, чтобы сгенерировать открытый и закрытый ключ SSH. Когда будет предложено установить пароль для ключа, нажмите ENTER, чтобы пропустить.

    ssh-keygen -t rsa

    Теперь ключ SSH создается в каталоге ~/.ssh. Файл id_rsa.pub — это открытый ключ SSH, а файл id_rsa — закрытый ключ.

    Вы можете проверить сгенерированный ключ SSH с помощью следующей команды.

    ls ~/.ssh/

    Затем выполните приведенную ниже команду, чтобы скопировать открытый ключ SSH id_rsa.pub в файл authorized_keys и изменить разрешение по умолчанию на 600.

    В ssh в файле authorized_keys\ хранится открытый ключ ssh, который может состоять из нескольких открытых ключей. Любой, у кого открытый ключ хранится в файле authorized_keys и правильный закрытый ключ сможет подключаться к серверу как пользователь hadoop без пароля.

    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys

    После завершения настройки SSH без пароля вы можете проверить это, подключившись к локальному компьютеру с помощью команды ssh ниже.

    ssh localhost

    Введите «да» для подтверждения и добавьте отпечаток пальца SSH, и вы будете подключены к серверу без аутентификации по паролю.

    Теперь, когда пользователь hadoop создан и настроена аутентификация SSH без пароля, вы приступите к установке Hadoop, загрузив двоичный пакет Hadoop.

    Скачивание Hadoop

    После создания нового пользователя и настройки аутентификации SSH без пароля вы можете загрузить двоичный пакет Apache Hadoop и настроить для него каталог установки. В этом примере вы загрузите hadoop v3.3.4, а целевым каталогом установки будет /usr/local/hadoop.

    Запустите приведенную ниже команду wget, чтобы загрузить двоичный пакет Apache Hadoop в текущий рабочий каталог. Вы должны получить файл hadoop-3.3.4.tar.gz в вашем текущем рабочем каталоге.

    wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz

    Затем извлеките пакет Apache Hadoop hadoop-3.3.4.tar.gz с помощью приведенной ниже команды tar. Затем переместите извлеченный каталог в /usr/local/hadoop.

    tar -xvzf hadoop-3.3.4.tar.gz
    sudo mv hadoop-3.3.4 /usr/local/hadoop

    Наконец, измените владельца каталога установки Hadoop /usr/local/hadoop на пользователя hadoop и группу hadoop.

    sudo chown -R hadoop:hadoop /usr/local/hadoop

    На этом шаге вы загрузили двоичный пакет Apache Hadoop и настроили каталог установки Hadoop. Имея это в виду, теперь вы можете приступить к настройке установки Hadoop.

    Настройка переменных среды Hadoop

    Откройте файл конфигурации ~/.bashrc с помощью приведенной ниже команды редактора nano.

    nano ~/.bashrc

    Добавьте в файл следующие строки. Обязательно поместите следующие строки в конец строки.

    # Hadoop environment variables
    export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
    export HADOOP_HOME=/usr/local/hadoop
    export HADOOP_INSTALL=$HADOOP_HOME
    export HADOOP_MAPRED_HOME=$HADOOP_HOME
    export HADOOP_COMMON_HOME=$HADOOP_HOME
    export HADOOP_HDFS_HOME=$HADOOP_HOME
    export HADOOP_YARN_HOME=$HADOOP_HOME
    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
    export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
    export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"

    Сохраните файл и выйдите из редактора, когда закончите.

    Затем выполните приведенную ниже команду, чтобы применить новые изменения в файле ~/.bashrc.

    source ~/.bashrc

    После выполнения команды будут применены новые переменные среды. Вы можете проверить, проверив каждую переменную среды с помощью приведенной ниже команды. И вы должны получить вывод каждой переменной среды.

    echo $JAVA_HOME
    echo $HADOOP_HOME
    echo $HADOOP_OPTS

    Далее вы также настроите переменную среды JAVA_HOME в сценарии hadoop-env.sh.

    Откройте файл hadoop-env.sh с помощью следующей команды редактора nano. Файл hadoop-env.sh доступен в каталоге $HADOOP_HOME, который относится к каталогу установки Hadoop /usr/local/hadoop.

    nano $HADOOP_HOME/etc/hadoop/hadoop-env.sh

    Раскомментируйте строку среды JAVA_HOME и измените значение на каталог установки Java OpenJDK /usr/lib/jvm/java-11-openjdk-amd64.

    export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

    Сохраните файл и выйдите из редактора, когда закончите.

    С настройкой переменных среды выполните приведенную ниже команду, чтобы проверить версию Hadoop в вашей системе. Вы должны увидеть, что Apache Hadoop 3.3.4 установлен в вашей системе.

    hadoop version

    На этом этапе вы готовы установить и настроить кластер Hadoop, который можно развернуть в нескольких режимах.

    Настройка кластера Apache Hadoop: псевдораспределенный режим

    В Hadoop вы можете создать кластер в трех разных режимах:

    1. Локальный режим (автономный) — установка Hadoop по умолчанию, которая запускается как отдельный процесс Java и нераспределенный режим. Благодаря этому вы можете легко отлаживать процесс Hadoop.
    2. Псевдораспределенный режим. Позволяет запускать кластер Hadoop в распределенном режиме даже с одним узлом/сервером. В этом режиме процессы Hadoop будут выполняться в отдельных процессах Java.
    3. Полностью распределенный режим – крупное развертывание Hadoop с несколькими или даже тысячами узлов/серверов. Если вы хотите запустить Hadoop в производственной среде, вам следует использовать Hadoop в полностью распределенном режиме.

    В этом примере вы настроите кластер Apache Hadoop с псевдораспределенным режимом на одном сервере Ubuntu. Для этого вы внесете изменения в некоторые конфигурации Hadoop:

    • core-site.xml — он будет использоваться для определения NameNode для кластера Hadoop.
    • hdfs-site.xml — эта конфигурация будет использована для определения DataNode в кластере hadoop.
    • mapred-site.xml — конфигурация MapReduce для кластера Hadoop.
    • yarn-site.xml — конфигурация ResourceManager и NodeManager для кластера Hadoop.

    Настройка NameNode и DataNode

    Сначала вы настроите NameNode и DataNode для кластера hadoop.

    Откройте файл $HADOOP_HOME/etc/hadoop/core-site.xml с помощью следующего редактора nano.

    sudo nano $HADOOP_HOME/etc/hadoop/core-site.xml

    Добавьте следующие строки в файл. Обязательно измените IP-адрес NameNode или замените его на 0.0.0.0, чтобы NameNode работал на всех интерфейсах и IP-адресах.

    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://192.168.5.100:9000</value>
        </property>
    </configuration>

    Сохраните файл и выйдите из редактора, когда закончите.

    Затем выполните следующую команду, чтобы создать новые каталоги, которые будут использоваться для DataNode в кластере hadoop. Затем измените владельца каталогов DataNode на пользователя hadoop.

    sudo mkdir -p /home/hadoop/hdfs/{namenode,datanode}
    sudo chown -R hadoop:hadoop /home/hadoop/hdfs

    После этого откройте файл $HADOOP_HOME/etc/hadoop/hdfs-site.xml с помощью приведенной ниже команды редактора nano.

    sudo nano $HADOOP_HOME/etc/hadoop/hdfs-site.xml

    Добавьте следующую конфигурацию в файл. В этом примере вы настроите кластер Hadoop на одном узле, поэтому вы должны изменить значение dfs.replication на 1. Кроме того, вы должны указать каталог, который будет использоваться для DataNode.

    <configuration>

        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>

       <property>
          <name>dfs.name.dir</name>
          <value>file:///home/hadoop/hdfs/namenode</value>
       </property>

       <property>
          <name>dfs.data.dir</name>
          <value>file:///home/hadoop/hdfs/datanode</value>
       </property>

    </configuration>

    Сохраните файл и выйдите из редактора, когда закончите.

    Настроив NameNode и DataNode, выполните приведенную ниже команду, чтобы отформатировать файловую систему hadoop.

    hdfs namenode -format

    Вы получите такой вывод:

    Затем запустите NameNode и DataNode с помощью следующей команды. NameNode будет работать на IP-адресе сервера, указанном в файле core-site.xml.

    start-dfs.sh

    Вы увидите такой вывод:

    Теперь, когда NameNode и DataNode запущены, вы проверите оба процесса через веб-интерфейс.

    В веб-интерфейсе Hadoop NameNode используется порт 9870. Итак, откройте веб-браузер и посетите IP-адрес сервера, за которым следует порт 9870 (например, http://192.168.5.100:9870/).

    Теперь вы должны получить страницу, как показано на следующем снимке экрана — NameNode в настоящее время активен.

    Теперь щелкните меню Datanodes, и вы должны получить текущий DataNode, активный в кластере hadoop. Следующий снимок экрана подтверждает, что DataNode работает на порту 9864 в кластере Hadoop.

    Нажмите на Http-адрес DataNode, и вы должны открыть новую страницу с подробной информацией о DataNode. Следующий снимок экрана подтверждает, что DataNode работает с каталогом тома /home/hadoop/hdfs/datanode.

    Запустив NameNode и DataNode, вы затем настроите и запустите MapReduce в диспетчере Yarn (Еще один ResourceManager и NodeManager).

    Менеджер пряжи

    Чтобы запустить MapReduce на Yarn в псевдораспределенном режиме, вам нужно внести несколько изменений в файлы конфигурации.

    Откройте файл $HADOOP_HOME/etc/hadoop/mapred-site.xml с помощью следующей команды редактора nano.

    sudo nano $HADOOP_HOME/etc/hadoop/mapred-site.xml

    Добавьте следующие строки в файл. Обязательно измените mapreduce.framework.name на yarn.

    <configuration>
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
        <property>
            <name>mapreduce.application.classpath</name>
            <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
        </property>
    </configuration>

    Сохраните файл и выйдите из редактора, когда закончите.

    Затем откройте конфигурацию Yarn $HADOOP_HOME/etc/hadoop/yarn-site.xml с помощью следующей команды редактора nanoe.

    sudo nano $HADOOP_HOME/etc/hadoop/yarn-site.xml

    Измените конфигурацию по умолчанию со следующими настройками.

    <configuration>
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
        <property>
            <name>yarn.nodemanager.env-whitelist</name>
            <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value>
        </property>
    </configuration>

    Сохраните файл и выйдите из редактора, когда закончите.

    Теперь выполните приведенную ниже команду, чтобы запустить демоны Yarn. И вы должны увидеть, что и ResourceManager, и NodeManager запускаются.

    start-yarn.sh

    ResourceManager должен работать в порту по умолчанию 8088. Вернитесь в свой веб-браузер и посетите IP-адрес сервера, за которым следует порт ResourceManager 8088 (например: http://192.168.5.100:8088/).

    Вы должны увидеть веб-интерфейс Hadoop ResourceManager. Отсюда вы можете отслеживать все запущенные процессы внутри кластера Hadoop.

    Щелкните меню «Узлы», и вы должны получить текущий работающий узел в кластере Hadoop.

    Теперь кластер Hadoop работает в псевдораспределенном режиме. Это означает, что каждый процесс Hadoop выполняется как отдельный процесс на одном узле сервера Ubuntu 22.04, который включает NameNode, DataNode, MapReduce и Yarn.

    Заключение

    В этом руководстве вы установили Apache Hadoop на один сервер Ubuntu 22.04. Вы установили Hadoop с включенным псевдораспределенным режимом, что означает, что каждый компонент Hadoop работает как отдельный процесс Java в системе. В этом руководстве вы также узнали, как настроить Java, настроить переменные системной среды и настроить аутентификацию SSH без пароля с помощью открытого и закрытого ключа SSH.

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