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

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


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

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

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

  1. Предпосылки
  2. Обновите системные пакеты
  3. Установить Java
  4. Создание пользователя Hadoop и настройка SSH без пароля
  5. Установить Hadoop
  6. Настройка Hadoop
    1. Настройка переменных среды Java
    2. Настройка файла core-site.xml
    3. Настройка файла hdfs-site.xml

    1. Настройка файла yarn-site.xml

    Apache Hadoop — это платформа с открытым исходным кодом, используемая для управления, хранения и обработки данных для различных приложений больших данных, работающих в кластерных системах. Он написан на Java с некоторым собственным кодом на C и сценариями оболочки. Он использует распределенную файловую систему (HDFS) и масштабируется от отдельных серверов до тысяч машин.

    Apache Hadoop основан на четырех основных компонентах:

    • Hadoop Common: набор утилит и библиотек, необходимых для других модулей Hadoop.
    • HDFS: также известная как распределенная файловая система Hadoop, распределенная по нескольким узлам.
    • MapReduce. Это платформа, используемая для написания приложений для обработки огромных объемов данных.
    • Hadoop YARN. Также известный как Yet Another Resource Negotiator — это уровень управления ресурсами Hadoop.

    В этом руководстве мы объясним, как настроить кластер Hadoop с одним узлом в Ubuntu 20.04.

    Предпосылки

    • Сервер под управлением Ubuntu 20.04 с 4 ГБ ОЗУ.
    • На вашем сервере настроен пароль root.

    Обновите системные пакеты

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

    apt-get update -y
    apt-get upgrade -y

    Как только ваша система будет обновлена, перезапустите ее, чтобы изменения вступили в силу.

    Установить Java

    Apache Hadoop — это приложение на основе Java. Поэтому вам нужно будет установить Java в вашей системе. Вы можете установить его с помощью следующей команды:

    apt-get install default-jdk default-jre -y

    После установки вы можете проверить установленную версию Java с помощью следующей команды:

    java -version

    Вы должны получить следующий результат:

    openjdk version "11.0.7" 2020-04-14
    OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-3ubuntu1)
    OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-3ubuntu1, mixed mode, sharing)
    

    Создайте пользователя Hadoop и настройте SSH без пароля

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

    adduser hadoop

    Затем добавьте пользователя hadoop в группу sudo
    usermod -aG sudo hadoop

    Затем войдите в систему с пользователем hadoop и сгенерируйте пару ключей SSH с помощью следующей команды:

    su - hadoop
    ssh-keygen -t rsa

    Вы должны получить следующий результат:

    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/hadoop/.ssh/id_rsa): 
    Created directory '/home/hadoop/.ssh'.
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /home/hadoop/.ssh/id_rsa
    Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub
    The key fingerprint is:
    SHA256:HG2K6x1aCGuJMqRKJb+GKIDRdKCd8LXnGsB7WSxApno 
    The key's randomart image is:
    +---[RSA 3072]----+
    |..=..            |
    | O.+.o   .       |
    |oo*.o + . o      |
    |o .o * o +       |
    |o+E.= o S        |
    |=.+o * o         |
    |*.o.= o o        |
    |=+ o.. + .       |
    |o ..  o .        |
    +----[SHA256]-----+
    

    Затем добавьте этот ключ в Авторизованные ключи ssh и дайте соответствующее разрешение:

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

    Затем проверьте SSH без пароля с помощью следующей команды:

    ssh localhost

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

    Установить Хадуп

    Сначала войдите в систему с помощью пользователя Hadoop и загрузите последнюю версию Hadoop с помощью следующей команды:

    su - hadoop
    wget https://downloads.apache.org/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz

    После завершения загрузки извлеките загруженный файл с помощью следующей команды:

    tar -xvzf hadoop-3.2.1.tar.gz

    Затем переместите извлеченный каталог в /usr/local/:

    sudo mv hadoop-3.2.1 /usr/local/hadoop

    Затем создайте каталог для хранения журнала с помощью следующей команды:

    sudo mkdir /usr/local/hadoop/logs

    Затем измените владельца каталога hadoop на hadoop:

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

    Далее вам нужно будет настроить переменные среды Hadoop. Вы можете сделать это, отредактировав файл ~/.bashrc:

    nano ~/.bashrc

    Добавьте следующие строки:

    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 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"
    

    Сохраните и закройте файл, когда закончите. Затем активируйте переменные среды с помощью следующей команды:

    source ~/.bashrc

    Настроить Hadoop

    В этом разделе мы узнаем, как настроить Hadoop на одном узле.

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

    Далее вам потребуется определить переменные среды Java в файле hadoop-env.sh, чтобы настроить параметры проекта YARN, HDFS, MapReduce и Hadoop.

    Сначала найдите правильный путь Java, используя следующую команду:

    which javac

    Вы должны увидеть следующий вывод:

    /usr/bin/javac
    

    Затем найдите каталог OpenJDK с помощью следующей команды:

    readlink -f /usr/bin/javac

    Вы должны увидеть следующий вывод:

    /usr/lib/jvm/java-11-openjdk-amd64/bin/javac
    

    Затем отредактируйте файл hadoop-env.sh и определите путь Java:

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

    Добавьте следующие строки:

    export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 
    export HADOOP_CLASSPATH+=" $HADOOP_HOME/lib/*.jar"
    

    Далее вам также потребуется загрузить файл активации Javax. Вы можете скачать его с помощью следующей команды:

    cd /usr/local/hadoop/lib
    sudo wget https://jcenter.bintray.com/javax/activation/javax.activation-api/1.2.0/javax.activation-api-1.2.0.jar

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

    hadoop version

    Вы должны получить следующий результат:

    Hadoop 3.2.1
    Source code repository https://gitbox.apache.org/repos/asf/hadoop.git -r b3cbbb467e22ea829b3808f4b7b01d07e0bf3842
    Compiled by rohithsharmaks on 2019-09-10T15:56Z
    Compiled with protoc 2.5.0
    From source with checksum 776eaf9eee9c0ffc370bcbc1888737
    This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-3.2.1.jar
    

    Настроить файл core-site.xml

    Далее вам нужно будет указать URL-адрес вашего NameNode. Вы можете сделать это, отредактировав файл core-site.xml:

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

    Добавьте следующие строки:

    <configuration>
       <property>
          <name>fs.default.name</name>
          <value>hdfs://0.0.0.0:9000</value>
          <description>The default file system URI</description>
       </property>
    
    </configuration>
    

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

    Настройка файла hdfs-site.xml

    Затем вам нужно будет определить место для хранения метаданных узла, файла fsimage и файла журнала редактирования. Вы можете сделать это, отредактировав файл hdfs-site.xml. Сначала создайте каталог для хранения метаданных узла:

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

    Затем отредактируйте файл hdfs-site.xml и укажите расположение каталога:

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

    Добавьте следующие строки:

    <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>
    

    Сохраните и закройте файл.

    Настройка файла mapred-site.xml

    Далее вам нужно будет определить значения MapReduce. Вы можете определить его, отредактировав файл mapred-site.xml:

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

    Добавьте следующие строки:

    <configuration>
       <property>
          <name>mapreduce.framework.name</name>
          <value>yarn</value>
       </property>
    </configuration>
    

    Сохраните и закройте файл.

    Настройте файл yarn-site.xml

    Далее вам нужно будет отредактировать файл yarn-site.xml и определить настройки, связанные с YARN:

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

    Добавьте следующие строки:

    <configuration>
       <property>
          <name>yarn.nodemanager.aux-services</name>
          <value>mapreduce_shuffle</value>
       </property>
    </configuration>
    

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

    Формат HDFS NameNode

    Далее вам нужно будет проверить конфигурацию Hadoop и отформатировать NameNode HDFS.

    Сначала войдите в систему с помощью пользователя Hadoop и отформатируйте NameNode HDFS с помощью следующей команды:

    su - hadoop
    hdfs namenode -format

    Вы должны получить следующий результат:

    2020-06-07 11:35:57,691 INFO util.GSet: VM type       = 64-bit
    2020-06-07 11:35:57,692 INFO util.GSet: 0.25% max memory 1.9 GB = 5.0 MB
    2020-06-07 11:35:57,692 INFO util.GSet: capacity      = 2^19 = 524288 entries
    2020-06-07 11:35:57,706 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.window.num.buckets = 10
    2020-06-07 11:35:57,706 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.num.users = 10
    2020-06-07 11:35:57,706 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.windows.minutes = 1,5,25
    2020-06-07 11:35:57,710 INFO namenode.FSNamesystem: Retry cache on namenode is enabled
    2020-06-07 11:35:57,710 INFO namenode.FSNamesystem: Retry cache will use 0.03 of total heap and retry cache entry expiry time is 600000 millis
    2020-06-07 11:35:57,712 INFO util.GSet: Computing capacity for map NameNodeRetryCache
    2020-06-07 11:35:57,712 INFO util.GSet: VM type       = 64-bit
    2020-06-07 11:35:57,712 INFO util.GSet: 0.029999999329447746% max memory 1.9 GB = 611.9 KB
    2020-06-07 11:35:57,712 INFO util.GSet: capacity      = 2^16 = 65536 entries
    2020-06-07 11:35:57,743 INFO namenode.FSImage: Allocated new BlockPoolId: BP-1242120599-69.87.216.36-1591529757733
    2020-06-07 11:35:57,763 INFO common.Storage: Storage directory /home/hadoop/hdfs/namenode has been successfully formatted.
    2020-06-07 11:35:57,817 INFO namenode.FSImageFormatProtobuf: Saving image file /home/hadoop/hdfs/namenode/current/fsimage.ckpt_0000000000000000000 using no compression
    2020-06-07 11:35:57,972 INFO namenode.FSImageFormatProtobuf: Image file /home/hadoop/hdfs/namenode/current/fsimage.ckpt_0000000000000000000 of size 398 bytes saved in 0 seconds .
    2020-06-07 11:35:57,987 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
    2020-06-07 11:35:58,000 INFO namenode.FSImage: FSImageSaver clean checkpoint: txid=0 when meet shutdown.
    2020-06-07 11:35:58,003 INFO namenode.NameNode: SHUTDOWN_MSG: 
    /************************************************************
    SHUTDOWN_MSG: Shutting down NameNode at ubunt4/69.87.216.36
    ************************************************************/
    

    Запустите кластер Hadoop

    Сначала запустите NameNode и DataNode с помощью следующей команды:

    start-dfs.sh

    Вы должны получить следующий результат:

    Starting namenodes on [0.0.0.0]
    Starting datanodes
    Starting secondary namenodes [ubunt4]
    

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

    start-yarn.sh

    Вы должны получить следующий результат:

    Starting resourcemanager
    Starting nodemanagers
    

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

    jps

    Вы должны получить следующий результат:

    5047 NameNode
    5850 Jps
    5326 SecondaryNameNode
    5151 DataNode
    

    Доступ к веб-интерфейсу Hadoop

    Теперь вы можете получить доступ к Hadoop NameNode, используя URL-адрес http://your-server-ip:9870. Вы должны увидеть следующий экран:

    Вы также можете получить доступ к отдельным узлам данных, используя URL-адрес http://your-server-ip:9864. Вы должны увидеть следующий экран:

    Чтобы получить доступ к диспетчеру ресурсов YARN, используйте URL-адрес http://your-server-ip:8088. Вы должны увидеть следующий экран:

    Заключение

    Поздравляем! вы успешно установили Hadoop на одном узле. Теперь вы можете приступить к изучению основных команд HDFS и спроектировать полностью распределенный кластер Hadoop. Не стесняйтесь спрашивать меня, если у вас есть какие-либо вопросы.