Как только бизнес или любая другая задача вырастает до масштабов, требующих нескольких компьютеров, мы начинаем объединять их в единую сеть для более эффективного распределения нагрузки. Сегодня это стало нормой: практически все операции в таких областях, как наука о данных, выполняются на кластерах объединённых машин. Такой подход действительно ускоряет выполнение ресурсоёмких задач, однако и усложняет всё значительно: каждую машину нужно настраивать отдельно, а затем управлять сетью в процессе работы. Именно здесь на помощь приходят такие инструменты, как Hadoop.
- Что такое Apache Hadoop?
- Сценарии использования Hadoop
- Обзор архитектуры Hadoop
- Установка Hadoop на Ubuntu 20.04 — пошаговое руководство
- Требования
- Шаг 1: создайте пользователя без прав root для Hadoop
- Шаг 2: Настройте ключи SSH
- Шаг 3: Скачайте и установите Hadoop на Ubuntu
- Шаг 4: настройка среды Hadoop
- Шаг 5: редактирование файлов конфигурации
- Шаг 6: форматирование HDFS
- Шаг 7: Запуск служб Hadoop
- Шаг 8: Проверка установки
- Шаг 9: Доступ к веб-интерфейсам
- Шаг 10: Запуск примера MapReduce
- Шаг 11: Настройка переменных окружения
- Заключение
- Часто задаваемые вопросы
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 локаций и круглосуточной поддержкой!
Очевидный выбор
Большинство серверов на 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 применяется в самых разных областях, где необходимы хранение, обработка и анализ больших объёмов данных. Он подходит для задач самого разного масштаба — от среднего бизнеса и больниц до быстрорастущих стартапов.