Как установить и настроить Apache Hadoop в Ubuntu 20.04
Это руководство существует для этих версий ОС
- Ubuntu 22.04 (Jammy Jellyfish)
- Ubuntu 20.04 (Focal Fossa)
На этой странице
- Предпосылки
- Обновите системные пакеты
- Установить Java
- Создание пользователя Hadoop и настройка SSH без пароля
- Установить Hadoop
- Настройка Hadoop
- Настройка переменных среды Java
- Настройка файла core-site.xml
- Настройка файла hdfs-site.xml
- Настройка файла 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. Не стесняйтесь спрашивать меня, если у вас есть какие-либо вопросы.