Скидка 50% на все тарифы, ограниченное время. От $2.48/mo
13 мин. осталось
Базы данных и аналитика

Как установить Hadoop на Ubuntu: подробное руководство

Пиус Боденманн By Пиус Боденманн 13 мин. чтения Обновлено 1 мая 2024 г.
как установить Hadoop на Ubuntu Linux

Как только бизнес или любая другая задача вырастает до масштабов, требующих нескольких компьютеров, мы начинаем объединять их в единую сеть для более эффективного распределения нагрузки. Сегодня это стало нормой: практически все операции в таких областях, как наука о данных, выполняются на кластерах объединённых машин. Такой подход действительно ускоряет выполнение ресурсоёмких задач, однако и усложняет всё значительно: каждую машину нужно настраивать отдельно, а затем управлять сетью в процессе работы. Именно здесь на помощь приходят такие инструменты, как Hadoop.

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

Что такое Apache Hadoop?

Hadoop — набор инструментов на базе Apache, который уже более 15 лет меняет подход к организации и использованию сетей. Он позволяет задействовать имеющиеся вычислительные ресурсы для решения ресурсоёмких задач без дорогостоящих обновлений. В состав пакета входят четыре модуля: HDFS, YARN, MapReduce и Hadoop Common, каждый из которых предназначен для определённых задач.

Главное преимущество Hadoop в том, что он позволяет как отдельным пользователям, так и организациям объединить имеющиеся вычислительные мощности в единую систему и решать серьёзные задачи, с которыми не справился бы ни один отдельный компьютер. Без Hadoop пришлось бы постоянно тратиться на всё более производительное оборудование.

Сценарии использования Hadoop

Теперь мы знаем, что такое Hadoop. Но как это работает на практике? Понять инструмент в теории полезно, однако настоящую ценность он приобретает только в реальных проектах. Поэтому перед переходом к руководству по Hadoop я приведу несколько конкретных примеров.

Анализ рисков

Как уже было сказано, Hadoop позволяет объединить несколько компьютеров в единую сеть и быстро обрабатывать большие объёмы данных. Любой бизнес сталкивается с рисками, которые нужно оценивать и просчитывать. Здесь Hadoop оказывается особенно полезным: многие авторитетные больницы используют его для анализа рисков различных методов лечения и оценки вероятных результатов операций для своих пациентов.

Обнаружение угроз безопасности

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

Сопоставление отзывов

Многие компании опираются на отзывы пользователей, чтобы улучшать продукты и корректировать рыночную стратегию. Человеку потребуется очень много времени, чтобы разобрать большой массив отзывов, а Hadoop справится с этим значительно быстрее, задействовав всю мощь сети.

Анализ рынка

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

Анализ лог-файлов

Ещё один аспект, который усложняется по мере роста бизнеса, — это количество используемого ПО. Чем больше программ, тем больше потенциальных багов и сбоев, и тем больше времени уходит на анализ лог-файлов. Используя несколько простых протоколов, компания может применять Hadoop для быстрого анализа и проверки лог-файлов, чтобы оперативно находить и устранять проблемы.

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

Обзор архитектуры Hadoop

Допустим, вы уже слышали о Hadoop и знаете, для чего он нужен. Даже если нет — эта статья уже восполнила этот пробел. Теперь важно разобраться, из чего состоит Hadoop и как его компоненты работают вместе. Как уже говорилось, в Hadoop четыре основных слоя. В этой части руководства мы подробнее рассмотрим HDFS (Hadoop Distributed File System), YARN (Yet Another Resource Negotiator), MapReduce и Hadoop Common. Поскольку у Hadoop Common не так много функций, требующих отдельного объяснения, его ключевые возможности известны как Zookeeper. В этом разделе я постараюсь объяснить архитектуру и экосистему Hadoop и её четыре части простыми словами, а затем перейду к установке Hadoop на Ubuntu 20.04.

HDFS

HDFS в экосистеме Hadoop — это общая система хранения данных, которую используют все подсистемы и приложения Hadoop для доступа к данным, их передачи и сохранения. Важный момент: в отличие от самого Hadoop, который является программой с открытым исходным кодом, HDFS — это файловая система, отвечающая за все базовые операции внутри отдельного кластера Hadoop. HDFS отличается высокой отказоустойчивостью: она разбивает данные на блоки по 128 МБ и оптимизирует их для последовательной обработки.

Основная задача HDFS в составе Hadoop — предоставлять все данные в виде единого стека, которым затем можно управлять через различные namenode и дополнительные стойки, разбивая их на подсекции для организации анализа данных. Для отслеживания операций и выполнения других задач можно использовать Journal-стойки, QJM, HA, fsimage, лог-файлы изменений и общий журнал.

YARN

YARN — ещё один ключевой компонент Hadoop, отвечающий за распределение вычислительных ресурсов между конкретными приложениями в экосистеме Hadoop. По сути, он позволяет использовать менеджер ресурсов для выделения этих ресурсов клиентам через набор различных узлов для разных задач и приложений. В YARN также есть журнал, аналогичный журналу в HDFS, который позволяет отслеживать все выделенные ресурсы и операции. YARN делится на три подсистемы: Resource Manager, Application Master и Node Manager.

Каждая из этих трёх подсистем создаёт новый экземпляр себя для каждого кластера, приложения и узла соответственно. YARN позволяет не только распределять ресурсы между задачами, но и планировать их изменение во времени для реализации сложных алгоритмических рабочих процессов. YARN не ограничен собственными подсистемами: в большинстве случаев он используется совместно с другими архитектурными слоями, такими как HDFS и Zookeeper, для распределения ресурсов и оценки общего состояния системы.

Hadoop MapReduce

Hadoop MapReduce — ещё один ключевой компонент экосистемы Hadoop. После установки Hadoop на Ubuntu вы можете использовать эту функцию для распределённого анализа больших объёмов данных сразу на нескольких компьютерах. Принцип работы Hadoop MapReduce таков: вы передаёте в программу большой массив данных. Этот массив перемешивается, разбивается на части и распределяется по компьютерам сети. Затем с помощью специальных процедур, называемых редьюсерами, данные сворачиваются до самых существенных компонентов. Каждая такая операция называется Job.

Допустим, у вас есть предложение из трёх слов, которое служит массивом данных для анализа через MapReduce. Пусть это будет: Bear Hunt Rabbit. Hadoop MapReduce разобьёт это предложение на три отдельных блока, по одному слову в каждом, затем объединит эти слова с похожими данными из других задач и сформирует итоговый однородный массив данных, из которого удалены лишние сведения и который легко поддаётся анализу.

Zookeeper

Zookeeper — ещё одна подсистема экосистемы Hadoop, получившая широкое распространение с выходом Hadoop версии 2.0. Основная задача Zookeeper — координировать различные операции, выполняемые в рамках одного экземпляра Hadoop. Поэтому Zookeeper почти всегда используется совместно с Resource Manager в YARN и различными компонентами HDFS в Hadoop. Главная функция Zookeeper в этих операциях — обнаружение и устранение потенциальных точек отказа. Для этого используются два инструмента: ZKFailoverController и Zookeeper Quorum.

В ходе этих процедур узлы данных, управляемые другими компонентами архитектуры Hadoop, классифицируются как активные namenode под контролем пользователя. Затем каждый из этих namenode проверяется в двух упомянутых подсистемах Zookeeper — для выявления проблемных зон и потенциальных точек отказа.

Установка Hadoop на Ubuntu 20.04 — пошаговое руководство

После изучения архитектуры Hadoop пришло время перейти к главному — установке Hadoop на Ubuntu 20.04 в качестве финальной части этого руководства. Сначала рассмотрим предварительные требования, а затем перейдём к пошаговой инструкции. Обратите внимание: это руководство также подходит для Ubuntu 18.04.

Требования

Требования для установки Hadoop на Ubuntu минимальны. Нужен компьютер на базе Ubuntu с root-доступом — локальным или удалённым через сервер VPS. Из программ заранее установите Java 11 и SSH. Если их нет, выполните следующие команды по одной:

sudo apt update && sudo apt upgrade -y
sudo apt install openssh-server openssh-client -y
sudo apt install openjdk-11-jdk -y

Лицензия не нужна: Hadoop распространяется бесплатно с открытым исходным кодом. Это всё, что требуется. Переходим к первому шагу.

Шаг 1: создайте пользователя без прав root для Hadoop

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

sudo adduser hdoop
su - hdoop

Шаг 2: Настройте ключи SSH

Теперь для установки Hadoop на Ubuntu войдём под только что созданным пользователем Hadoop и настроим SSH-подключение. Следующая команда генерирует пару SSH-ключей и сохраняет её:

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

После генерации ключей следующая команда позволит пометить их как authorized_keys и сохранить в директории SSH:

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

Теперь убедитесь, что SSH-подключение имеет все необходимые права, с помощью этой команды:

chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

Подтвердите изменения - после этого вы сможете в любой момент подключаться к localhost под созданным пользователем:

ssh localhost

Шаг 3: Скачайте и установите Hadoop на Ubuntu

Перейдите на официальный сайт Apache Hadoop чтобы просмотреть список версий с журналом изменений. Выберите нужную версию и получите ссылку, которую можно использовать в следующей команде для загрузки и установки Hadoop на Ubuntu. В примере используется версия 3.3.6. При необходимости замените '3.3.6' на актуальную стабильную версию:

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

После завершения загрузки выполните эту команду для распаковки и завершения установки:

tar xzf hadoop-3.3.6.tar.gz
sudo mv hadoop-3.3.6 /usr/local/hadoop
sudo chown -R hdoop:hdoop /usr/local/hadoop

Шаг 4: настройка среды Hadoop

Задайте JAVA_HOME in /usr/local/hadoop/etc/hadoop/hadoop-env.sh:

echo 'export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")' | sudo tee -a /usr/local/hadoop/etc/hadoop/hadoop-env.sh

Шаг 5: редактирование файлов конфигурации

Обновите XML-файлы конфигурации Hadoop в соответствии с настройками вашего кластера.

nano /usr/local/hadoop/etc/hadoop/core-site.xml

Шаг 6: форматирование HDFS

Инициализируйте пространство имён файловой системы Hadoop.

/usr/local/hadoop/bin/hdfs namenode -format

Шаг 7: Запуск служб Hadoop

Запустите службы HDFS и YARN.

/usr/local/hadoop/sbin/start-dfs.sh
/usr/local/hadoop/sbin/start-yarn.sh

Шаг 8: Проверка установки

Проверьте запущенные процессы Java, чтобы убедиться в работоспособности Hadoop.

jps

Шаг 9: Доступ к веб-интерфейсам

Откройте в браузере интерфейсы NameNode и ResourceManager Hadoop.

NameNode: http://localhost:9870
ResourceManager: http://localhost:8088

Шаг 10: Запуск примера MapReduce

Запустите тестовое задание MapReduce для проверки корректности установки.

/usr/local/hadoop/bin/hdfs dfs -mkdir /input
/usr/local/hadoop/bin/hdfs dfs -put localfile.txt /input
/usr/local/hadoop/bin/hadoop jar
/usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar grep /input /output 'dfs[a-z.]+'
/usr/local/hadoop/bin/hdfs dfs -cat /output/*

Шаг 11: Настройка переменных окружения

Добавьте bin и sbin директории в системный PATH.

echo 'export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin' >> ~/.bashrc
source ~/.bashrc

Готово! Вы успешно настроили и установили Apache Hadoop на Ubuntu 20.04!

Заключение

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

Если вы только изучаете Hadoop и хотите поэкспериментировать с ним, рекомендую развернуть его как single-node с ограниченным дистрибутивом. Для этой цели отлично подойдёт VPS. Cloudzy предлагает широкий выбор Linux VPS сервисы включая надёжный Ubuntu VPS который можно быстро настроить и превратить в идеальную площадку для изучения Hadoop. От 4,95 $ в месяц — получите собственный Ubuntu VPS с выбором из более чем 12 локаций и круглосуточной поддержкой!

ubuntu-vps Очевидный выбор

Большинство серверов на Linux работают на Ubuntu. Узнайте, почему его выбирают снова и снова, и получите оптимизированный Ubuntu VPS.

Получить Ubuntu VPS

Часто задаваемые вопросы

В чём разница между HDFS и MapReduce?

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

Является ли Hadoop базой данных?

Hadoop — не база данных, хотя это заблуждение встречается часто. По своей сути это распределённая файловая система для хранения и обработки больших объёмов данных с помощью сети взаимосвязанных компьютеров. Использовать Hadoop как прямую замену традиционной СУБД не стоит.

Каковы четыре основных компонента Hadoop?

Hadoop состоит из четырёх основных компонентов: HDFS (Hadoop Distributed File System), YARN (Yet Another Resource Negotiator), MapReduce и Hadoop Common. Некоторые источники также относят к компонентам ZooKeeper, хотя официально он таковым не считается.

Где обычно применяется Hadoop?

Hadoop применяется в самых разных областях, где необходимы хранение, обработка и анализ больших объёмов данных. Он подходит для задач самого разного масштаба — от среднего бизнеса и больниц до быстрорастущих стартапов.

Поделиться

Другие статьи блога

Читать дальше.

Оригинальный символ MongoDB на фоне футуристического сервера для установки MongoDB на Ubuntu+ слоган о том, что читателя ждёт в статье + заголовок статьи + логотип Cloudzy
Базы данных и аналитика

Как установить MongoDB на три последние версии Ubuntu (пошаговое руководство)

Итак, вы решили использовать MongoDB — достойную альтернативу MariaDB для создания приложений на стеке MERN, аналитических платформ или систем на основе документов, — но столкнулись с нехваткой нормальной до

Джим ШварцДжим Шварц 12 мин чтения
Грамотное управление данными для бизнеса: облачное хранение и резервное копирование на базе VPS
Базы данных и аналитика

Грамотное управление данными для бизнеса: облачное хранение и резервное копирование на базе VPS

VPS для защиты бизнес-данных — это подход, который я рекомендую каждый раз, когда компания решает перестать хранить файлы на разных ноутбуках, пересылать их по почте и полагаться на давно забытые

Рекса СайрусРекса Сайрус 7 мин чтения
Материализованное представление против обычного представления
Базы данных и аналитика

Материализованное представление и обычное представление: в чём разница и где их применять

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

Айви ДжонсонАйви Джонсон 7 мин чтения

Готовы к деплою? От $2.48/мес.

Независимый облачный провайдер с 2008 года. AMD EPYC, NVMe, 40 Gbps. Возврат средств в течение 14 дней.