Важно: Данный раздел актуален для Платформы данных On-Premise.
Внимание: Данный документ описывает установку из пакетов напрямую. Для установки RT.DataLake с помощью RT.ClusterManager воспользуйтесь документами из раздела RT.ClusterManager.
RT.DataLake представляет собой масштабируемую платформу с открытым исходным кодом, предназначенную для хранения, обработки и анализа больших объёмов данных.
Платформа спроектирована так, чтобы обеспечить быструю, лёгкую и незатратную загрузку данных различного формата из большого количества источников.
Платформа представляет собой комплекс сервисов, которые обеспечивают не только хранение и обработку данных, но и управление, безопасность и операции.
Платформа включает в себя Hadoop, который состоит из MapReduce, Hadoop Distributed File System (HDFS) и Yet Another Resource Negotiator (YARN), а также другие компоненты экосистемы Hadoop.
Все компоненты интегрированы друг с другом и протестированы на совместимость.
Доступны следующие варианты установки RT.DataLake:
Данный документ освещает тему ручной установки средствами операционной системы RedOS. При развертывании программного обеспечения на других операционных системах могут быть отличия в названии менеджера пакетов (в deb-подобных системах используется менеджер пакетов apt-get вместо yum), а также в специфичных для системы файлах конфигурации (например, в таких как список установленных репозиториев и т.д.)
Рабочие нагрузки Hadoop и HBase, как правило, сильно различаются, и требуется опыт, чтобы правильно предвидеть объёмы хранения, вычислительной мощности и межузловой связи, которые потребуются для различных видов работ. Этот раздел даёт представление о выборе подходящих аппаратных компонентов для оптимального баланса между производительностью и начальными, а также текущими затратами.
Hadoop — это программная среда, которая поддерживает крупномасштабный распределённый анализ данных на обычных серверах. Ростелеком является основным участником инициатив с открытым исходным кодом (Hadoop, HDFS, Hive) и имеет обширный опыт управления кластерами Hadoop производственного уровня. Ростелеком рекомендует следовать принципам проектирования, которые обеспечивают крупномасштабное развёртывание.
Для кластера Hadoop критически важно точно предсказать размер, тип, частоту и задержку выполняемых заданий анализа. Приступая к Hadoop, начните с малого и приобретите опыт, измеряя фактические рабочие нагрузки в ходе пилотного проекта. Таким образом, можно легко масштабировать пилотную среду без внесения каких-либо значительных изменений в существующие серверы, программное обеспечение, стратегии развёртывания и сетевые подключения.
Кластеры Hadoop имеют два типа машин:
Узлы DataNodes и NodeManager размещаются или разворачиваются совместно для оптимального размещения данных.
Ростелеком рекомендует разделять узлы Master и Slave, потому что:
В целях оценки можно развернуть Hadoop с помощью установки с тремя узлами (главные процессы находятся на первых двух машинах и подчинённые процессы находятся на всех машинах кластера).
Для небольшого двухузлового кластера можно установить NameNode и ResourceManager на главном узле, а DataNode и NodeManager — на подчинённом узле.
Кластеры из трёх или более машин обычно используют один NameNode и ResourceManager со всеми другими узлами в качестве подчинённых узлов. Высокодоступный кластер (High-Availability HA) будет использовать первичный и вторичный NameNode, а также может использовать первичный и вторичный ResourceManager.
Как правило, кластер Hadoop от среднего до большого размера состоит из двух- или трёхуровневой архитектуры, построенной на основе установленных в стойку серверов. Каждая стойка серверов соединяется между собой с помощью коммутатора 1 Gigabyte Ethernet (GbE). Каждый коммутатор уровня стойки подключается к коммутатору уровня кластера (который обычно представляет собой коммутатор 10GbE с большей плотностью портов). Эти коммутаторы уровня кластера могут также взаимодействовать с другими коммутаторами уровня кластера или даже подключаться к другому уровню инфраструктуры коммутации.
Дисковое пространство, пропускная способность ввода-вывода (требуемая для Hadoop) и вычислительная мощность (необходимая для процессов MapReduce) являются наиболее важными параметрами для точного определения размера оборудования.
Когда команда только начинает работать с Hadoop, обычно лучше начать с малого и получить опыт, измеряя фактические рабочие нагрузки во время пилотного проекта. Мы рекомендуем начать с относительно небольшого пилотного кластера, подготовленного для «сбалансированной» рабочей нагрузки.
Следует использовать рекомендации по оборудованию серверных узлов в качестве передовых методов для выбора количества узлов, вариантов хранения на узел (количество дисков, размер дисков, MTBF и стоимость репликации сбоев дисков), вычислительной мощности на узел (сокеты, ядра, тактовая частота), ОЗУ на узел и возможности сети (количество, скорость портов).
Помимо аппаратного обеспечения, должны учитываться такие факторы, как использование кодирования стирания для ёмкости хранилища, вес серверных стоек, масштабируемость кластера и другие факторы для кластера Hadoop.
Достижение оптимальных результатов от реализации Hadoop начинается с выбора правильных аппаратных и программных стеков. Усилия, затраченные на этапах планирования, могут значительно окупиться с точки зрения производительности и общей стоимости владения (TCO), связанной с окружающей средой.
Поддерживается система RED OS7.2/7.3, Centos 7, RHEL 7, Ubuntu 20.04
На каждый хост необходимо установить следующее программное обеспечение:
Также необходимо проинсталлировать JDK, установка которого описана в п. 2.4.
Ваша система должна иметь Java Development Kit (JDK), корректно установленный на всех узлах кластера.
Требования к JDK представлены в таблице ниже.
Таблица 2— Поддерживаемые JDK
Наименование |
Поддерживаемые версии |
---|---|
Liberica Java | bellsoft-java8 (версия выше 302) |
OpenJDK | JDK8 (версия выше 151) |
Внимание. Перед включением Kerberos в кластер необходимо проверить, что включено использование криптографии Java (Java Cryptography Extension (JCE)) на всех узлах кластера. Для получения дополнительной информации см. п. 2.1.4.2. |
В следующих разделах описано, как установить и настроить JDK.
Выполните следующие действия для ручной установки JDK 1.8:
1. Если у вас нет каталога /usr/java, создайте его:
mkdir /usr/java
2. Загрузите 64-разрядный JDK для Oracle (jdk-8u51-linux-x64.tar.gz) с официального сайта Oracle.
3. Установите загруженный JDK, используя команду:
yum install java-1.8.0-openjdk-devel
4. Проверьте версию. Она должна быть выше версии 151:
java –version
Вы увидите вывод, похожий на следующий:
openjdk version "1.8.0_161"
OpenJDK Runtime Environment (build 1.8.0_161-b14)
OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)
5. Создайте символическую ссылку (симлинк) для JDK:
ln -s /usr/lib/jvm/java-1.8.0 / /usr/java/default
6. Установите переменные окружения JAVA_HOME и PATH:
export JAVA_HOME=/usr/java/default
export PATH=$JAVA_HOME/bin:$PATH.1.4.2 ВключениеJCE
Проверьте, что расширение JCE установлено и включено.
jrunscript -e 'exit
(javax.crypto.Cipher.getMaxAllowedKeyLength("RC5") >= 256 ? 0 : 1);';
echo $?
Вывод команды должен следующим:
0
Если вывод команды отличен от 0, то необходимо включить расширение JCE, присвоив значение unlimited параметру crypto.policy в файле конфигурации $JAVA_HOME/jre/lib/security/java:
crypto.policy=unlimited
Если вы устанавливаете проект Hive, вы должны установить базу данных для хранения метаданных в репозитории. Вы можете использовать существующий экземпляр базы данных или установить новый экземпляр вручную.
Требования к репозиторию представлены в таблице ниже.
Таблица 3— Поддерживаемые репозитории
Наименование |
Поддерживаемые версии |
---|---|
PostgreSQL | 12 11 10.7 10.5 10.2 9.6 9.5 9.4 9.3 9.2 9.1.13+ |
MariaDB | 10.2 10.1 10 |
MySQL | 5.7 5.6 5.5 |
В следующих разделах описано, как установить и настроить репозиторий.
Администратор базы данных должен создать следующих пользователей и указать следующее значения:
Примечание. По умолчанию Hive использует базу данных Derby для репозитория. Но Derby не поддерживается для промышленных систем. |
Следующие инструкции объясняют, как установить PostgreSQL в качестве репозитория.
Для получения инструкций по установке других поддерживаемых баз данных см. стороннюю документацию.
Внимание. Прежде чем использовать PostgreSQL в качестве репозитория Hive, проконсультируйтесь с официальной документацией PostgreSQL и убедитесь, что вы используете драйвер JDBC 4+, который соответствует вашей реализации PostgreSQL. |
Используйте следующие инструкции для установки нового экземпляра PostgreSQL:
1. Используя окно терминала, подключитесь к хост-машине, на которой вы планируете развернуть экземпляр PostgreSQL:
yum install postgresql-server
2. Запустите экземпляр:
/etc/init.d/postgresql start
Для некоторых более новых версий PostgreSQL может потребоваться выполнить команду:
/etc/init.d/postgresql initdb
3. Переконфигурируйте сервер PostgreSQL:
Измените значение #listen_addresses='localhost' на listen_addresses='*'.
Удалите комментарии из строки «port =» и укажите значение порта (по умолчанию 5432).
host all all 0.0.0.0/0 trust
standard_conforming_strings = off
4. Создайте пользователей для сервера PostgreSQL, войдя в систему в качестве пользователя root и введите следующий синтаксис:
echo "CREATE DATABASE $dbname;" | sudo -u $postgres psql -U postgres
echo "CREATE USER $user WITH PASSWORD '$passwd';" | sudo -u $postgres psql -
U postgres
echo "GRANT ALL PRIVILEGES ON DATABASE $dbname TO $user;" | sudo -u
$postgres psql -U postgres
Предыдущий синтаксис должен иметь следующие значения:
Примечание. Чтобы получить доступ к репозиторию Hive, вы должны создать hive_dbuser после установки Hive. |
5. На хосте репозитория Hive установите коннектор:
yum install postgresql-jdbc*
6. Убедитесь, что файл .jar находится в каталоге общего ресурса Java:
ls -l /usr/share/java/postgresql-jdbc.jar
В этом разделе описывается, как установить MariaDB в качестве репозитория.
Внимание. Если вы устанавливаете на РЕД ОС, настоятельно рекомендуется установить из репозитория, используя yum. |
Выполните следующие действия для установки нового экземпляра MariaDB на РЕД ОС:
Предполагается, что вы назовёте свой файл MariaDB.repo.
Ниже приведён пример файла MariaDB.repo для РЕД ОС 7:
[mariadb]
name=MariaDB
baseurl=http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
В этом примере строка gpgkey автоматически выбирает ключ GPG, который используется для подписи хранилища. gpgkey позволяет yum и rpm проверять целостность пакетов, которые он загружает. ID ключа подписи MariaDB — 0xcbcb082a1bb943db. Короткая форма идентификатора — 0x1BB943DB и полный отпечаток ключа — 1993 69E5 404B D5FC 7D2F E43B CBCB 082A 1BB9 43DB.
Если вы хотите исправить версию на более раннюю, следуйте инструкциям по добавлению репозитория MariaDB YUM.
3. Если у вас не установлен ключ подписи MariaDB GPG, YUM предложит вам установить его после загрузки пакетов. Если вам будет предложено сделать это, установите ключ подписи MariaDB GPG.
4. Используйте следующую команду для установки MariaDB:
sudo yum install MariaDB-server MariaDB-client
5. Если у вас уже установлен пакет MariaDB-Galera-server, вам может потребоваться удалить его до установки MariaDB-server. Если вам нужно удалить MariaDB-Galera-server, используйте следующую команду:
sudo yum remove MariaDB-Galera-server
Базы данных не удаляются, если rpm-пакет MariaDB-Galera-server удалён, хотя при любом обновлении лучше иметь резервные копии.
6. Установите TokuDBчерез YUM, следуя инструкциям на Установка TokuDB.
7. Используйте одну из следующих команд для запуска MariaDB:
sudo systemctl start mariadb
sudo /etc/init.d/ mariadb start
В этом разделе описывается, как установить MySQL в качестве репозитория. Инструкции по установке других поддерживаемых баз данных смотрите в сторонней документации.
Внимание. Если вы используете MySQL в качестве репозитория Hive, вы должны использовать mysqlconnector-java-5.1.35.zip или более позднюю версию драйвера JDBC. |
Чтобы установить новый экземпляр MySQL:
1. Подключитесь к хост-машине, которую вы планируете использовать для Hive.
2. Установите сервер MySQL.
В окне терминала введите:
yum install mysql-community-release
3. Запустите экземпляр.
/etc/init.d/mysqld start
4. Временный пароль устанавливается автоматически. Чтобы его найти, используйте следующую команду:
sudo grep 'temporary password' /var/log/mysqld.log
5. Удалите ненужную информацию из журнала и STDOUT:
mysqladmin -u root 2>&1 >/dev/null
6. Войдите в MySQL как пользователь root:
mysql -u root -proot
В этом синтаксисе «root» — автоматически созданный пароль пользователя root.
7. Войдите в систему как пользователь root, создайте «dbuser» и предоставьте dbuser соответствующие привилегии:
[root@c6402 /]# mysql -u root -proot
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 5.1.73 Source distribution
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'mynewAWESOMEpassw0rd^^';
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE USER 'dbuser'@'localhost' IDENTIFIED BY 'dbuser';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'dbuser'@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE USER 'dbuser'@'%' IDENTIFIED BY 'dbuser';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'dbuser'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'dbuser'@'localhost' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'dbuser'@'%' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)
mysql>
8. Используйте команду exit для выхода из MySQL.
9. Теперь вы сможете снова подключиться к базе данных как «dbuser», используя следующую команду:
mysql -u dbuser -pdbuser
После тестирования входа в систему через dbuser, используйте команду exit для выхода из MySQL.
10. Установите коннектор MySQL файл .jar:
yum install mysql-connector-java*
Чтобы настроить репозиторий на РЕД ОС:
sudo tee <<EOF -a /etc/yum.repos.d/rt.repo
[rt]
name=rt
baseurl=https://$YOUR_LOGIN:$YOUR_PASSWORD@repo.data.rt.ru/repository/rt.datalake_distr3.0.0_rpm_stable/
enabled=1
gpgcheck=0
EOF
Чтобы настроить репозиторий на Ubuntu:
vi /etc/apt/sources.list
# добавить строку
deb [trusted=yes] https://$YOUR_LOGIN:$YOUR_PASSWORD@repo.data.rt.ru/repository/rt.datalake_distr3.3.0_deb_stable/ focal main
# выполнить команду
apt-get update
Можно развернуть Hadoop на одном хосте, но лучше использовать как минимум четыре хоста: один master-хост и три slave-хоста.
Чтобы развернуть Hadoop, вам потребуется следующая информация:
hostname -f
Примечание. Если вы используете существующий экземпляр, dbuser, который вы создаёте для Hadoop должен получить все привилегии для этого экземпляра. |
Для развёртывания экземпляра Hadoop необходимо подготовить среду развёртывания, как представлено ниже в разделе.
Часы всех узлов в вашем кластере должны быть синхронизированы. Если ваша система не имеет доступа к Интернету, вам нужно настроить главный узел в качестве x-сервера NTP для достижения этой синхронизации.
Используйте следующие инструкции для включения NTP для вашего кластера:
1. Настройте NTP-клиентов, выполнив следующую команду на каждом узле в кластере:
yum install ntp
systemctl enable ntpd
systemctl start ntpd
2. Включите службу, выполнив следующую команду на каждом узле в кластере:
chkconfig ntpd on
3. Запустите NTP. Выполните следующую команду на всех узлах вашего кластера:
/etc/init.d/ntpd start
4. Если вы хотите использовать существующий NTP-сервер в качестве х-сервера в вашей среде, завершите следующие шаги:
# iptables -A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state
--state NEW -p udp --dport 123 -j ACCEPT
# service iptables save
# service iptables restart
server $LOCAL_SERVER_IP OR HOSTNAM
Функция Security-Enhanced (SE) Linux должна быть отключена во время процесса установки.
1. Проверьте состояние SELinux. На всех хост-машинах выполните следующую команду:
getenforce
Если команда возвращает «disabled» или «permissive» в качестве ответа, дальнейшие действия не выполняются. Если результат «enabled», перейдите к следующему шагу.
2. Отключите SELinux временно для каждого сеанса или навсегда:
setenforce 0
Поскольку определённые порты должны быть открыты и доступны во время установки, вы должны временно отключить iptables. Если протоколы безопасности при вашей установке не позволяют отключить iptables, вы можете продолжить с ними, если все соответствующие порты открыты и доступны; в противном случае установка кластера завершится неудачно.
systemctl stop firewalld
systemctl mask firewalld
Перезапустите firewalld после завершения настройки.
Внимание. Если оставить iptables включённым и не настроить необходимые порты, установка кластера завершится неудачно. |
Вы должны настроить определённых пользователей и каталоги для вашей установки Hadoop, используя следующие инструкции:
1. Определите каталоги.
В следующей таблице описаны каталоги, необходимые для установки, настройки, хранения данных, идентификаторов процессов и информации журнала на основе служб Hadoop, которые вы планируете установить. Используйте эту таблицу, чтобы определить, что вы собираетесь использовать для настройки вашей среды.
Таблица 4— Каталоги, необходимые для установки Core Hadoop
Сервис Hadoop |
Параметры |
Описание |
---|---|---|
HDFS | DFS_NAME_DIR |
Разделённый пробелами список каталогов, в которых NameNode должен хранить образ файловой системы. Например, /grid/hadoop/hdfs/nn /grid1/hadoop/hdfs/nn. |
HDFS | DFS_DATA_DIR |
Разделённый пробелами список каталогов, в которых DataNodes должен хранить блоки. Например, /grid/hadoop/hdfs/dn /grid1/hadoop/hdfs/dn /grid2/hadoop/hdfs/dn. |
HDFS | FS_CHECKPOINT_DIR |
Разделённый пробелами список каталогов, где SecondaryNameNode должен хранить изображение контрольной точки. Например, /grid/hadoop/hdfs/snn /grid1/hadoop/hdfs/snn /grid2/hadoop/hdfs/snn. |
HDFS | HDFS_LOG_DIR |
Каталог для хранения логов HDFS. Это имя каталога является комбинацией каталога и $HDFS_USER. Например, /var/log/hadoop/hdfs, где hdfs — это $HDFS_USER. |
HDFS | HDFS_PID_DIR |
Каталог для хранения идентификаторов процессов HDFS. Это имя каталога является комбинацией каталога и $HDFS_USER. Например, /var/run/hadoop/hdfs, где hdfs — это $HDFS_USER. |
HDFS | HADOOP_CONF_DIR |
Каталог для хранения файлов конфигурации Hadoop. Например, /etc/hadoop/conf. |
YARN | YARN_LOCAL_DIR |
Разделённый пробелами список каталогов, в которых YARN должен хранить временные данные. Например, /grid/hadoop/yarn /grid1/hadoop/yarn /grid2/hadoop/yarn. |
YARN | YARN_LOG_DIR |
Каталог для хранения логов YARN. Например, /var/log/hadoop/yarn. Это имя каталога является комбинацией каталога и $YARN_USER. В примере yarn — это $YARN_USER. |
YARN | YARN_LOCAL_LOG_DIR |
Разделённый пробелами список каталогов, в которых YARN хранит данные журнала контейнера. Например, /grid/hadoop/yarn/logs /grid1/hadoop/yarn/log. |
YARN | YARN_PID_DIR |
Каталог для хранения идентификаторов процессов YARN. Например, /var/run/hadoop/yarn. Это имя каталога является комбинацией каталога и $YARN_USER. В примере yarn — это $YARN_USER. |
Таблица 5— Каталоги, необходимые для установки компонентов экосистемы
Сервис Hadoop |
Параметры |
Описание |
---|---|---|
Hive | HIVE_CONF_DIR |
Каталог для хранения файлов конфигурации Hive. Например, /etc/hive/conf. |
Hive | HIVE_LOG_DIR |
Каталог для хранения логов Hive. Например, /var/log/hive. |
Hive | HIVE_PID_DIR |
Каталог для хранения идентификаторов процессов Hive. Например, /var/run/hive. |
Если вы используете сопутствующие файлы, на следующем экране представлен пример того, как должен выглядеть ваш файл directoryies.sh после редактирования переменных, содержащих в названии «TODO»:
#!/bin/sh
#
# Directories Script
#
# 1. To use this script, you must edit the TODO variables below for your
environment.
#
# 2. Warning: Leave the other parameters as the default values. Changing
these default values requires you to
# change values in other configuration files.
#
#
# Hadoop Service - HDFS
#
# Space separated list of directories where NameNode stores file system
image. For example, /grid/hadoop/hdfs/nn /grid1/hadoop/hdfs/nn
DFS_NAME_DIR="TODO-LIST-OF-NAMENODE-DIRS";
# Space separated list of directories where DataNodes stores the blocks. For
example, /grid/hadoop/hdfs/dn /grid1/hadoop/hdfs/dn /grid2/hadoop/hdfs/dn
DFS_DATA_DIR="TODO-LIST-OF-DATA-DIRS";
# Space separated list of directories where SecondaryNameNode stores
checkpoint image. For example, /grid/hadoop/hdfs/snn /grid1/hadoop/hdfs/
snn /grid2/hadoop/hdfs/snn
FS_CHECKPOINT_DIR="TODO-LIST-OF-SECONDARY-NAMENODE-DIRS";
# Directory to store the HDFS logs.
HDFS_LOG_DIR="/var/log/hadoop/hdfs";
# Directory to store the HDFS process ID.
HDFS_PID_DIR="/var/run/hadoop/hdfs";
# Directory to store the Hadoop configuration files.
HADOOP_CONF_DIR="/etc/hadoop/conf";
#
# Hadoop Service - YARN
#
# Space separated list of directories where YARN stores temporary data. For
example, /grid/hadoop/yarn/local /grid1/hadoop/yarn/local /grid2/hadoop/
yarn/local
YARN_LOCAL_DIR="TODO-LIST-OF-YARN-LOCAL-DIRS";
# Directory to store the YARN logs.
YARN_LOG_DIR="/var/log/hadoop/yarn";
# Space separated list of directories where YARN stores container log data.
For example, /grid/hadoop/yarn/logs /grid1/hadoop/yarn/logs /grid2/hadoop/
yarn/logs
YARN_LOCAL_LOG_DIR="TODO-LIST-OF-YARN-LOCAL-LOG-DIRS";
# Directory to store the YARN process ID.
YARN_PID_DIR="/var/run/hadoop/yarn";
#
# Hadoop Service - MAPREDUCE
#
# Directory to store the MapReduce daemon logs.
MAPRED_LOG_DIR="/var/log/hadoop/mapred";
# Directory to store the mapreduce jobhistory process ID.
MAPRED_PID_DIR="/var/run/hadoop/mapred";
#
# Hadoop Service - Hive
#
# Directory to store the Hive configuration files.
HIVE_CONF_DIR="/etc/hive/conf";
# Directory to store the Hive logs.
HIVE_LOG_DIR="/var/log/hive";
# Directory to store the Hive process ID.
HIVE_PID_DIR="/var/run/hive";
#
# Hadoop Service - WebHCat (Templeton)
#
# Directory to store the WebHCat (Templeton) configuration files.
WEBHCAT_CONF_DIR="/etc/hcatalog/conf/webhcat";
# Directory to store the WebHCat (Templeton) logs.
WEBHCAT_LOG_DIR="var/log/webhcat";
# Directory to store the WebHCat (Templeton) process ID.
WEBHCAT_PID_DIR="/var/run/webhcat";
#
# Hadoop Service - HBase
#
# Directory to store the HBase configuration files.
HBASE_CONF_DIR="/etc/hbase/conf";
# Directory to store the HBase logs.
HBASE_LOG_DIR="/var/log/hbase";
# Directory to store the HBase logs.
HBASE_PID_DIR="/var/run/hbase";
#
# Hadoop Service - ZooKeeper
#
# Directory where ZooKeeper stores data. For example, /grid1/hadoop/
zookeeper/data
ZOOKEEPER_DATA_DIR="TODO-ZOOKEEPER-DATA-DIR";
# Directory to store the ZooKeeper configuration files.
ZOOKEEPER_CONF_DIR="/etc/zookeeper/conf";
# Directory to store the ZooKeeper logs.
ZOOKEEPER_LOG_DIR="/var/log/zookeeper";
# Directory to store the ZooKeeper process ID.
ZOOKEEPER_PID_DIR="/var/run/zookeeper";
#
# Hadoop Service - Pig
#
# Directory to store the Pig configuration files.
PIG_CONF_DIR="/etc/pig/conf";
# Directory to store the Pig logs.
PIG_LOG_DIR="/var/log/pig";
# Directory to store the Pig process ID.
PIG_PID_DIR="/var/run/pig";
#
# Hadoop Service - Oozie
#
# Directory to store the Oozie configuration files.
OOZIE_CONF_DIR="/etc/oozie/conf"
# Directory to store the Oozie data.
OOZIE_DATA="/var/db/oozie"
# Directory to store the Oozie logs.
OOZIE_LOG_DIR="/var/log/oozie"
# Directory to store the Oozie process ID.
OOZIE_PID_DIR="/var/run/oozie"
# Directory to store the Oozie temporary files.
OOZIE_TMP_DIR="/var/tmp/oozie"
#
# Hadoop Service - Sqoop
#
SQOOP_CONF_DIR="/etc/sqoop/conf"
#
# Hadoop Service - Accumulo
#
ACCUMULO_CONF_DIR="/etc/accumulo/conf";
ACCUMULO_LOG_DIR="/var/log/accumulo"
2. В следующей таблице описаны системные учётные записи и группы пользователей. Используйте эту таблицу, чтобы определить, что вы собираетесь использовать при настройке вашей среды. Эти пользователи и группы должны отражать учётные записи, которые вы создаёте в разделе «Создание системных пользователей и групп» (п. 2.7). Загруженный вами файл scripts.zip содержит скрипт usersAndGroups.sh для настройки параметров среды пользователя и группы.
Таблица 6— Определение пользователей и групп для систем
Параметры |
Описание |
---|---|
HDFS_USER |
Пользователь, владеющий сервисами Hadoop Distributed File System Hadoop (HDFS). Например, hdfs. |
YARN_USER |
Пользователь, владеющий сервисами YARN. Например, yarn. |
HIVE_USER |
Пользователь, владеющий сервисами HIVE. Например, hive. |
HADOOP_GROUP |
Общая группа, разделяемая службами. Например, hadoop. |
KNOX_USER |
Пользователь, владеющий сервисами Knox Gateway. Например, knox. |
Внимание. Параметры, представленные в таблице, должны быть выставлены в системе. Для этого в файле /etc/profile.d/hadoop.sh примените настройки export HDFS_USER=hdfs. |
Как правило, службы Hadoop должны принадлежать конкретным пользователям, а не пользователям root или приложений. В следующей таблице приведены типичные пользователи служб Hadoop. Если вы решите установить компоненты Hadoop с помощью RPM, эти пользователи будут настроены автоматически.
Если вы не устанавливаете с помощью RPM или хотите использовать других пользователей, вы должны определить пользователей, которых вы хотите использовать для своих служб Hadoop, и общую группу Hadoop и создать эти учётные записи в своей системе.
Чтобы создать эти учётные записи вручную, необходимо выполнить следующую процедуру:
useradd -G <groupname> <username>
Таблица 7— Типичные пользователи системы и группы
Сервис Hadoop |
Пользователь |
Группа |
---|---|---|
HDFS | hdfs | hadoop |
YARN | yarn | hadoop |
Hive | hive | hadoop |
Knox Gateway | knox | hadoop |
Вы можете использовать любой из двух способов определения параметров конфигурации памяти YARN, перечисленных в разделе.
Скрипт утилиты Hadoop является рекомендуемым методом для расчёта параметров конфигурации памяти Hadoop, но информация, полученная при вычислении параметров конфигурации памяти YARN вручную, также может быть использована.
В этом разделе описывается, как использовать скрипт yarn-utils.py для расчёта параметров выделения памяти YARN, Hive на основе спецификаций оборудования узла.
Скачайте скрипт yarn-utils.py
#!/usr/bin/env python
'''
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
'''
import optparse
from pprint import pprint
import logging
import sys
import math
import ast
''' Reserved for OS + DN + NM, Map: Memory => Reservation '''
reservedStack = { 4:1, 8:2, 16:2, 24:4, 48:6, 64:8, 72:8, 96:12,
128:24, 256:32, 512:64}
''' Reserved for HBase. Map: Memory => Reservation '''
reservedHBase = {4:1, 8:1, 16:2, 24:4, 48:8, 64:8, 72:8, 96:16,
128:24, 256:32, 512:64}
GB = 1024
def getMinContainerSize(memory):
if (memory <= 4):
return 256
elif (memory <= 8):
return 512
elif (memory <= 24):
return 1024
else:
return 2048
pass
def getReservedStackMemory(memory):
if (reservedStack.has_key(memory)):
return reservedStack[memory]
if (memory <= 4):
ret = 1
elif (memory >= 512):
ret = 64
else:
ret = 1
return ret
def getReservedHBaseMem(memory):
if (reservedHBase.has_key(memory)):
return reservedHBase[memory]
if (memory <= 4):
ret = 1
elif (memory >= 512):
ret = 64
else:
ret = 2
return ret
def main():
log = logging.getLogger(__name__)
out_hdlr = logging.StreamHandler(sys.stdout)
out_hdlr.setFormatter(logging.Formatter(' %(message)s'))
out_hdlr.setLevel(logging.INFO)
log.addHandler(out_hdlr)
log.setLevel(logging.INFO)
parser = optparse.OptionParser()
memory = 0
cores = 0
disks = 0
hbaseEnabled = True
parser.add_option('-c', '--cores', default = 16,
help = 'Number of cores on each host')
parser.add_option('-m', '--memory', default = 64,
help = 'Amount of Memory on each host in GB')
parser.add_option('-d', '--disks', default = 4,
help = 'Number of disks on each host')
parser.add_option('-k', '--hbase', default = True,
help = 'True if HBase is installed, False is not')
(options, args) = parser.parse_args()
cores = int (options.cores)
memory = int (options.memory)
disks = int (options.disks)
hbaseEnabled = ast.literal_eval(options.hbase)
log.info("Using cores=" + str(cores) + " memory=" + str(memory) + "GB" +
" disks=" + str(disks) + " hbase=" + str(hbaseEnabled))
minContainerSize = getMinContainerSize(memory)
reservedStackMemory = getReservedStackMemory(memory)
reservedHBaseMemory = 0
if (hbaseEnabled):
reservedHBaseMemory = getReservedHBaseMem(memory)
reservedMem = reservedStackMemory + reservedHBaseMemory
usableMem = memory - reservedMem
memory -= (reservedMem)
if (memory < 2):
memory = 2
reservedMem = max(0, memory - reservedMem)
memory *= GB
containers = int (max(3, min(2 * cores,
min(math.ceil(1.8 * float(disks)),
memory/minContainerSize))))
log.info("Profile: cores=" + str(cores) + " memory=" + str(memory) + "MB"
+ " reserved=" + str(reservedMem) + "GB" + " usableMem="
+ str(usableMem) + "GB" + " disks=" + str(disks))
container_ram = abs(memory/containers)
if (container_ram > GB):
container_ram = int(math.floor(container_ram / 512)) * 512
log.info("Num Container=" + str(containers))
log.info("Container Ram=" + str(container_ram) + "MB")
log.info("Used Ram=" + str(int (containers*container_ram/float(GB))) + "GB")
log.info("Unused Ram=" + str(reservedMem) + "GB")
log.info("yarn.scheduler.minimum-allocation-mb=" + str(container_ram))
log.info("yarn.scheduler.maximum-allocation-mb=" + str(containers*container_ram))
log.info("yarn.nodemanager.resource.memory-mb=" + str(containers*container_ram))
map_memory = math.floor(container_ram / 2)
reduce_memory = container_ram
am_memory = min(map_memory, reduce_memory)
log.info("mapreduce.map.memory.mb=" + str(int(map_memory)))
log.info("mapreduce.map.java.opts=-Xmx" + str(int(0.8 * map_memory)) +"m")
log.info("mapreduce.reduce.memory.mb=" + str(int(reduce_memory)))
log.info("mapreduce.reduce.java.opts=-Xmx" + str(int(0.8 * reduce_memory)) + "m")
log.info("yarn.app.mapreduce.am.resource.mb=" + str(int(am_memory)))
log.info("yarn.app.mapreduce.am.command-opts=-Xmx" + str(int(0.8*am_memory)) + "m")
log.info("mapreduce.task.io.sort.mb=" + str(int(min(0.4 * map_memory, 1024))))
pass
if __name__ == '__main__':
try:
main()
except(KeyboardInterrupt, EOFError):
print("\nAborting ... Keyboard Interrupt.")
sys.exit(1)
Чтобы запустить скрипт yarn-utils.py, выполните следующую команду из папки, содержащей следующие параметры скрипта yarn-utils.py.
Таблица 8— Параметры скрипта yarn-utils.py
Параметры |
Описание |
---|---|
-c CORES |
Количество ядер на каждом хосте. |
-m MEMORY |
Объём памяти на каждом хосте, в гигабайтах. |
-d DISKS |
Количество дисков на каждом хосте. |
-k HBASE |
True, если HBase установлен; False, если нет. |
Примечание. Требуется Python 2.7 для запуска. Вы также можете использовать параметр -h или -help для отображения сообщения справки, в котором описаны параметры. |
В этом разделе описывается, как вручную настроить параметры выделения памяти YARN в соответствии со спецификациями оборудования узла.
YARN учитывает все доступные вычислительные ресурсы на каждой машине в кластере. Основываясь на доступных ресурсах, YARN согласовывает запросы ресурсов от приложений, работающих в кластере. Затем YARN предоставляет вычислительную мощность каждому приложению, выделяя контейнеры. Контейнер является базовой единицей вычислительной мощности в YARN и представляет собой инкапсуляцию элементов ресурсов, таких как память и процессор.
В кластере Hadoop важно сбалансировать использование памяти (ОЗУ), процессоров (процессорных ядер) и дисков, чтобы обработка не была ограничена каким-либо из этих ресурсов кластера. Как общая рекомендация, использование двух контейнеров на диск и ядро даёт лучший баланс для использования кластера.
При определении соответствующих конфигураций памяти YARN для узла кластера следует начинать с доступных аппаратных ресурсов. В частности, обратите внимание на следующие значения на каждом узле:
Общий объём доступной оперативной памяти для YARN должен учитывать зарезервированную память. Зарезервированная память — это оперативная память, необходимая системным процессам и другим процессам Hadoop:
зарезервированная память = резерв памяти стека + резерв памяти HBase (если HBase находится на том же узле)
Вы можете использовать значения в следующей таблице, чтобы определить, что вам нужно для зарезервированной памяти на узел.
Таблица 9— Рекомендации зарезервированной памяти
Общая память на узел |
Рекомендуемая зарезервированная системная память |
Рекомендуемая зарезервированная память HBase |
---|---|---|
4 Гб | 1 Гб | 1 Гб |
8 Гб | 2 Гб | 1 Гб |
16 Гб | 2 Гб | 2 Гб |
24 Гб | 4 Гб | 4 Гб |
48 Гб | 6 Гб | 8 Гб |
64 Гб | 8 Гб | 8 Гб |
72 Гб | 8 Гб | 8 Гб |
96 Гб | 12 Гб | 16 Гб |
128 Гб | 24 Гб | 24 Гб |
256 Гб | 32 Гб | 32 Гб |
512 Гб | 64 Гб | 64 Гб |
После того, как вы определите объём памяти, который вам нужен для каждого узла, вы должны определить максимально допустимое количество контейнеров на узел:
Количество контейнеров = min (2 * CORES, 1.8 * DISKS, (общий объём доступной оперативной памяти) / MIN_CONTAINER_SIZE)
В следующей таблице приведены рекомендуемые значения.
Таблица 10— Рекомендуемый размер контейнера
Общее ОЗУ на узел |
Рекомендуемый минимальный размер контейнера |
---|---|
Менее 4 Гб |
256 Мб |
4 ‒ 8 Гб |
512 Мб |
8 ‒ 24 Гб |
1024 Мб |
Более 24 Гб |
2048 Мб |
Наконец, вы должны определить объём оперативной памяти на контейнер:
ОЗУ на контейнер = макс. (MIN_CONTAINER_SIZE, (общая доступная ОЗУ на контейнеры)
Используя результаты всех предыдущих расчётов, вы можете настроить YARN.
Таблица 11— Значения конфигурации YARN
Файл конфигурации |
Настройка конфигурации |
Расчёт значения |
---|---|---|
yarn-site.xml | yarn.nodemanager.resource.memory-mb | = количество контейнеров * ОЗУ на контейнер |
yarn-site.xml | yarn.scheduler.minimum-allocation-mb | = ОЗУ на контейнер |
yarn-site.xml | yarn.scheduler.maximum-allocation-mb | = количество контейнеров * ОЗУ на контейнер |
mapred-site.xml | mapreduce.map.memory.mb | = ОЗУ на контейнер |
mapred-site.xml | mapreduce.reduce.memory.mb | = 2 * ОЗУ на контейнер |
mapred-site.xml | mapreduce.map.java.opts | = 0,8 * ОЗУ на контейнер |
mapred-site.xml | mapreduce.reduce.java.opts | = 0,8 * 2 * ОЗУ на контейнер |
mapred-site.xml | yarn.app.mapreduce.am.resource.mb | = 2 * ОЗУ на контейнер |
mapred-site.xml | yarn.app.mapreduce.am.command-opts | = 0,8 * 2 * ОЗУ на контейнер |
Примечание. После установки файлы yarn-site.xml и mapred-site.xml находятся в каталоге /etc/hadoop/conf. |
Примеры:
Предположим, что узлы вашего кластера имеют 12 ядер ЦП, 48 Гб ОЗУ и 12 дисков.
Зарезервированная память = 6 Гб, резерв системной памяти + 8 Гб для минимального размера контейнера HBase = 2 Гб.
Если HBase отсутствует, вы можете использовать следующий расчёт:
Количество контейнеров = мин (2 * 12, 1,8 * 12, (48 - 6) / 2) = мин (24, 21,6, 21) = 21
ОЗУ на контейнер = макс. (2, (48 - 6) / 21) = макс. (2, 2) = 2
Таблица 12— Пример расчёта значений без HBase
Конфигурация |
Расчёт значения |
---|---|
yarn.nodemanager.resource.memory-mb | = 21 * 2 = 42 * 1024 Мб |
yarn.scheduler.minimum-allocation-mb | = 2 * 1024 Мб |
yarn.scheduler.maximum-allocation-mb | = 21 * 2 = 42 * 1024 Мб |
mapreduce.map.memory.mb | = 2 * 1024 Мб |
mapreduce.reduce.memory.mb | = 2 * 2 = 4 * 1024 Мб |
mapreduce.map.java.opts | = 0,8 * 2 = 1,6 * 1024 Мб |
mapreduce.reduce.java.opts | = 0,8 * 2 * 2 = 3,2 * 1024 Мб |
yarn.app.mapreduce.am.resource.mb | = 2 * 2 = 4 * 1024 Мб |
yarn.app.mapreduce.am.command-opts | = 0,8 * 2 * 2 = 3,2 * 1024 Мб |
Если HBase включён:
Количество контейнеров = мин (2 * 12, 1,8 * 12, (48 – 6 - 8) / 2) = мин (24, 21,6, 17) = 17
ОЗУ на контейнер = макс. (2, (48-6-8) / 17) = макс. (2, 2) = 2
Таблица 13— Пример расчёта значений с учётом HBase
Конфигурация |
Расчёт значения |
---|---|
yarn.nodemanager.resource.memory-mb | = 17 * 2 = 34 * 1024 Мб |
yarn.scheduler.minimum-allocation-mb | = 2 * 1024 Мб |
yarn.scheduler.maximum-allocation-mb | = 17 * 2 = 34 * 1024 Мб |
mapreduce.map.memory.mb | = 2 * 1024 Мб |
mapreduce.reduce.memory.mb | = 2 * 2 = 4 * 1024 Мб |
mapreduce.map.java.opts | = 0,8 * 2 = 1,6 * 1024 Мб |
mapreduce.reduce.java.opts | = 0,8 * 2 * 2 = 3,2 * 1024 Мб |
yarn.app.mapreduce.am.resource.mb | = 2 * 2 = 4 * 1024 Мб |
yarn.app.mapreduce.am.command-opts | = 0,8 * 2 * 2 = 3,2 * 1024 Мб |
Примечание.
Весь кластер доступен для динамического распределения ресурсов задач Map и Reduce по мере необходимости для каждого задания. В предыдущем примере кластера с предыдущими конфигурациями YARN может выделять до 10 mappers (40/4) или 5 reducers (40/8) на каждом узле (или некоторую другую комбинацию mappers и redusers в пределах 40 Гб на каждый узел). |
Размер кучи (heap size) NameNode зависит от многих факторов, таких как количество файлов, количество блоков и нагрузка на систему. В следующей таблице приведены рекомендации по настройке heap size NameNode. Эти настройки должны работать для типичных кластеров Hadoop, в которых количество блоков очень близко к числу файлов (обычно среднее отношение количества блоков на файл в системе составляет 1,1 к 1,2).
Некоторые кластеры могут потребовать дальнейшей настройки следующих параметров. Кроме того, обычно лучше установить общую кучу (heap) Java на более высокое значение.
Таблица 14— Рекомендуемые параметры heap size NameNode
Количество файлов, в миллионах |
Общий heapsizeJava (Xmx и Xms) |
Young generation size (-XX:NewSize - XX:MaxNewSize) |
---|---|---|
< 1 | 1126 м | 128 м |
1 ‒ 5 | 3379 м | 512 м |
5 ‒ 10 | 5913 м | 768 м |
10 ‒ 20 | 10982 м | 1280 м |
20 ‒ 30 | 16332 м | 2048 м |
30 ‒ 40 | 21401 м | 2560 м |
40 ‒ 50 | 26752 м | 3072 м |
50 ‒ 70 | 36889 м | 4352 м |
70 ‒ 100 | 52659 м | 6144 м |
100 ‒ 125 | 65612 м | 7680 м |
125 ‒ 150 | 78566 м | 8960 м |
150 ‒ 200 | 104473 м | 8960 м |
Примечание. Рекомендуется использовать не более 300 миллионов файлов на узле NameNode. |
Вы также должны установить -XX:PermSize на 128 м и ‑XX:MaxPermSize на 256 м.
Ниже приведены рекомендуемые настройки для HDFS_NAMENODE_OPTS в файле hadoop-env.sh (заменяя ##### для ‑XX:NewSize, -XX:MaxNewSize, -Xms и -Xmx рекомендуемыми значениями из таблицы).
export HDFS_NAMENODE_OPTS="-server \
-XX:ParallelGCThreads=8 \
-XX:+UseConcMarkSweepGC \
-XX:ErrorFile=/var/log/hadoop/$USER/hs_err_pid%p.log \
-XX:NewSize=128m \
-XX:MaxNewSize=128m \
-Xms1126m \
-Xmx1126m \
-XX:PermSize=128m \
-XX:MaxPermSize=256m \
-Xloggc:/var/log/hadoop/$USER/gc.log-`date +'%Y%m%d%H%M'` \
-verbose:gc \
-XX:+PrintGCDetails \
-XX:+PrintGCTimeStamps \
-XX:+PrintGCDateStamps \
-Dhadoop.security.logger=INFO,DRFAS \
-Dhdfs.audit.logger=INFO,DRFAAUDIT \
-XX:+UseCMSInitiatingOccupancyOnly \
${HDFS_NAMENODE_OPTS} \
-XX:CMSInitiatingOccupancyFraction=70"
Если кластер использует SecondaryNameNode, вам также следует установить HDFS_SECONDARYNAMENODE_OPTS в HDFS_NAMENODE_OPTS в файле hadoopenv.sh:
HDFS_SECONDARYNAMENODE_OPTS=$HDFS_NAMENODE_OPTS
Ещё одна полезная настройка HDFS_NAMENODE_OPTS ‑XX:+HeapDumpOnOutOfMemoryError. Этот параметр указывает, что при возникновении ошибки нехватки памяти должен выполняться дамп heap. Вы также должны использовать -XX:HeapDumpPath, чтобы указать расположение файла дампа heap:
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./etc/heapdump.hprof
Журналы являются важной частью управления и эксплуатации вашего кластера Hadoop. В каталогах и дисках, которые вы назначаете для входа в Hadoop, должно быть достаточно места для ведения журналов во время операций Hadoop. Выделите как минимум 10 Гб свободного места для любого диска, который вы хотите использовать для ведения журнала Hadoop.
В этом разделе описывается, как установить компоненты Hadoop Core: HDFS, YARN и MapReduce.
Выполните следующие действия для установки компонентов Hadoop Core:
Установите права доступа к файлу и каталогу операционной системы по умолчанию на 0022 (022).
Используйте команду umask, чтобы подтвердить, что права доступа установлены по мере необходимости. Например, чтобы увидеть текущие настройки umask, введите:
umask
Если вы хотите установить umask по умолчанию для всех пользователей ОС, отредактируйте файл /etc/profile или другой подходящий файл для конфигурации оболочки в масштабе всей системы.
Убедитесь, что umask установлен для всех сеансов терминала, которые вы используете во время установки.
Выполните следующую команду на всех узлах кластера.
yum install hadoop hadoop-hdfs hadoop-libhdfs hadoop-yarn hadoop-mapreduce
hadoop-client openssl
Создайте каталоги и настройте права владения + разрешения на соответствующих хостах, как описано ниже.
Прежде чем вы начнёте:
Выполните следующие действия для создания соответствующих каталогов:
На узле, на котором размещена служба NameNode, выполните следующие команды:
mkdir -p $DFS_NAME_DIR;
chown -R $HDFS_USER:$HADOOP_GROUP $DFS_NAME_DIR;
chmod -R 755 $DFS_NAME_DIR;
Где:
На всех узлах, которые могут потенциально запускать службу SecondaryNameNode, выполните следующие команды:
mkdir -p $FS_CHECKPOINT_DIR;
chown -R $HDFS_USER:$HADOOP_GROUP $FS_CHECKPOINT_DIR;
chmod -R 755 $FS_CHECKPOINT_DIR;
Где:
На каждом DataNode выполните следующие команды:
mkdir -p $DFS_DATA_DIR;
chown -R $HDFS_USER:$HADOOP_GROUP $DFS_DATA_DIR;
chmod -R 750 $DFS_DATA_DIR;
Где:
На каждом ResourceManager и всех узлах данных выполните следующие команды:
mkdir -p $YARN_LOCAL_DIR;
chown -R $YARN_USER:$HADOOP_GROUP $YARN_LOCAL_DIR;
chmod -R 755 $YARN_LOCAL_DIR;
Где:
На каждом ResourceManager и всех узлах данных выполните следующие команды:
mkdir -p $YARN_LOCAL_LOG_DIR;
chown -R $YARN_USER:$HADOOP_GROUP $YARN_LOCAL_LOG_DIR;
chmod -R 755 $YARN_LOCAL_LOG_DIR;
Где:
В этом разделе описывается, как настроить и отредактировать файлы конфигурации развёртывания для HDFS и MapReduce.
Вы должны установить несколько файлов конфигурации для HDFS и MapReduce.
1. В каталоге /etc/hadoop/conf найдите следующие файлы и измените свойства в зависимости от среды.
Ищите TODO в файлах для свойств, которые нужно заменить. Для получения дополнительной информации см. п. 2.6 в данной Инструкции.
<property>
<name>fs.defaultFS</name>
<value>hdfs://$namenode.full.hostname:8020</value>
<description>Enter your NameNode hostname</description>
</property>
<property>
<name>hdp.version</name>
<value>${hdp.version}</value>
<description>Replace with the actual HDP version</description>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/grid/hadoop/hdfs/nn</value>
<description>Comma-separated list of paths. Use the list of directories from $DFS_NAME_DIR. For example, /grid/hadoop/hdfs/nn,/grid1/hadoop/hdfs/nn.</description>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///grid/hadoop/hdfs/dn</value>
<description>Comma-separated list of paths. Use the list of directories from $DFS_DATA_DIR. For example, file:///grid/hadoop/hdfs/dn, file:///grid1/ hadoop/hdfs/dn.</description>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>$namenode.full.hostname:50070</value>
<description>Enter your NameNode hostname for http access.</description>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>$secondary.namenode.full.hostname:50090</value>
<description>Enter your Secondary NameNode hostname.</description>
</property>
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>/grid/hadoop/hdfs/snn,/grid1/hadoop/hdfs/snn,/grid2/hadoop/hdfs/snn</value>
<description>A comma-separated list of paths. Use the list of directories from $FS_CHECKPOINT_DIR. For example, /grid/hadoop/hdfs/snn, sbr/grid1/hadoop/hdfs/ snn,sbr/grid2/hadoop/hdfs/snn </description>
</property>
<property>
<name>dfs.namenode.checkpoint.edits.dir</name>
<value>/grid/hadoop/hdfs/snn</value>
<description>A comma-separated list of paths. Use the list of directories from $FS_CHECKPOINT_DIR. For example, /grid/hadoop/hdfs/snn, sbr/grid1/hadoop/hdfs/snn,sbr/grid2/hadoop/hdfs/snn </description>
</property>
<property>
<name>dfs.namenode.rpc-address</name>
<value>namenode_host_name:8020>
<description>The RPC address that handles all clients requests.</description.>
</property>
<property>
<name>dfs.namenode.https-address</name>
<value>namenode_host_name:50470>
<description>The namenode secure http server address and port.</description.>
</property>
Примечание. Максимальное значение new generationsize NameNode (‑XX:MaxnewSize) должно составлять 1/8 от максимального heap size (‑Xmx). Убедитесь, что вы проверили настройки по умолчанию для вашей среды. |
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>$resourcemanager.full.hostname:8025</value>
<description>Enter your ResourceManager hostname.</description>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>$resourcemanager.full.hostname:8030</value>
<description>Enter your ResourceManager hostname.</description>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>$resourcemanager.full.hostname:8050</value>
<description>Enter your ResourceManager hostname.</description>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>$resourcemanager.full.hostname:8141</value>
<description>Enter your ResourceManager hostname.</description>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/grid/hadoop/yarn/local,/grid1/hadoop/yarn/local</value>
<description>Comma separated list of paths. Use the list of directories from $YARN_LOCAL_DIR.For example, /grid/hadoop/yarn/local,/grid1/hadoop/yarn/ local.</description>
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>/grid/hadoop/yarn/log</value>
<description>Use the list of directories from $YARN_LOCAL_LOG_DIR. For example, /grid/hadoop/yarn/log,/grid1/hadoop/yarn/log,/grid2/hadoop/yarn/log</description>
</property>
<property>
<name>yarn.nodemanager.recovery</name.dir>
<value>{hadoop.tmp.dir}/yarn-nm-recovery</value>
</property>
<property>
<name>yarn.log.server.url</name>
<value>http://$jobhistoryserver.full.hostname:19888/jobhistory/logs/</value>
<description>URL for job history server</description>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>$resourcemanager.full.hostname:8088</value>
<description>URL for job history server</description>
</property>
<property>
<name>yarn.timeline-service.webapp.address</name>
<value><Resource_Manager_full_hostname>:8188</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>$jobhistoryserver.full.hostname:10020</value>
<description>Enter your JobHistoryServer hostname.</description>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>$jobhistoryserver.full.hostname:19888</value>
<description>Enter your JobHistoryServer hostname.</description>
</property>
2. На каждом узле кластера создайте пустой файл с именем dfs.exclude внутри $HADOOP_CONF_DIR. Добавьте следующее в /etc/profile:
touch $HADOOP_CONF_DIR/dfs.exclude
export JAVA_HOME=/usr/java/default
JAVA_HOME=<java_home_path>
export JAVA_HOME
HADOOP_CONF_DIR=/etc/hadoop/conf/
export HADOOP_CONF_DIR
export PATH=$PATH:$JAVA_HOME:$HADOOP_CONF_DIR
3. [Опционально] Если вы используете LinuxContainerExecutor, вы должны настроить container-executor.cfg в каталоге config. Файл должен принадлежать пользователю root: root. Настройки имеют вид key=value с одним ключом на строку. Там должны быть записи для всех ключей. Если вы не хотите назначать значение для ключа, вы можете оставить его неустановленным в виде key=#.
Ключи определены следующим образом:
4. Замените параметры конфигурации памяти по умолчанию в yarn-site.xml и mapredsite.xml на параметры конфигурации памяти YARN и MapReduce, которые вы вычислили ранее. Заполните значения памяти/ЦП, которые соответствуют тому, что документация или вспомогательные сценарии предлагают для вашей среды.
5. Скопируйте файлы конфигурации.
rm -rf $HADOOP_CONF_DIR
mkdir -p $HADOOP_CONF_DIR
где $HADOOP_CONF_DIR — это каталог для хранения файлов конфигурации Hadoop. Например, /etc/hadoop/conf.
chown -R $HDFS_USER:$HADOOP_GROUP $HADOOP_CONF_DIR/../
chmod -R 755 $HADOOP_CONF_DIR/../
Где:
6. Задайте параметры Concurrent Mark-Sweep (CMS) Garbage Collector (GC).
На хосте NameNode откройте файл etc/hadoop/conf/hadoop-env.sh.
Найдите export HADOOP_NAMENODE_OPTS=<parameters> и добавьте следующие параметры:
-XX:+UseCMSInitiatingOccupancyOnly
-XX:CMSInitiatingOccupancyFraction=70
По умолчанию CMS GC использует набор эвристических правил для запуска сборки мусора. Это делает сборку мусора менее предсказуемой и приводит к задержке сбора до тех пор, пока старое поколение не будет почти полностью занято. Его предварительное инициирование позволяет завершить сборку мусора до того, как старое поколение заполнится, и, таким образом, избежать полного сбора мусора (то есть пауза «stop-the-world»).
Выполните следующие действия, чтобы запустить ядро Hadoop и выполнить smoke test:
1. Измените значение JAVA_HOME в файле hadoop-env.sh:
export JAVA_HOME=/usr/java/default
2. Выполните следующие команды на NameNode:
/etc/init.d/hadoop-hdfs-namenode init
/etc/init.d/hadoop-hdfs-namenode start
3. Выполните следующие команды на SecondaryNameNode:
hdfs --daemon start secondarynamenode
4. Выполните следующие команды на всех DataNodes:
hdfs --daemon start datanode
1. Определите, можете ли вы подключиться к серверу NameNode с помощью браузера:
http://$namenode.full.hostname:50070
2. Создайте каталог пользователя hdfs в HDFS:
su - $HDFS_USER
hdfs dfs -mkdir -p /user/hdfs
3. Попробуйте скопировать файл в HDFS и перечислить этот файл:
hdfs dfs -copyFromLocal /etc/passwd passwd
hdfs dfs -ls
4. Используйте веб-интерфейс NameNode и меню Утилиты для просмотра файловой системы.
После установки Hadoop измените ваши настройки.
1. Скопируйте mapred-site.xml из сопутствующих файлов и внесите следующие изменения в mapred-site.xml:
<property>
<name>mapreduce.admin.map.child.java.opts</name>
<value>-server -Djava.net.preferIPv4Stack=true</value>
<final>true</final>
</property>
<property>
<name>mapreduce.admin.user.env</name>
<value>LD_LIBRARY_PATH=/usr/lib/hadoop/lib/native</value>
</property>
<property>
<name>mapreduce.application.framework.path</name>
<value>$HADOOP_CONF_DIR/*,$HADOOP_COMMON_HOME/*,$HADOOP_COMMON_HOME/lib/*,$HADOOP_HDFS_HOME/*,$HADOOP_HDFS_HOME/lib/*,$HADOOP_MAPRED_HOME/*,$HADOOP_MAPRED_HOME/lib/*,$HADOOP_YARN_HOME/*,$HADOOP_YARN_HOME/lib/*</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>$HADOOP_CONF_DIR/*,$HADOOP_COMMON_HOME/*,$HADOOP_COMMON_HOME/lib/*,$HADOOP_HDFS_HOME/*,$HADOOP_HDFS_HOME/lib/*,$HADOOP_MAPRED_HOME/*,$HADOOP_MAPRED_HOME/lib/*,$HADOOP_YARN_HOME/*,$HADOOP_YARN_HOME/lib/*</value>
</property>
2. Скопируйте файл yarn-site.xml из сопутствующих файлов и измените:
<property>
<name>yarn.application.classpath</name>
<value>$HADOOP_CONF_DIR,$HADOOP_COMMON_HOME/*,HADOOP_COMMON_HOME/lib/*,$HADOOP_HDFS_HOME/*,$HADOOP_HDFS_HOME/lib/*,$HADOOP_MAPRED_HOME/*,$HADOOP_MAPRED_HOME/lib/*,$HADOOP_YARN_HOME/*,$HADOOP_YARN_HOME/lib/*</value>
</property>
3. Для защищённых кластеров вы должны создать и настроить файл конфигурации container-executor.cfg:
yarn.nodemanager.linux-container-executor.group=hadoop
banned.users=hdfs,yarn,mapred
min.user.id=1000
Установите права доступа к файлу /etc/hadoop/conf/container-executor.cfg только для пользователя root:
chown root:hadoop /etc/hadoop/conf/container-executor.cfg
chmod 400 /etc/hadoop/conf/container-executor.cfg
chown root:hadoop /usr/lib/hadoop-yarn/bin/container-executor
chmod 6050 /usr/lib/hadoop-yarn/bin/container-executor
1. В качестве $YARN_USER выполните следующую команду с сервера ResourceManager:
su -l yarn -c "/etc/init.d/hadoop-yarn-resourcemanager start
--config $HADOOP_CONF_DIR start resourcemanager"
2. В качестве $YARN_USER выполните следующую команду со всех узлов NodeManager:
su -l yarn -c "/etc/init.d/hadoop-yarn-nodemanager start
--config $HADOOP_CONF_DIR start nodemanager"
Где:
1. Выполните эти команды с сервера JobHistory, чтобы настроить каталоги в HDFS:
hdfs dfs -mkdir -p /tmp/hadoop-yarn/staging/history/done
hdfs dfs -chmod 1770 /tmp/hadoop-yarn/staging/history/done
hdfs dfs -chown $MAPRED_USER:$MAPRED_USER_GROUP /tmp/hadoop-yarn/staging/history/done
hdfs dfs -mkdir -p /tmp/hadoop-yarn/staging/history/done_intermediate
hdfs dfs -chmod 1770 /tmp/hadoop-yarn/staging/history/done_intermediate
hdfs dfs -chown $MAPRED_USER:$MAPRED_USER_GROUP /tmp/hadoop-yarn/staging/history/done_intermediate
hdfs dfs -mkdir -p /app-logs
hdfs dfs -chmod 1777 /app-logs
hdfs dfs -chown $YARN_USER:$HADOOP_GROUP /app-logs
2. Выполните следующую команду с сервера JobHistory:
/etc/init.d/hadoop-mapreduce-historyserver start
Где:
1. Перейдите к ResourceManager:
http://$resourcemanager.full.hostname:8088/
2. Создайте $CLIENT_USER на всех узлах и добавьте его в группу пользователей.
useradd client
usermod -a -G users client
3. Как пользователь HDFS, создайте /user/$CLIENT_USER.
sudo su - $HDFS_USER
hdfs dfs -mkdir /user/$CLIENT_USER
hdfs dfs -chown $CLIENT_USER:$CLIENT_USER /user/$CLIENT_USER
hdfs dfs -chmod -R 755 /user/$CLIENT_USER
4. Перед запуском smoke test произведите настройки. В файл etc/hadoop/conf/hadoop-env.sh добавьте следующее:
export HADOOP_CLIENT_OPTS="-Xmx4G $HADOOP_CLIENT_OPTS"
5. Запустите smoke test как $CLIENT_USER, предварительно перейдя под него от пользователя root. Используя terasort, отсортируйте 10 Гб данных.
su - $CLIENT_USER
hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar teragen 10000 tmp/teragenout
hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar terasort tmp/teragenout tmp/terasortout
В этом разделе описывается установка и тестирование Hive, инструмента для создания SQL-запросов более высокого уровня с использованием HiveQL, его родного языка, который можно скомпилировать в последовательности программ MapReduce. В нём также описывается установка и тестирование HCatalog, уровня абстракции метаданных, который изолирует пользователей и скрипты от того, как и где физически хранятся данные.
Выполните следующие действия для установки Hive и HCatalog:
Примечание. Рекомендуется изменить лимит на количество процессов, которые может использовать пользователь hive. Для этого в файл /etc/security/limits.conf необходимо добавить записи, представленные ниже. |
Для незащищённых кластеров:
<hive user ID> soft nproc 128
<hive user ID> hard nproc 1024
Для защищённых кластеров:
<hive user ID> soft nproc 128
<hive user ID> hard nproc 32768
1. На всех клиентских/шлюзовых узлах (на которых выполняются программы Hive), Hive Metastore Server и машине HiveServer2 установите RPM-пакеты Hive.
yum install hive-hcatalog
2. [Опционально] Загрузите и установите файл .jar коннектора базы данных для базы данных Hive metastore.
По умолчанию Hive использует встроенную базу данных Derby для своего репозитория. Однако Derby не рекомендуется для производственного использования. Используйте MySQL, SQL Server или Postgres для производственного использования.
Вам необходимо установить соответствующий JDBC-коннектор для вашего репозитория Hive.
Ростелеком рекомендует использовать встроенный экземпляр репозитория Hive с HiveServer2. Внедренный репозиторий работает в том же процессе с HiveServer2, а не как отдельный демон.
Внимание. Если вы используете MySQL, вы должны использовать mysql-connector-java-5.1.35.zip или более позднюю версию драйвера JDBC. |
Например, если вы ранее установили MySQL, вы бы использовали следующие шаги для установки коннектора MySQL JDBC:
Для РЕД ОС:
yum install mysql-connector-java*
cp /usr/share/java/mysql-connector-java.jar /usr/lib/hive/lib
ls -la /usr/lib/hive/lib/mysql-connector-java.jar
-rw-r--r-- 1 root root /usr/lib/hive/lib/mysql-connector-java.jar
Примечание. При использовании HiveServer2 в режиме HTTP вы должны настроить отображение из принципалов Kerberos на короткие имена в параметре свойства hadoop.security.auth_to_local в файле core-site.xml. |
Используйте следующие инструкции для настройки файлов конфигурации Hive/HCatalog.
1. Измените файлы конфигурации.
В каталоге /etc/hive/conf отредактируйте файл hive-site.xml и измените свойства в зависимости от вашей среды.
Отредактируйте свойства подключения для вашего репозитория Hive в hive-site.xml в соответствии с вашей собственной кластерной средой.
Внимание. Чтобы предотвратить утечки памяти в небезопасном режиме, отключите кэши файловой системы, установив для следующих параметров значение true в hive-site.xml:
|
2. [Опционально] Если вы хотите авторизацию Hive на основе хранилища, задайте следующие параметры авторизации Hive в файле hive-site.xml:
<property>
<name>hive.metastore.pre-event.listeners</name>
<value>org.apache.hadoop.hive.ql.security.authorization.
AuthorizationPreEventListener</value>
</property>
<property>
<name>hive.security.metastore.authorization.manager</name>
<value>org.apache.hadoop.hive.ql.security.authorization.
StorageBasedAuthorizationProvider</value>
</property>
<property>
<name>hive.security.authenticator.manager</name>
<value>org.apache.hadoop.hive.ql.security.ProxyUserAuthenticator</
value>
</property>
3. Для удалённого репозитория Hive используйте следующее значение свойства hive-site.xml, чтобы задать IP-адрес (или полное доменное имя) и порт хоста репозитория.
<property>
<name>hive.metastore.uris</name>
<value>thrift://$metastore.server.full.hostname:9083</value>
<description>URI for client to contact metastore server. To enable HiveServer2, leave the property value empty.</description>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://$metastore.server.full.name:3306/metastore?serverTimezone=UTC</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>myhiveAWESOMEpassw0rd^^</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://$metastore.server.full.name:9083</value>
<description>URI for client to contact metastore server. To enable HiveServer2, leave the property value empty.</description>
</property>
</configuration>
Чтобы включить HiveServer2 для удалённых клиентов Hive, присвойте этому свойству пустое значение. Ростелеком рекомендует использовать встроенный экземпляр Hive Metastore с HiveServer2. Встроенный репозиторий работает в том же процессе с HiveServer2, а не как отдельный демон. Вы также можете настроить HiveServer2 для использования встроенного экземпляра репозитория из командной строки:
hive --service hiveserver2 -hiveconf hive.metastore.uris=""
4. [Опционально] По умолчанию Hive обеспечивает уникальность имён столбцов в результатах запроса, возвращаемых для операторов SELECT, путём добавления имён столбцов с псевдонимом таблицы.
Администраторы, которым не нужен префикс псевдонима таблицы для имён столбцов таблицы, могут отключить это поведение, установив следующее свойство конфигурации:
<property>
<name>hive.resultset.use.unique.column.names</name>
<value>false</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>myhiveAWESOMEpassw0rd^^</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://HOSTNAME:9083</value>
<description>URI for client to contact metastore server. To enable HiveServer2, leave the property value empty.</description>
</property>
</configuration>
Внимание. Ростелеком рекомендует при развертывании отключить кэш DataNucleus, установив для параметра конфигурации datanucleus.cache.level2.type значение none. Параметр конфигурации datanucleus.cache.level2 игнорируется, и присвоение этому параметру значения none не дает желаемого эффекта. |
Используйте следующие шаги, чтобы настроить базу данных для вашего Hive Metastore. Этот шаг должен быть выполнен при первом запуске репозитория.
1. Прежде чем настроить базу данных для Hive Metastore, в файл /etc/profile.d/hadoop.sh добавьте следующую строчку:
export HIVE_HOME=/usr/lib/hive
2. Добавьте пользователя hive в mysql и добавьте ему гранты, используя команду:
# mysql -u root -pmynewAWESOMEpassw0rd^^
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 55
Server version: 8.0.21 MySQL Community Server - GPL
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
create user 'hive'@'fqdn_машины_пользователя_c_hive’ identified by "myhiveAWESOMEpassw0rd^^";
create user 'hive'@'localhost' identified by 'myhiveAWESOMEpassw0rd^^';
create database hive;
grant ALL ON hive.* TO 'hive'@'fqdn_машины_пользователя_c_hive’;
grant ALL ON hive.* TO 'hive'@'localhost';
create database metastore;
grant ALL ON metastore.* TO 'hive'@'fqdn_машины_пользователя_c_hive’;
grant ALL ON metastore.* TO 'hive'@'localhost';
flush privileges;
flush hosts;
3) Инициализируйте схему базы данных Hive Metastore:
$HIVE_HOME/bin/schematool -initSchema -dbType $databaseType
Значение для $databaseType может быть derby, mysql или postgres.
$HIVE_HOME по умолчанию настроен на /usr/lib/hive.
4. Отключить автосоздание схем. Отредактируйте файл hive-site.xml, чтобы установить для значения datanucleus.autoCreateSchema значение false:
<property>
<name>datanucleus.autoCreateSchema</name>
<value>false</value>
<description>Creates necessary schema on a startup if one doesn't
exist</ description>
</property>
5. Запустите службу Hive Metastore.
su - hive -c "nohup /usr/lib/hive/hive-metastore/bin/hive --service
metastore>/var/log/hive/hive.out 2>/var/log/hive/hive.log &"
Примечание. После выполнения команды su -hive вы можете получить следующую ошибку: su hive This account is currently not available. Если вы получите эту ошибку, вам может потребоваться переназначить оболочку $HIVE_USER. Вы можете подтвердить это, посмотрев следующую строку в etc/passwd: hive:x:493:493:Hive:/var/lib/hive:/sbin/nologin63 Это указывает на то, что $HIVE_USER назначен оболочке sbin/nologin, которая блокирует доступ. Вы можете использовать следующую команду, чтобы назначить $HIVE_USER для оболочки bin/bash. sudo chsh -s /bin/bash hive Эта команда должна вернуть следующее: Changing shell for hive. Shell changed. После этого вы сможете успешно выполнить команду su -$HIVE_USER. |
6. Smoke test Hive.
hive
hive> show databases;create table test(col1 int, col2 string); show tables;
show databases;create table test(col1 int, col2 string); show tables;
OK
default
Time taken: 0.619 seconds, Fetched: 1 row(s)
OK
Time taken: 0.531 seconds
OK
test
Time taken: 0.063 seconds, Fetched: 1 row(s)
7. Запустите HiveServer2:
su - $HIVE
nohup /usr/lib/hive/bin/hiveserver2 >/var/log/hive/hiveserver2.out 2>
/var/log/hive/hiveserver2.log &
8. Smoke test HiveServer2:
beeline -u "jdbc:hive2://" -n hive -p myhiveAWESOMEpassw0rd^^ -d
"org.apache.hive.jdbc.HiveDriver
show databases; create table test2(a int, b string); show table
Для работы с HDFS через командную строку необходимо использовать нативный shell-клиент для HDFS.
Для использования shell-команд, с помощью которых можно взаимодействовать с HDFS, необходимо в терминале запустить скрипт bin/hdfs.
При запуске скрипта bin/hdfs без аргументов будет выведен перечень всех возможных команд.
Чтобы запустить конкретную команду, необходимо воспользоваться синтаксисом и перечнем команд, приведёнными ниже.
Общий синтаксис команд:
hadoop [SHELL_OPTIONS] COMMAND [GENERIC_OPTIONS] [COMMAND_OPTIONS]
Описание параметров и классов команд представлено ниже.
Таблица 16— Параметры и классы
COMMAND_OPTIONS |
Описание |
---|---|
SHELL_OPTIONS |
Общий набор shell-параметров. |
GENERIC_OPTIONS |
Общий набор параметров, поддерживаемый несколькими командами. |
COMMAND COMMAND_OPTIONS |
В следующих пунктах раздела описаны различные пользовательские команды с их параметрами. |
Команда classpath выводит путь к классу, необходимый для получения jar-файла Hadoop и необходимых библиотек.
Если вызывается без аргументов, выводит путь к классам, установленных командными скриптами, который будет содержать символы в записях пути к классам. Дополнительные параметры распечатывают путь к классам после раскрытия подстановочных знаков или записывают путь к классам в манифест файла jar. Последнее полезно в средах, где нельзя использовать подстановочные знаки, а расширенный путь к классам превышает максимальную поддерживаемую длину командной строки.
Синтаксис команды:
hadoop classpath [--glob |--jar <path> |-h |--help]
В команде могут быть использованы следующие параметры команды COMMAND_OPTION:
Команда fs предназначена для работы с распределённой файловой системой HDFS через командную строку.
Синтаксис команды:
hadoop fs [COMMAND [COMMAND_OPTIONS]]
Команды и их параметры COMMAND_OPTIONS представлены в разделах ниже.
Команда appendToFile позволяет добавить один или несколько источников из локальной файловой системы в целевую файловую систему.
Синтаксис команды:
hadoop fs -appendToFile <localsrc> ... <dst>
Пример команды:
hadoop fs -appendToFile localfile1 localfile2 /dir
Команда добавит файлы localfile1 и localfile2 в каталог HDFS dir.
Команда cat выводит источник в стандартный поток вывода — stdout.
Синтаксис команды:
hadoop fs –cat <URI>
Пример команды:
hadoop fs -cat /dir/file.txt
Команда выведет файл в stdout.
Если файл, выводимый в stdout, содержит большой объём данных, то процедура будет выполняться долго.
Пример команды для вывода 100 строк из файла:
hadoop fs -cat /dir/file.txt | head -n 100
Команда выведет только 100 первых строк файла в stdout.
Команда chgrp позволяет изменять групповую ассоциацию файлов. Пользователь должен обладать привилегиями — быть владельцем файлов или суперпользователем.
Синтаксис команды:
hadoop fs -chgrp [-r] GROUP URI [URI ...]
Пример команды:
hadoop fs -chgrp mygroup /dir/file.txt
Команда сменит для файла file.txt группу-владельца на mygroup.
Чтобы рекурсивно сменить группу-владельца для всего каталога (с подкаталогами), необходимо использовать параметр -r.
Пример команды для рекурсивной смены владельца:
hadoop fs -chgrp –r mygroup /dir
Команда сменит для каталога dir и всех его подкаталогов группу-владельца на mygroup.
Команда chmod позволяет изменять права доступа к файлам. Пользователь должен обладать привилегиями — быть владельцем файлов или суперпользователем.
Синтаксис команды:
hadoop fs -chmod [-r] <MODE[,MODE]... | OCTALMODE> URI [URI ...]
Пример команды:
hadoop fs -chmod 777 /dir
Команда изменит для каталога dir права rwx (чтение, выполнение и запись) для всех, кто имеет доступ к серверу (владельца, группы, остальных).
Чтобы рекурсивно изменить права доступа для всего каталога (с подкаталогами), необходимо использовать параметр -r.
Пример команды для рекурсивного изменения прав доступа:
hadoop fs -chmod –r 766 /dir
Команда изменит для каталога dir и всех его подкаталогов права доступа rwx для владельца, rw (чтение, запись) для групп и остальных.
Команда chown позволяет сменить владельца файла. Пользователь должен обладать привилегиями — быть суперпользователем.
Синтаксис команды:
hadoop fs -chown [-R] [OWNER][:[GROUP]] URI [URI ]
Пример команды:
hadoop fs -chown hduser /dir
Команда сменит для каталога dir владельца на hduser.
Чтобы рекурсивно изменить владельца для всего каталога (с подкаталогами), необходимо использовать параметр -r.
Пример команды для рекурсивной смены владельца:
hadoop fs -chown –r hduser /dir
Команда сменит для каталога dir и всех его подкаталогов владельца на hduser.7.1.2.6 [copyFromLocal] Копирование локального файла в HDFS
Команда copyFromLocal позволяет копировать локальный файл в HDFS.
Синтаксис команды:
hadoop fs -copyFromLocal <локальный src> URI
Пример команды:
hadoop fs -copyFromLocal localfile /dir/file
Команда скопирует localfile из локального каталога в каталог HDFS dir с переименованием файла в file.
Команда copyToLocal позволяет копировать файл из HDFS в локальную файловую систему.
Синтаксис команды:
hadoop fs -copyToLocal [-ignorecrc] [-crc] URI <локальное местоназначение>
Пример команды:
hadoop fs -copyToLocal /dir/file localfile
Команда скопирует file из каталога HDFS dir в локальную файловую систему с переименованием файла в localfile.
Команда count позволяет подсчитать количество каталогов, файлов и байтов по путям, которые соответствуют указанному шаблону файла
Синтаксис команды:
hadoop fs -count [-q] <paths>
Пример команды:
hadoop fs -count /dir
Команда подсчитает количество файлов в каталоге dir.
Чтобы вывести столбцы QUOTA, REMAINING_QUATA, SPACE_QUOTA, REMAINING_SPACE_QUOTA, DIR_COUNT, FILE_COUNT, CONTENT_SIZE, FILE_NAME, необходимо использовать параметр -q.
Пример команды:
hadoop fs -count -q /dir
Команда выведет информацию о каталоге dir по вышеописанным столбцам.
Команда cp позволяет скопировать файлы из одного места в другое.
Если копируемый файл содержит большой объём данных, то процедура будет выполняться долго.
Синтаксис команды:
hadoop fs -cp [-f] URI [URI ...] <местоназначение>
Пример команды:
hadoop fs -cp /dir/file1 /otherDir/file2
Команда скопирует file1 из каталога dir в каталог otherDir с переименованием файла в file2.
Команда du позволяет вывести информацию о размерах файлов и каталогов, содержащихся в данном каталоге, или длину файла, если это всего лишь файл.
Синтаксис команды:
hadoop fs -du [-s] [-h] URI [URI ...]
Пример команды:
hadoop fs -du /user /dir
Команда выведет размеры каталогов user и dir.
Чтобы вывести совокупную сводку длин файлов, необходимо использовать параметр -s.
Пример команды для вывода общего размера каталога или файла:
hadoop fs -du -s /dir
Команда выведет информацию об общем размере всех файлов каталога dir.
Чтобы вывести размеры файлов в удобном для чтения виде (в Мб), необходимо использовать параметр -h.
Пример команды для вывода размеров файлов в удобочитаемом виде:
hadoop fs -du -h /user
Команда выведет информацию о размерах каждого файла каталога user в удобном виде.
Команда dus позволяет вывести информацию об общем размере каталога или файла. Является альтернативой команды hdfs dfs -du -s URI.
Синтаксис команды:
hadoop fs -dus URI [URI ...]
Пример команды:
hadoop fs -dus /dir
Команда выведет информацию об общем размере всех файлов каталога dir.
Команда expunge позволяет очистить корзину.
Когда файл удаляется в корзину (командой rm), он не сразу удаляется из HDFS, а переименовывается в файл в каталоге /trash. Пока файл остается там, его можно восстановить.
Синтаксис команды:
hadoop fs -expunge
Пример команды:
hadoop fs -expunge
Команда очистит содержимое корзины.
Команда help позволяет получить список всех команд в скрипте HDFS.
Синтаксис команды:
hadoop fs -help
Команда выведет список возможных команд.
Если в параметрах команды help указать название конкретной команды, то команда выведет информацию по введённой команде.
Синтаксис команды:
hadoop s fs –help <название команды>
Пример команды:
hadoop fs –help ls
Команда выведет информацию по команде ls.
Команда get позволяет копировать файл из HDFS в локальную файловую систему.
Синтаксис команды:
hadoop fs -get [-ignorecrc] [-crc] <src> <localdst>
Пример команды:
hadoop fs -get /dir/file localfile
Команда скопирует file из каталога HDFS dir в локальную файловую систему с переименованием файла в localfile.
Чтобы скопировать файлы, которые не прошли проверку кода циклической избыточности (CRC, Cyclic Redundancy Code), необходимо использовать параметр -ignorecrc.
Пример команды:
hadoop fs -get –ignorecrc /dir/file localfile
CRC является распространенным методом обнаружения ошибок передачи данных. Файлы контрольной суммы CRC имеют расширение .crc и используются для проверки целостности данных другого файла. Чтобы скопировать эти файлы, необходимо указать параметр -crc.
Пример команды:
hadoop fs -get –crc /dir/file localfile
Команда getfacl позволяет вывести списки контроля доступа (ACL, Access Control List) файлов и каталогов.
Синтаксис команды:
hadoop fs -getfacl [-R] <path>
Пример команды:
hadoop fs -getfacl /dir
Команда выведет списки контроля доступа к каталогу dir.
Чтобы рекурсивно вывести списки контроля доступа для всего каталога (с подкаталогами), необходимо использовать параметр -r.
Пример команды для рекурсивного вывода:
hadoop fs -getfacl -r /dir
Команда dsdtltn ACL для каталога dir и всех его подкаталогов.
Команда getmerge позволяет объединять файлы в src и записывать результат в указанный локальный файл назначения.
Чтобы добавить символ новой строки в конце каждого файла, необходимо указать параметр addnl.
Синтаксис команды:
hadoop fs -getmerge <src> <localdst> [addnl]
Пример команды:
hadoop fs -getmerge /dir/ ./file.txt
Команда ls используется для вывода списка (листинга) всех каталогов и статистики файлов.
Синтаксис команды:
hadoop fs -ls <args>
Пример использования команды:
hadoop fs -ls /
Команда выведет следующую информацию по корневому каталогу HDFS:
Команда lsr используется для вывода рекурсивного списка (листинга) всех каталогов (и подкаталогов) и статистики файлов. Является рекурсивной версией команды ls и используется в случае необходимости вывода иерархии каталогов.
Синтаксис команды:
hadoop fs -lsr <args>
Пример использования команды:
hadoop fs -lsr /
Команда mkdir создает новый каталог.
Синтаксис команды:
hadoop fs -mkdir [-p] <paths>
Пример использования команды:
hadoop fs -mkdir /data/new_path
Команда создаст каталог new_path по пути /data.
Команда moveFromLocal позволяет переместить локальный файл в HDFS.
Синтаксис команды:
hadoop fs -moveFromLocal <localsrc> <dst>
Пример команды:
hadoop fs -moveFromLocal localfile /dir/file
Команда скопирует localfile из локального каталога в каталог HDFS dir с переименованием файла в file, а затем удалит исходный файл localfile.
Команда moveToLocal позволяет переместить файл из HDFS в локальную файловую систему.
Синтаксис команды:
hadoop fs -moveToLocal [-crc] <src> <dst>
Пример команды:
hadoop fs -moveToLocal /dir/file localfile
Команда скопирует file из каталога HDFS dir в локальную файловую систему с переименованием файла в localfile, а затем удалит исходный файл.
Команда mv предназначена для перемещения файла из одного места в другое.
Физически перемещение данных не происходит. Происходит указание Namenode, что файл теперь будет храниться в другом каталоге.
Синтаксис команды:
hadoop fs -mv URI [URI ...] <dest>
Пример использования команды:
hadoop fs –mv /dir/file1 /otherDir
Команда переместит file1 из каталога dir в каталог otherDir.
Команда put позволяет копировать локальный файл в HDFS.
Синтаксис команды:
hadoop fs -put <локальный src> ... <местоназначение>
Пример команды:
hadoop fs -put localfile /dir/file
Команда скопирует localfile из локального каталога в каталог HDFS dir с переименованием файла в file.
Команда rm удаляет файл в корзину.
При случайном удалении большого файла его очень трудно восстановить. Поэтому файл сначала помещается в корзину. Корзина — специальный для каждого пользователя каталог. Файлы из него можно удалить или скопировать на прежнее место. Автоматическая очистка корзины задана в параметрах HDFS. Если нужно освободить место в HDFS, то можно удалить файл из корзины.
Синтаксис команды:
hadoop fs -rm [-skipTrash] URI [URI ...]
Пример команды:
hadoop fs -rm /dir/file
Команда удалит file из каталога dir в корзину.
Чтобы удалить безвозвратно файл, необходимо использовать параметр ‑skiptrash.
Пример команды для безвозвратного удаления файла:
hadoop fs -rm -skipTrash /dir/file
Команда удалит file из каталога dir безвозвратно.
Чтобы рекурсивно удалить весь каталог (с подкаталогами), необходимо использовать параметр -r.
Пример команды для рекурсивного удаления каталога:
hadoop fs -rm -r /dir
Команда удалит каталог dir со всеми подкаталогами.
Команда rmr рекурсивно удаляет каталог (со всеми подкаталогами) в корзину.
Синтаксис команды:
hadoop fs -rmr [-skipTrash] URI [URI ...]
Пример команды:
hadoop fs -rmr /dir
Команда удалит каталог dir со всеми подкаталогами.
Команда setfacl позволяет взаимодействовать со списками контроля доступа (ACL, Access Control List) — устанавливать, модифицировать и удалять ACL для файлов и каталогов.
Синтаксис команды:
hadoop fs -setfacl [-r] [-b|-k -m|-x <acl_spec> <path>]|[--set <acl_spec> <path>]
В команде могут быть использованы следующие параметры:
Примеры команды:
hadoop fs -setfacl -m user:hadoop:rw- /file
hadoop fs -setfacl -x user:hadoop /file
hadoop fs -setfacl -b /file
hadoop fs -setfacl -k /dir
hadoop fs -setfacl --set user::rw-,user:hadoop:rw-,group::r--,other::r-- /file
hadoop fs -setfacl -R -m user:hadoop:r-x /dir
hadoop fs -setfacl -m default:user:hadoop:r-x /dir
Команда setrep предназначена для изменения коэффициента репликации для указанного файла или каталога.
Синтаксис команды:
hadoop fs -setrep [-r] [-w] <numReplicas> <path>
В команде могут быть использованы следующие параметры:
Пример команды:
hadoop fs -setrep -w 3 /user/hadoop/dir1
Команда stat предназначена для вывода статистической информации о пути.
Синтаксис команды:
hadoop fs -stat URI [URI ...]
Пример команды:
hadoop fs -stat path
Команда выведет статистику о пути path.
Команда tail позволяет без чтения всего файла вывести только последние строки файла (последний килобайт). Например, можно использовать для чтения логов.
Синтаксис команды:
hadoop fs -tail [-f] URI
Пример использования команды:
hadoop fs -tail /dir/file.txt
Команда выведет последние строки файла.
Команда test выводит атрибуты указанного файла или каталога.
Синтаксис команды:
hadoop fs -test -[ezd] URI
В команде могут быть использованы следующие параметры:
Пример использования команды:
hadoop fs -test -e filename
Команда text является аналогом команды cat, но при этом может служить для разархивирования файлов.
Синтаксис команды:
hadoop fs -text <scr>
Пример использования команды:
hadoop fs -text /dir/file.gz
Команда извлечёт архив и выведет его содержимое.
Команда touchz позволяет создать файл нулевой длины.
Синтаксис команды:
hadoop fs -touchz URI [URI ...]
Пример использования команды:
hadoop fs -touchz /dir
Команда создаст нулевой файл в каталоге dir.
Команда envvars позволяет отобразить вычисленные переменные среды Hadoop.
Синтаксис команды:
hadoop envvars
Команда fetchdt позволяет получить токен делегирования от NameNode.
Синтаксис команды:
hadoop fetchdt <opts> <token_file_path>
В команде могут быть использованы следующие параметры команды COMMAND_OPTION:
Команда fsck позволяет осуществлять проверку файловой системы.
Синтаксис команды:
hadoop fsck <path>
[-list-corruptfileblocks |
[-move | -delete | -openforwrite]
[-files [-blocks [-locations | -racks | -replicaDetails | -upgradedomains]]]
[-includeSnapshots] [-showprogress]
[-storagepolicies] [-maintenance]
[-blockId <blk_Id>]
В команде могут быть использованы следующие параметры команды COMMAND_OPTION:
Команда getconf позволяет получить информацию о настройках из каталогов конфигураций.
Синтаксис команды:
hadoop getconf -namenodes
hadoop getconf -secondaryNameNodes
hadoop getconf -backupNodes
hadoop getconf -journalNodes
hadoop getconf -includeFile
hadoop getconf -excludeFile
hadoop getconf -nnRpcAddresses
hadoop getconf -confKey [key]
В команде могут быть использованы следующие параметры команды COMMAND_OPTION:
Команда groups позволяет получить информацию о группах пользователей с учётом одного или нескольких имён пользователей.
Синтаксис команды:
hadoop groups [username ...]
Команда httpfs позволяет запустить сервер HttpFS, HTTP-шлюз HDFS.
Синтаксис команды:
hadoop httpfs
Команда lsSnapshottableDir позволяет получить список каталогов снапшотов. Когда он запускается от имени суперпользователя, он возвращает все каталоги снапшотов. В противном случае он возвращает те каталоги, которые принадлежат текущему пользователю.
Синтаксис команды:
hadoop lsSnapshottableDir [-help]
В команде могут быть использованы следующие параметры команды COMMAND_OPTION:
Команда jmxget позволяет получить дамп информации JMX из службы.
Синтаксис команды:
hadoop jmxget [-localVM ConnectorURL | -port port | -server mbeanserver | -service service]
В команде могут быть использованы следующие параметры команды COMMAND_OPTION:
Команда oev позволяет вывести просмотрщик и редактор файлов оффлайн.
Синтаксис команды:
hadoop oev [OPTIONS] -i INPUT_FILE -o OUTPUT_FILE
В команде могут быть использованы следующие параметры команды COMMAND_OPTION:
Команда oiv позволяет вывести просмотрщик и редактор изображений оффлайн.
Синтаксис команды:
hadoop oiv [OPTIONS] -i INPUT_FILE
В команде могут быть использованы следующие параметры команды COMMAND_OPTION:
Команда snapshotDiff позволяет определить разницу между снапшотами.
Синтаксис команды:
hadoop snapshotDiff <path> <fromSnapshot> <toSnapshot>
Команда version позволяет посмотреть текущую версию HDFS.
Синтаксис команды:
hadoop version
Команды balancer запускают утилиту балансировки кластера.
Администратор может просто нажать Ctrl-C, чтобы остановить процесс перебалансировки.
Обратите внимание, что политика блочного пула более строгая, чем политика узла данных.
Помимо ниже параметров команды введена функция закрепления, чтобы предотвратить перемещение определённых реплик балансировщиком/движителем. Эта функция закрепления отключена по умолчанию, и её можно включить с помощью свойства конфигурации dfs.datanode.block-pinning.enabled. Когда эта функция включена, она влияет только на блоки, которые записываются в избранные узлы, указанные в вызове create(). Эта функция полезна, когда мы хотим сохранить локальность данных для таких приложений, как HBase regionserver.
Команда policy позволяет произвести балансировку кластера.
Если установлены параметры:
Синтаксис команды:
hadoop balancer [-policy <policy>]
Команда threshold устанавливает процент ёмкости диска. Команда перезаписывает порог по умолчанию.
Синтаксис команды:
hadoop balancer [-threshold <threshold>]
Команда exclude исключает указанные DataNode из балансировки балансировщиком.
Синтаксис команды:
hadoop balancer [-exclude [-f <hosts-file> | <comma-separated list of hosts>]]
Команда include включает только указанные DataNode для балансировки балансировщиком.
Синтаксис команды:
hadoop balancer [-include [-f <hosts-file> | <comma-separated list of hosts>]]
Команда source позволяет выбрать только указанные DataNode в качестве исходных узлов.
Синтаксис команды:
hadoop balancer [-source [-f <hosts-file> | <comma-separated list of hosts>]]
Команда blockpools позволяет сформировать список пулов блоков, с которыми будет работать балансировщик.
Синтаксис команды:
hadoop balancer [-blockpools <comma-separated list of blockpool ids>]
Команда idleiterations устанавливает максимальное количество итераций простоя перед выходом. Команда перезаписывает количество итераций, установленное по умолчанию (5).
Синтаксис команды:
hadoop balancer [-idleiterations <idleiterations>]
Команда runDuringUpgrade разрешает/запрещает запускать балансировщик во время текущего обновления HDFS. Действие является нежелательным, поскольку команда не влияет на используемое пространство на чрезмерно загруженных машинах.
Синтаксис команды:
hadoop balancer [-runDuringUpgrade]
Команда help вызывает справку с информацией об использовании инструмента и последующий выход.
Синтаксис команды:
hadoop balancer [--h | --help]
Команда cacheadmin позволяет работать с кэшированием, а именно: созданием, изменением и перечислением Cache Pools и Cache Directives.
Cache Directives идентифицируются уникальным не повторяющимся 64-битным ID. Идентификаторы не используются повторно, даже если Cache Directive удалена.
Cache Pools идентифицируются по уникальному имени строки.
Сначала следует создать Cache Pools, а затем добавить в него Cache Directives.
Команды и их параметры COMMAND_OPTIONS представлены в разделах ниже.
Команда addDirective позволяет добавить новый Cache Directive.
Синтаксис команды:
hadoop cacheadmin [-addDirective -path <path> -pool <pool-name> [-force] [-replication <replication>] [-ttl <time-to-live>]]
В команде могут быть использованы следующие параметры команды COMMAND_OPTION:
Команда modifyDirective позволяет вносить изменения в метаданные существующего Cache Directive.
Синтаксис команды:
hadoop cacheadmin [-modifyDirective -id <id> [-path <path>] [-force] [-replication <replication>] [-pool <pool-name>] [-ttl <time-to-live>]]
В команде могут быть использованы следующие параметры команды COMMAND_OPTION:
Команда listDirectives позволяет выводить список Cache Directive.
Синтаксис команды:
hadoop cacheadmin [-listDirectives [-stats] [-path <path>] [-pool <pool>] [-id <id>]]
В команде могут быть использованы следующие параметры команды COMMAND_OPTION:
Команда removeDirective позволяет удалить Cache Directive.
Синтаксис команды:
hadoop cacheadmin [-removeDirective <id>]
В команде могут быть использованы следующие параметры команды COMMAND_OPTION:
Команда removeDirectives позволяет удалить все Cache Directive по указанному пути.
Синтаксис команды:
hadoop cacheadmin [-removeDirectives -path <path>]
В команде могут быть использованы следующие параметры команды COMMAND_OPTION:
Команда addPool позволяет добавить новый Cache Directive.
Синтаксис команды:
hadoop cacheadmin [-addPool <name> [-owner <owner>] [-group <group>] [-mode <mode>] [-limit <limit>] [-maxTtl <maxTtl>]]
В команде могут быть использованы следующие параметры команды COMMAND_OPTION:
Команда modifyPool позволяет изменить метаданные существующего Cache Pool.
Синтаксис команды:
hadoop cacheadmin [-modifyPool <name> [-owner <owner>] [-group <group>] [-mode <mode>] [-limit <limit>] [-maxTtl <maxTtl>]]
В команде могут быть использованы следующие параметры команды COMMAND_OPTION:
Команда removePool позволяет удалить Cache Pool. Также удаляет пути, связанные с ним.
Синтаксис команды:
hadoop cacheadmin [-removePool <name>]
В команде могут быть использованы следующие параметры команды COMMAND_OPTION:
Команда listPools позволяет отобразить информацию об одном или нескольких Cache Pool, например, имя, владельца, группу, разрешения и прочее.
Синтаксис команды:
hadoop cacheadmin [-listPools [-stats] [<name>]]
В команде могут быть использованы следующие параметры команды COMMAND_OPTION:
Команда help позволяет отобразить подробную о команде.
Синтаксис команды:
hadoop cacheadmin [-help <command-name>]
В команде могут быть использованы следующие параметры команды COMMAND_OPTION:
Команда crypto позволяет управлять шифрованием.
Команды и их параметры COMMAND_OPTIONS представлены в разделах ниже.
Команда createZone позволяет создать новую зону шифрования.
Синтаксис команды:
hadoop crypto -createZone -keyName <keyName> -path <path>
В команде могут быть использованы следующие параметры команды COMMAND_OPTION:
Команда listZones позволяет перечислить все зоны шифрования. Требуются разрешения суперпользователя.
Синтаксис команды:
hadoop crypto -listZones
Команда provisionTrash позволяет подготовить каталог корзины для зоны шифрования.
Синтаксис команды:
hadoop crypto -provisionTrash -path <path>
В команде могут быть использованы следующие параметры команды COMMAND_OPTION:
Команда help позволяет отобразить подробную информацию о команде.
Синтаксис команды:
hadoop crypto -help <command-name>
В команде могут быть использованы следующие параметры команды COMMAND_OPTION:
Команда datanode позволяет запустить DataNode.
Синтаксис команды:
hadoop datanode [-regular | -rollback | -rollingupgrade rollback]
В команде могут быть использованы следующие параметры команды COMMAND_OPTION:
Команды dfsadmin предназначены для администрирования HDFS.
Ниже в разделах представлены возможные команды для администрирования HDFS.
Команда report позволяет отобразить основную информацию и статистику файловой системы HDFS.
Использование команды dfs может отличаться от использования команды du, поскольку она измеряет необработанное пространство, используемое репликациями, контрольными суммами, снапшотами и т.д. для всех DataNode.
Необязательные параметры команды могут использоваться для фильтрации списка отображаемых узлов данных.
Синтаксис команды:
hadoop dfsadmin [-report [-live] [-dead] [-decommissioning] [-enteringmaintenance] [-inmaintenance]]
Команда safemode предназначена для ручного управления режимом Safemode (безопасным режимом).
Режим Safemode — это состояние узла NameNode, в котором он:
Вход в режим Safemode производится автоматически при запуске NameNode. Выхода из режима производится также автоматически, когда настроенный минимальный процент блоков удовлетворяет минимальному условию репликации. Если NameNode обнаруживает какую-либо аномалию, он будет оставаться в режиме SafeMode до тех пор, пока проблема не будет решена. Если эта аномалия является следствием преднамеренного действия, администратор может использовать команду -safemode forceExit для выхода из режима Safemode.
Случаи, когда может потребоваться использование forceExit:
В режим Safemode можно войти вручную, но тогда из него также необходимо будет выйти вручную.
Синтаксис команды:
hadoop dfsadmin [-safemode enter | leave | get | wait | forceExit]
Команда saveNamespace позволяет сохранить текущее пространство имён в каталогах хранилища и сбросить журнал изменений.
Для выполнения команды требуется вход в режим Safemode. Если задан параметр beforeShutdown, NameNode выполняет контрольную точку тогда и только тогда, когда ни одна контрольная точка не была сделана в течение временного окна (настраиваемое количество периодов контрольной точки). Обычно данная команда используется перед завершением работы NameNode, чтобы предотвратить возможное повреждение fsimage или журналов изменений.
Синтаксис команды:
hadoop dfsadmin [-saveNamespace [-beforeShutdown]]
Команда rollEdits сворачивает журнал редактирования на активном NameNode.
С течением времени количество файлов журнала редактирования растёт, а также NameNode сохраняет старые версии файла fsimage.
Это будет использовать дисковое пространство на NameNode и может вызвать проблемы с диском в более длительной работе кластера. Кроме того, если вторичная NameNode не настроена или работает некорректно, эти файлы редактирования будут создаваться в большом количестве, каждый файл будет содержать примерно 1 миллион транзакций. Из-за этого время запуска NameNode увеличится, и NameNode может даже не запуститься, если памяти будет недостаточно для выполнения операции создания контрольной точки.
Синтаксис команды:
hadoop dfsadmin [-rollEdits]
Команда restoreFailedStorage включает/выключает автоматические попытки восстановления неудачных репликаций хранилища.
Если сбойное хранилище снова станет доступным, система попытается восстановить журнал изменений и/или fsimage во время контрольной точки.
Параметр check вернёт текущую настройку.
Синтаксис команды:
hadoop dfsadmin [-restoreFailedStorage true |false |check]
Команда refreshNodes повторно читает хосты и исключает файлы для обновления перечня DataNodes, которым разрешено подключаться к NameNode, и тех, которые должны быть выведены или повторно введены в эксплуатацию.
Синтаксис команды:
hadoop dfsadmin [-refreshNodes]
Команда setQuota позволяет установить квоту имени, равной N для каждого каталога.
Наилучший вариант для каждого каталога, с сообщением об ошибках, если N не является положительным длинным целым числом, каталог не существует, или это файл, или каталог немедленно превысит новую квоту. Синтаксис команды:
hadoop dfsadmin [-setQuota <quota> <dirname>...<dirname>]
Команда clrQuota позволяет удалить квоту имён для каждого каталога. Наилучший вариант для каждого каталога с сообщением об ошибках, если каталог не существует или является файлом. Если для каталога нет квоты, это не ошибка.
Синтаксис команды:
hadoop dfsadmin [-clrQuota <dirname>...<dirname>]
Команда setSpaceQuota позволяет:
Синтаксис команды:
hadoop dfsadmin [-setSpaceQuota <quota> [-storageType <storagetype>] <dirname>...<dirname>]
Команда clrSpaceQuota позволяет:
Синтаксис команды:
hadoop dfsadmin [-clrSpaceQuota [-storageType <storagetype>] <dirname>...<dirname>]
Команда finalizeUpgrade позволяет завершить обновление HDFS. DataNodes удаляют свою предыдущую резервную копию кластера, которая была сделана во время предыдущего обновления после того, как NameNode произведёт те же действия. После этого считается, что процесс обновления завершён.
Синтаксис команды:
hadoop dfsadmin [-finalizeUpgrade]
Команда rollingUpgrade позволяет выполнять действие последовательного обновления.
Синтаксис команды:
hadoop dfsadmin [-rollingUpgrade [<query> |<prepare> |<finalize>]]
Команда upgrade позволяет запросить текущий статус обновления, используя параметр query, или завершить текущее обновление HDFS, используя параметр finalize.
Синтаксис команды:
hadoop dfsadmin [-upgrade [query | finalize]
Команда refreshServiceAcl позволяет перезагрузить файл политики авторизации на уровне сервиса.
Синтаксис команды:
hadoop dfsadmin [-refreshServiceAcl]
Команда refreshUserToGroupsMappings позволяет обновить сопоставления пользователей и групп.
Синтаксис команды:
hadoop dfsadmin [-refreshUserToGroupsMappings]
Команда refreshSuperUserGroupsConfiguration позволяет обновить сопоставления proxy-групп суперпользователя.
Синтаксис команды:
hadoop dfsadmin [-refreshSuperUserGroupsConfiguration]
Команда refreshCallQueue позволяет перезагрузить очередь вызовов из config.
Синтаксис команды:
hadoop dfsadmin [-refreshCallQueue]
Команда refresh запускает обновление во время выполнения ресурса, указанного в <key> на <host:ipc_port>. Все остальные параметры отправляются на хост.
Синтаксис команды:
hadoop dfsadmin [-refresh <host:ipc_port> <key> [arg1..argn]]
Команда reconfig запускает реконфигурацию или выводит статус текущей реконфигурации, или выводит список реконфигурируемых свойств. Второй параметр указывает тип узла.
Синтаксис команды:
hadoop dfsadmin [-reconfig <namenode|datanode> <host:ipc_port> <start |status |properties>]
Команда printTopology позволяет вывести дерево стоек и их узлов, как передаётся в NameNode.
Синтаксис команды:
hadoop dfsadmin [-printTopology]7.1.19.21 [refreshNamenodes] Перезагрузка файлов конфигурации DataNode
Команда refreshNamenodes перезагружает файлы конфигурации для данного узла NameNode, прекращает обслуживание удалённых пулов блоков и начинает обслуживание новых пулов блоков.
Синтаксис команды:
hadoop dfsadmin [-refreshNamenodes datanodehost:port]
Команда getVolumeReport позволяет получить отчёт об объёме для данного узла NameNode.
Синтаксис команды:
hadoop dfsadmin [-getVolumeReport datanodehost:port]
Команда deleteBlockPool при принудительном вводе каталог пула блоков для данного идентификатора пула блоков на указанном DataNode удаляет пул вместе с его содержимым, в противном случае каталог удаляется только в том случае, если он пуст. Команда завершится ошибкой, если DataNode все ещё обслуживает пул блоков. Используйте команду refreshNamenodes, чтобы завершить работу службы пула блоков на DataNode.
Синтаксис команды:
hadoop dfsadmin [-deleteBlockPool datanode-host:port blockpoolId [force]]
Команда setBalancerBandwidth изменяет пропускную способность сети, используемую каждым DataNode во время балансировки блоков HDFS. <bandwidth> — это максимальное количество байтов в секунду, которое будет использоваться каждым DataNode. Это значение переопределяет параметр dfs.datanode.balance.bandwidthPerSec. Новое значение не сохраняется в DataNode.
Синтаксис команды:
hadoop dfsadmin [-setBalancerBandwidth <bandwidth in bytes per second>]
Команда getBalancerBandwidth позволяет вывести пропускную способность сети (в байтах в секунду) для данного DataNode. Это максимальная пропускная способность сети, используемая DataNode во время балансировки блоков HDFS.
Синтаксис команды:
hadoop dfsadmin [-getBalancerBandwidth <datanode_host:ipc_port>]
Команда fetchImage загружает самый последний fsimage из NameNode и сохраняет его в указанном локальном каталоге.
Синтаксис команды:
hadoop dfsadmin [-fetchImage <local directory>]
Команда allowSnapshot устанавливает разрешение на создание снапшотов каталога. Если операция завершится успешно, каталог станет снапшотом.
Синтаксис команды:
hadoop dfsadmin [-allowSnapshot <snapshotDir>]
Команда disallowSnapshot устанавливает запрет на создание снапшотов каталога. Перед тем, как установить запрет на создание снапшотов, необходимо удалить все снапшоты каталога.
Синтаксис команды:
hadoop dfsadmin [-disallowSnapshot <snapshotDir>]
Команда shutdownDatanode позволяет отправить запрос на завершение работы для данного DataNode.
Синтаксис команды:
hadoop dfsadmin [-shutdownDatanode <datanode_host:ipc_port> [upgrade]]
Команда evictWriters позволяет заставить DataNode завершить все клиентские соединения, которые записывают блок. Это полезно, если вывод из эксплуатации зависает из-за медленной записи.
Синтаксис команды:
hadoop dfsadmin [-evictWriters <datanode_host:ipc_port>]
Команда getDatanodeInfo позволяет получить информацию о данном DataNode.
Синтаксис команды:
hadoop dfsadmin [-getDatanodeInfo <datanode_host:ipc_port>]
Команда metasave позволяет сохранить структуры метаданных NameNode в filename в каталоге, указанном свойством hadoop.log.dir. Filename перезаписывается, если он уже имеется. Filename будет содержать по одной строке для каждого из следующих параметров:
Синтаксис команды:
hadoop dfsadmin [-metasave filename]
Команда triggerBlockReport запускает отчёт о блоках для данного DataNode. Если не указан параметр <incremental>, то запустится отчёт о полном блоке.
Синтаксис команды:
hadoop dfsadmin [-triggerBlockReport [-incremental] <datanode_host:ipc_port>]
Команда listOpenFiles выводит перечень всех открытых файлов, управляемых в настоящий момент узлом NameNode, а также имя клиента и клиентский компьютер, к которому они обращаются. Список открытых файлов будет отфильтрован по заданному типу и пути. Добавляя параметр <blockingDecommission>, будут перечислены только открытые файлы, которые блокируют вывод DataNode из эксплуатации.
Синтаксис команды:
hadoop dfsadmin [-listOpenFiles [-blockingDecommission] [-path <path>]]
Команда help отображает справку для данной команды или всех команд, если ни одна не указана.
Синтаксис команды:
hadoop dfsadmin [-help [cmd]]
Команда dfsrouter запускает маршрутизатор.
Синтаксис команды:
hadoop dfsrouter
Команда dfsrouteradmin предназначена для управления маршрутизатором.
Синтаксис команды:
hadoop dfsrouteradmin
[-add <source> <nameservice1, nameservice2, ...> <destination> [-readonly] [-order HASH|LOCAL|RANDOM|HASH_ALL] -owner <owner> -group <group> -mode <mode>]
[-update <source> <nameservice1, nameservice2, ...> <destination> [-readonly] [-order HASH|LOCAL|RANDOM|HASH_ALL] -owner <owner> -group <group> -mode <mode>]
[-rm <source>]
[-ls <path>]
[-setQuota <path> -nsQuota <nsQuota> -ssQuota <quota in bytes or quota size string>]
[-clrQuota <path>]
[-safemode enter | leave | get]
[-nameservice disable | enable <nameservice>]
[-getDisabledNameservices]
В команде могут быть использованы следующие параметры команды COMMAND_OPTION:
Команда diskbalancer предназначена для управления балансировщиком.
Синтаксис команды:
hadoop diskbalancer
[-plan <datanode> -fs <namenodeURI>]
[-execute <planfile>]
[-query <datanode>]
[-cancel <planfile>]
[-cancel <planID> -node <datanode>]
[-report -node <file://> | [<DataNodeID|IP|Hostname>,...]]
[-report -node -top <topnum>]
В команде могут быть использованы следующие параметры команды COMMAND_OPTION:
Команда ec запускает интерфейс командной строки ErasureCoding.
Синтаксис команды:
hadoop ec [generic options]
[-setPolicy -policy <policyName> -path <path>]
[-getPolicy -path <path>]
[-unsetPolicy -path <path>]
[-listPolicies]
[-addPolicies -policyFile <file>]
[-listCodecs]
[-enablePolicy -policy <policyName>]
[-disablePolicy -policy <policyName>]
[-help [cmd ...]]
В команде могут быть использованы следующие параметры команды COMMAND_OPTION:
Команда haadmin предназначена для управления состояниями NameNode.
Синтаксис команды:
hadoop haadmin -transitionToActive <serviceId> [--forceactive]
hadoop haadmin -transitionToStandby <serviceId>
hadoop haadmin -transitionToObserver <serviceId>
hadoop haadmin -failover [--forcefence] [--forceactive] <serviceId> <serviceId>
hadoop haadmin -getServiceState <serviceId>
hadoop haadmin -getAllServiceState
hadoop haadmin -checkHealth <serviceId>
hadoop haadmin -help <command>
В команде могут быть использованы следующие параметры команды COMMAND_OPTION:
Команда journalnode предназначена для запуска узла журналов.
Синтаксис команды:
hadoop journalnode
Команда mover запускает утилиту переноса данных.
Обратите внимание, что если опущены параметры -p и -f, по умолчанию используется корневой каталог.
Также введена функция закрепления, чтобы предотвратить перемещение определённых реплик балансировщиком/утилитой. Эта функция закрепления отключена по умолчанию, и её можно включить с помощью свойства конфигурации dfs.datanode.block-pinning.enabled. Когда эта функция включена, эта функция влияет только на блоки, которые записываются в избранные узлы, указанные в вызове create (). Эта функция полезна, когда мы хотим сохранить локальность данных для таких приложений, как HBase regionserver.
Синтаксис команды:
hadoop mover [-p <files/dirs> | -f <local file name>]
В команде могут быть использованы следующие параметры команды COMMAND_OPTION:
Команды namenode позволяют управлять NameNode.
Ниже в разделах представлены возможные команды для администрирования HDFS.
Команда backup запускает backup-узел.
Синтаксис команды:
hadoop namenode [-backup]
Команда checkpoint запускает checkpoint-узел, т.е. узел контрольной точки.
Синтаксис команды:
hadoop namenode [-checkpoint]
Команда format форматирует указанный NameNode. Он запускает NameNode, форматирует его, а затем закрывает. Выдаёт исключение NameNodeFormatException, если dir уже существует и для кластера отключено переформатирование.
Синтаксис команды:
hadoop namenode [-format [-clusterid cid ] [-force] [-nonInteractive] ]
Команда upgrade запускает NameNode с опцией обновления после распространения новой версии Hadoop.
Синтаксис команды:
hadoop namenode [-upgrade [-clusterid cid] [-renameReserved<k-v pairs>] ]
Команда upgradeOnly обновляет указанный NameNode, а затем выключает его.
Синтаксис команды:
hadoop namenode [-upgradeOnly [-clusterid cid] [-renameReserved<k-v pairs>] ]
Команда rollback откатывает NameNode к предыдущей версии. Команду следует использовать после остановки кластера и разворачивания старой версии Hadoop.
Синтаксис команды:
hadoop namenode [-rollback]
Команда rollingUpgrade обновляет и закрывает указанный NameNode.
Синтаксис команды:
hadoop namenode [-rollingUpgrade <rollback |started> ]
Команда importCheckpoint загружает изображение из каталога контрольных точек и сохраняет его в текущем. Каталог dir контрольной точки считывается из свойства dfs.namenode.checkpoint.dir.
Синтаксис команды:
hadoop namenode [-importCheckpoint]
Команда initializeSharedEdits форматирует новый общий каталог изменений и копирует в достаточное количество сегментов журнала, чтобы можно было запустить резервный NameNode.
Синтаксис команды:
hadoop namenode [-initializeSharedEdits]
Команда bootstrapStandby позволяет загрузить резервные каталоги хранилища NameNode путём копирования последнего снимка пространства имён из активного NameNode. Команда используется при первой настройке кластера высокой доступности.
Параметры -force или -nonInteractive имеют то же значение, что и описанный в команде -format. Параметр skipSharedEditsCheck пропускает проверку правок, которая гарантирует, что имеется достаточно правок в общем каталоге для запуска с последней контрольной точки в активном узле имён.
Синтаксис команды:
hadoop namenode [-bootstrapStandby [-force] [-nonInteractive] [-skipSharedEditsCheck] ]
Команда recover позволяет восстановить потерянные метаданные в повреждённой файловой системе.
Синтаксис команды:
hadoop namenode [-recover [-force] ]
Команда metadataVersion позволяет вывести версии метаданных программного обеспечения и образа (при условии наличия настроенных каталогов).
Синтаксис команды:
hadoop namenode [-metadataVersion ]
Команда nfs3 запускает шлюз NFS3.
Синтаксис команды:
hadoop nfs3
Команда portmap запускает карту портов RPC.
Синтаксис команды:
hadoop portmap
Команда secondarynamenode запускает SecondaryNameNode.
Синтаксис команды:
hadoop secondarynamenode [-checkpoint [force]] | [-format] | [-geteditsize]
В команде могут быть использованы следующие параметры команды COMMAND_OPTION:
Команда storagepolicies предназначена для управления политиками хранения.
Синтаксис команды:
hadoop storagepolicies
[-listPolicies]
[-setStoragePolicy -path <path> -policy <policy>]
[-getStoragePolicy -path <path>]
[-unsetStoragePolicy -path <path>]
[-satisfyStoragePolicy -path <path>]
[-isSatisfierRunning]
[-help <command-name>]
В команде могут быть использованы следующие параметры команды COMMAND_OPTION:
Команда zkfc запускает процесс Zookeeper Failover Controller.
Синтаксис команды:
hadoop zkfc [-formatZK [-force] [-nonInteractive]]
В команде могут быть использованы следующие параметры команды COMMAND_OPTION:
Hue представляет собой web-интерфейс, который позволяет пользователям интерактивно взаимодействовать с кластером Hadoop и его компонентами.
Hue содержит следующие приложения:
Интерфейс Hue является одностраничным приложением и содержит следующие области:
Панель поиска всегда доступна в верхней части экрана, а также предлагает поиск документов и поиск по метаданным, если Hue настроен для доступа к серверу метаданных.
Поиск предлагает следующие возможности:
1. Встроенный поиск и теги.
Hue позволяет искать любую таблицу, представление или столбец во всех базах данных в кластере.
Кроме того, имеется возможность помечать объекты тегами для их классификации и группировки по проектам. Эти теги доступны для поиска.
Автозаполнение панели поиска предлагает список аспектов и предварительное заполнение верхних значений. Нажатие клавиши ввода приводит список доступных объектов, которые можно открыть и исследовать далее во всплывающем окне, в помощнике или непосредственно в приложении для просмотра таблиц.
2. Детальный поиск.
По умолчанию возвращаются только таблицы и представления. Для поиска столбцов, разделов, баз данных используйте фильтр Тип:
Пример поиска:
С помощь левой вспомогательной панели можно найти документы Hue, файлы HDFS и S3 и другое. При щелчке правой кнопкой мыши по элементам отобразится список возможных действий с элементом.
Содержимое правой вспомогательной панели зависит от контекста выбранного приложения и отображает текущие таблицы или доступные UDF.
Всплывающее окно предлагает быстрый способ просмотреть образцы данных и другую статистику по базам данных, таблицам и столбцам. Вы можете открыть всплывающее окно из SQL Assist или щёлкнуть правой кнопкой мыши на любой объект SQL (таблица, столбец, функция и прочие).
Визуализация удобна для построения хронологических данных или, когда подмножества строк имеют один и тот же атрибут, они будут складываться вместе.
Цель Средства импорта — разрешить ad-hoc запросы к данным, которых ещё нет в кластере, тем самым ускорить self-service аналитику.
Если вы хотите импортировать свои собственные данные вместо образцов таблиц, откройте Средство импорта из левого меню или из + на левой вспомогательной панели.
Чтобы создать новые SQL-таблицы из файлов:
Хотя можно создавать таблицы, выполняя соответствующие команды DDL- и HQL-запросов Hive, проще создать таблицу с помощью мастера создания таблиц:
1. Из файла.
Чтобы создать таблицу из файла, необходимо:
Файлы можно перетаскивать, выбирать из HDFS или S3 (если настроено), и их форматы определяются автоматически. Мастер также помогает при выполнении расширенных функций, таких как разделение таблиц, таблицы Kudu и вложенные типы.
2. Вручную.
Чтобы создать таблицу вручную, необходимо:
На вкладке Search на панели навигации выберите Index.
Введите имя для новой коллекции и выберем наш файл данных отзывов из HDFS. Затем нажмите Next.
Hue позволяет принимать данные из традиционных баз данных.
Hue позволяет сохранять документы, а также обмениваться ими с другими пользователями.
Совместное использование происходит на главной странице или через верхнее правое меню приложения. Можно выбрать пользователей и группы с разрешениями на чтение или запись.
Через главную страницу сохраненные документы можно экспортировать для резервного копирования или переноса в другой Hue.
Язык определяется автоматически из браузера или ОС.
Язык может быть установлен вручную пользователем на странице My profile. Перейдите в My Profile —> Step2 Profile and Groups —> Language Preferenceи выберите нужный язык.
Hue ориентирован на SQL, но поддерживает и иные языки. Он позволяет работать с интеллектуальным автозаполнением, поиском и тегированием данных, а также поддержкой запросов.
Любой редактор может быть помечен звёздочкой рядом с его именем, чтобы он стал редактором по умолчанию и целевой страницей при входе в систему
Для настройках подключения к Hadoop и Hive необходимо изменить следующие параметры в файле /etc/hue/conf/hue.ini:
- в значение переменной вместо слова hadoop-spacename необходимо подставить логическое имя пространства (из core-site.xml):
В файле /etc/hadoop/conf/core-site.xml из параметра
fs_defaultfs
скопируйте только название пространства (без спец. символов)
- в значение hostname необходимо подставить полное имя хоста выбранного сервиса (вместе с доменом):
Посмотреть полное имя хоста можно командой:
hostname -f
Структура конфигурационного файла hue.ini состоит из блоков, обрамлённых в квадратные скобки, например: [desktop].
Количество квадратных скобок говорит об уровне блока: 1 скобка - один из главных параметров, 2 и 3 скобки - вложенные блоки главного параметра.
Если HDFS был установлен в режиме высокой доступности, необходимо в параметре
fs_defaultfs
использовать значение одноименного параметра из файла конфигурации hadoop, расположенного в директории /etc/hadoop/conf/core-site.xml
Для обеспечения отказоустойчивости webhdfs, рекомендуется использовать балансировщик нагрузки (например, HAProxy) и использовать его адрес и порт в параметреwebhdfs_url
[desktop]
app_blacklist=impala,oozie,pig
django_debug_mode=False
enable_prometheus=True
http_500_debug_mode=False
http_host=0.0.0.0
http_port=8888
secret_key= # Используется для безопасного хеширования. Введите случайное текстовое значение или оставьте пустым.
time_zone=Europe/Moscow
[[database]]
engine=postgresql_psycopg2
host=hostname
name=hue
password=hue
port=5432
user=hue
[hadoop]
[[hdfs_clusters]]
[[[default]]]
fs_defaultfs=hdfs://hostname:8020
hadoop_conf_dir=/etc/hadoop/conf
is_enabled=True
logical_name=hadoop-namespace
security_enabled=True
ssl_cert_ca_verify=False
webhdfs_url=http://hostname:9870/webhdfs/v1
[[yarn_clusters]]
[[[yarn_default]]]
history_server_api_url=http://hostname:19888
logical_name=hadoop-namespace
proxy_api_url=http://hostname:8088
resourcemanager_api_url=http://hostname:8088
resourcemanager_host=hostname
resourcemanager_port=8031
security_enabled=True
spark_history_server_security_enabled=False
spark_history_server_url=http://hostname:18082
ssl_cert_ca_verify=False
submit_to=True
[beeswax]
hive_server_host=hostname
hive_server_port=10000
hive_conf_dir=/etc/hive/conf
server_conn_timeout=120
[spark]
csrf_enabled=False
livy_server_url=hostname:8998
security_enabled=False
sql_server_host=hostname
sql_server_port=10016
ssl_cert_ca_verify=False
use_sasl=False
[hbase]
hbase_clusters=(Cluster|hostname:9095)
hbase_conf_dir=/etc/hbase/conf
ssl_cert_ca_verify=False
thrift_transport=buffered
truncate_limit=500
Важно: при изменении параметров необходимо сохранять структуру файлов!
После изменения файлов конфигурации необходимо перезагрузить сервис hue
systemctl restart hue.service
Если планируется использование редактора Hue для работы с внешними СУБД, необходимо выполнить следующие шаги (рассмотрим на примере добавления postgres):
Во-первых, в файле hue.ini вам нужно добавить соответствующую информацию о подключении в разделе librdbms:
[librdbms]
[[databases]]
[[[postgresql]]]
nice_name=PostgreSQL
name=music
engine=postgresql_psycopg2
port=5432
user=hue
password=hue
options={}
Во-вторых, необходимо добавить новый интерпретатор в приложение для notebook. Это позволит зарегистрировать новый тип базы данных как тип сниппета в приложении Notebook. Для редакторов запросов, использующих базу данных, совместимую с Django, имя в скобках должно совпадать с именем конфигурации базы данных в разделе librdbms (например, ‑postgresql). Интерфейс будет установлен на rdbms. Это сообщает Hue использовать драйвер librdbms и соответствующую информацию для подключения к базе данных. Например, с указанной выше конфигурацией подключения postgresql в разделе librdbms можно добавить интерпретатор PostgreSQL со следующей конфигурацией notebook:
[notebook]
[[interpreters]]
[[[postgresql]]]
name=PostgreSQL
interface=rdbms
После изменения файлов конфигурации необходимо перезагрузить сервис hue
systemctl restart hue.service
Примечание. Чтобы выполнить запрос, вы должны авторизоваться в Hue как пользователь, у которого также есть учётная запись пользователя Unix на удалённом сервере. |
Чтобы выполнить запрос, необходимо:
1. Чтобы выполнить часть запроса, выделите один или несколько операторов запроса.
2. Щёлкните Execute. Откроется окно Query Results с результатами вашего запроса.
3. Если в запросе есть несколько операторов (разделённых точкой с запятой), щёлкните Next на панели запроса с несколькими операторами, чтобы выполнить оставшиеся операторы.
Если у вас есть несколько операторов, достаточно поместить курсор в оператор, который вы хотите выполнить, активный оператор обозначается синей меткой.
Примечание. Чтобы выполнить запрос, используйте Ctrl/Cmd + Enter. |
Примечание. На панели журналов вы можете просмотреть любые задания MapReduce, созданные в результате запроса. |
Внимание. Вы можете сохранить результаты в файл только в том случае, если результаты были созданы заданием MapReduce. Данный способ сохранения является предпочтительным, когда результат большой (например, > 1 млн строк). |
Чтобы скачать и сохранить результат запроса, выполните одно из следующих действий:
На панели вверху Pедактора можно указать параметры, представленные в таблице ниже.
Таблица 17— Параметры Редактора
Параметр |
Описание |
---|---|
Database | База данных, содержащая определения таблиц. |
Settings |
Переопределение настроек Hive и Hadoop по умолчанию. Чтобы настроить новый параметр:
|
File resources |
Параметр для локальной доступности файлов во время выполнения запроса в кластере Hadoop. Hive использует Hadoop Distributed Cache для распространения добавленных файлов на все машины в кластере во время выполнения запроса.
Примечание. Нет необходимости указывать файлы, используемые в скрипте преобразования, если файлы доступны по одному и тому же пути на всех машинах в кластере Hadoop. |
User-defined functions |
Специальные функции, определяемые пользователем.
|
Parameterization |
Указывает, что диалоговое окно должно отображаться для ввода значений параметров при выполнении запроса, содержащего строку $parametername. Включено по умолчанию. |
Инструмент автозаполнения знает все тонкости диалекта Hive SQL и предлагает ключевые слова, функции, столбцы, таблицы, базы данных в зависимости от структуры оператора и положения курсора.
Инструмент предлагает завершение не только для операторов SELECT, но и других операторов, таких как: DDL и DML, INSERT, CREATE, ALTER, DROP и прочих.
Инструмент осуществляет следующие типы автозаполнения:
1. Автозаполнение столбцов.
Если в предложении FROM появляется несколько таблиц, включая производные и объединённые таблицы, инструмент объединит столбцы из всех таблиц и при необходимости добавит соответствующие префиксы. Он также содержит информацию о ваших алиасах, последних просмотрах и сложных типах и будет включать их. Он будет автоматически возвращать любые зарезервированные слова или экзотические имена столбцов, где это необходимо, чтобы предотвратить любые ошибки.
2. Автозаполнение ключевых слов.
Инструмент автозаполнения предлагает ключевые слова в зависимости от положения курсора в операторе. Там, где это возможно, он даже будет предлагать более одного слова за раз. В тех частях, где порядок имеет значение, но ключевые слова являются необязательными, например, после FROM tbl, он будет перечислять предложения ключевых слов в ожидаемом порядке, с первым ожидаемым вверху. Итак, после FROM tbl ключевое слово WHERE указано выше GROUP BY.
3. UDF.
Инструмент автозаполнения предлагает функции. Для каждого предложения функции добавляется дополнительная панель в раскрывающемся списке автозаполнения, показывающая документацию и подпись функции. Автозаполнение хранит информацию об ожидаемых типах аргументов и будет предлагать только те столбцы или функции, которые соответствуют аргументу в позиции курсора в списке аргументов.
4. Подзапросы, коррелированные или нет.
При редактировании подзапросов инструмент будет делать предложения только в рамках подзапроса. Для коррелированных подзапросов также принимаются во внимание внешние таблицы.
В настройках Редактора вы можете отключить автозаполнение в реальном времени или вообще отключить автозаполнение. Чтобы получить доступ к этим настройкам, откройте Редактор и, наведя курсор на область с кодом, нажмите CTRL + , (или на Mac CMD + ,) и настройки отобразятся.
Автозаполнение обращается к бэкэнду, чтобы получить данные для таблиц, баз данных и прочих. По умолчанию он истекает через 5 секунд, но как только он будет получен, он кэшируется для следующего раза. Тайм-аут можно настроить в конфигурации сервера Hue.
Если автозаполнение не может интерпретировать оператор, то раскрывающийся список не появится.
Переменные могут иметь значения по умолчанию, например, ${n = 10} вместо простого ${n}.
Подчёркивание красного цвета будет отображать неправильный синтаксис, чтобы запрос можно было исправить перед отправкой. Правый щелчок отобразит предложения.
Превращает список запросов, разделённых точкой с запятой, в интерактивную презентацию. Режим отлично подходит для демонстрации или базовой отчётности.
Используйте Редактор запросов с любой базой данных, совместимой с JDBC или Django.
Обеспечена поддержка отправки нескольких запросов при использовании Tez. Вы можете включить его с помощью этой настройки:
[beeswax]
max_number_of_sessions=10
Помимо Hive Редактор запросов совместим со следующими БД:
Приложение Редактор позволяет создавать и отправлять задания в кластер. Вы можете включать переменные в свои задания, чтобы вы и другие пользователи могли вводить значения для переменных при выполнении вашего задания.
Все настройки дизайна задания, кроме Name и Description, поддерживают использование переменных вида $variable_name. Когда вы запустите задание, появится диалоговое окно, в котором вы сможете указать значения переменных.
Параметры передаются скрипту или команде. Параметры выражаются с использованием [JSP 2.0 Specification (JSP.2.3) Expression Language], что позволяет использовать переменные, функции и сложные выражения в качестве параметров.
Задания содержат классы, представленные в таблице ниже.
Таблица 18— Классы заданий
Класс |
Описание |
---|---|
Name | Определяет задание и набор его свойств и параметров. |
Description |
Описание задания. Описание отображается в диалоговом окне, которое появляется, если вы указываете переменные для задания. |
Advanced |
Расширенные настройки:
|
Prepare |
Указывает пути для создания или удаления перед запуском задания рабочего процесса. |
Params |
Параметры задания. |
Job Properties |
Свойства задания. Чтобы установить значение свойства, нажмите Add Property:
|
Files |
Файлы для передачи заданию. Эквивалентно параметру Hadoop -files. |
Archives |
Файлы в виде архивов для передачи заданию. Эквивалентно параметру Hadoop –archives. |
Дизайн задания MapReduce состоит из функций MapReduce, написанных на Java. Вы можете создать проект задания MapReduce из существующих классов mapper и reducer без необходимости писать основной класс Java. Вы должны указать классы mapper и reducer, а также другие свойства MapReduce в настройке Job Properties.
Таблица 19— Классы заданий MapReduce
Класс |
Описание |
---|---|
Jar path |
Полный путь к файлу JAR, содержащему классы, реализующие функции mapper и reducer. |
Дизайн задания Java состоит из основного класса, написанного на Java.
Таблица 20— Классы заданий Java
Класс |
Описание |
---|---|
Jar path |
Полный путь к файлу JAR, содержащему основной класс. |
Main class |
Основной класс для вызова программы. |
Args |
Аргументы, передаваемые в основной класс. |
Java opts |
Параметры, передаваемые JVM. |
Дизайн задания Shell состоит из shell-команд.
Таблица 21— Классы заданий Shell
Класс |
Описание |
---|---|
Command |
Shell-команда. |
Capture output |
Укажите, нужно ли записывать вывод команды. |
Дашборды — это интерактивный способ быстро и легко изучить ваши данные. Никакого программирования не требуется, и анализ выполняется перетаскиванием и щелчками.
Просто перетащите и отпустите виджеты, которые связаны между собой. Это отлично подходит для изучения новых наборов данных или мониторинга без ввода текста.
Любой файл CSV можно перетащить и вставить в индекс за несколько кликов с помощью Data Import Wizard. Индексированные данные можно сразу же запросить, а их показатели/измерения можно будет очень быстро изучить.
Левая панель метаданных перечисляет информацию о столбцах и просмотреть их содержимое во всплывающем окне образца.
Поле поиска поддерживает фильтрацию данных поля в реальном времени по префиксу и поставляется с автозаполнением синтаксиса Solr, чтобы сделать запросы интуитивно понятными и быстрыми. Любое поле можно проверить на предмет его максимальных значений статистики. Этот анализ происходит очень быстро, поскольку данные индексируются.
С помощью Solr верхняя панель поиска предлагает полное автозаполнение для всех значений индекса.
Функция More like This позволяет вам выбирать поля, которые вы хотели бы использовать для поиска похожих записей. Это отличный способ найти похожие проблемы, клиентов, людей и прочее по списку атрибутов.
SQL также поддерживается дашбордами.
Браузеры Hue поддерживают ваш Data Catalog. Они позволяют легко искать, просматривать и выполнять действия с данными или заданиями в локальных кластерах.
Браузер таблиц позволяет вам управлять базами данных, таблицами и разделами хранилища метаданных, используемых Hive. Вы можете использовать Metastore Manager для выполнения следующих операций:
1. Базы данных:
2. Таблицы.
Браузер файлов позволяет просматривать и управлять файлами и каталогами в HDFS, S3 или ADLS.
С помощью файлового браузера вы можете:
Hue поддерживает один кластер HDFS. Этот кластер должен быть определён в подразделе [[[default]]].
Hue можно настроить для чтения и записи в настроенную учётную запись S3, а пользователи получают возможность автозаполнения и могут напрямую запрашивать и сохранять данные в S3 без какого-либо промежуточного перемещения/копирования в HDFS.
Hue Metastore Import Data Wizard может создавать внешние таблицы Hive непосредственно из каталогов данных в S3. Это позволяет запрашивать данные S3 через SQL из Hive без перемещения или копирования данных в HDFS или Hive Warehouse.
Чтобы создать внешнюю таблицу Hive из S3, перейдите в приложение Metastore, выберите нужную базу данных и затем щёлкните значок Create a new table from a file в правом верхнем углу.
Введите имя таблицы и необязательное описание, а в инструменте выбора файлов Input File or Directory выберите файловую систему S3A, перейдите к родительскому каталогу, содержащему желаемые файлы данных, и нажмите кнопку Select this folder. В раскрывающемся списке Load Data должен автоматически быть выбран параметр Create External Table, который указывает, что эта таблица будет напрямую ссылаться на каталог внешних данных.
Выберите параметры разделителя и определения столбца для входных файлов и, наконец, нажмите Create Table, когда будете готовы создать таблицу Hive. После создания вы должны увидеть детали вновь созданной таблицы в Metastore.
Мы можем перейти в Редактор Hive и запросить данные непосредственно из S3. Эти запросы могут объединять таблицы и объекты, которые поддерживаются S3, HDFS или обоими. Затем результаты запроса можно легко сохранить обратно в S3.
Чтобы добавить учётную запись S3 в Hue, вам необходимо настроить Hue с действительными учётными данными S3, включая идентификатор ключа доступа и секретный ключ доступа AWSCredentials.
Эти ключи могут безопасно храниться в скрипте, который выводит фактический ключ доступа и секретный ключ на стандартный вывод для чтения Hue. Чтобы использовать файлы скриптов, добавьте следующий раздел в файл конфигурации hue.ini:
[aws]
[[aws_accounts]]
[[[default]]]
access_key_id_script=/path/to/access_key_script
secret_access_key_script= /path/to/secret_key_script
allow_environment_credentials=false
region=us-east-1
В качестве альтернативы (но не рекомендуется для производственной или безопасной среды) вы можете установить значения access_key_id и secret_access_key равными текстовым значениям ваших ключей:
[aws]
[[aws_accounts]]
[[[default]]]
access_key_id=s3accesskeyid
secret_access_key=s3secretaccesskey
allow_environment_credentials=false
region=us-east-1
В качестве региона необходимо указать регион AWS, соответствующий учётной записи S3. По умолчанию этот регион будет установлен на us-east-1.
После успешной настройки Hue для подключения к ADLS мы можем просмотреть все доступные папки в учётной записи, щёлкнув корень ADLS. Отсюда мы можем просматривать существующие ключи (как каталоги, так и файлы) и создавать, переименовывать, перемещать, копировать или удалять существующие каталоги и файлы. Кроме того, мы можем напрямую загружать файлы в ADLS.
Мастер импорта браузера таблиц Hue может создавать внешние таблицы Hive непосредственно из файлов в ADLS. Это позволяет запрашивать данные ADLS через SQL из Hive без перемещения или копирования данных в HDFS или Hive Warehouse.
Чтобы создать внешнюю таблицу Hive из ADLS, перейдите в Бразуер таблиц, выберите нужную базу данных и щёлкните значок плюса в правом верхнем углу. Выберите файл с помощью средства выбора файлов и перейдите к файлу в ADLS.
Мы можем перейти в Редактор Hive и запросить данные непосредственно из ADLS. Эти запросы могут объединять таблицы и объекты, которые поддерживаются ADLS, HDFS или обоими. Затем результаты запроса можно сохранить обратно в ADLS.
Чтобы добавить учётную запись ADLS в Hue, вам необходимо настроить Hue с действительными учётными данными ADLS, включая идентификатор клиента, пароль клиента и идентификатор клиента. Эти ключи можно безопасно хранить в скрипте, который выводит фактический ключ доступа и секретный ключ в стандартный вывод для чтения Hue. Чтобы использовать файлы скриптов, добавьте следующий раздел в файл конфигурации hue.ini:
[adls]
[[azure_accounts]]
[[[default]]]
client_id_script=/path/to/client_id_script.sh
client_secret_script=/path/to/client_secret_script.sh
tenant_id_script=/path/to/tenant_id_script.sh
[[adls_clusters]]
[[[default]]]
fs_defaultfs=adl://.azuredatalakestore.net
webhdfs_url=https://.azuredatalakestore.net
В качестве альтернативы (но не рекомендуется для производственных или безопасных сред) вы можете установить значение client_secret в виде обычного текста:
[adls]
[[azure_account]]
[[[default]]]
client_id=adlsclientid
client_secret=adlsclientsecret
tenant_id=adlstenantid
[[adls_clusters]]
[[[default]]]
fs_defaultfs=adl://.azuredatalakestore.net
webhdfs_url=https://.azuredatalakestore.net
Вы можете использовать Браузер файлов для просмотра файлов ввода и вывода ваших заданий MapReduce. Как правило, вы можете сохранять файлы вывода в /tmp или в своём домашнем каталоге, если ваш системный администратор настроил его для вас. У вас должны быть соответствующие разрешения для управления файлами других пользователей.
Чтобы перейти в домашний каталог, щёлкните Home в поле пути вверху окна Браузера файлов.
Примечание. Кнопка Home неактивна, если у вас нет домашнего каталога. Попросите администратора Hue создать для вас домашний каталог. |
Вы можете загружать текстовые и двоичные файлы в HDFS.
Вы можете скачивать текстовые и двоичные файлы в HDFS.
Вы можете распаковывать zip-архивы в HDFS. Архив извлекается в каталог с именем archivename.
Браузер файлов поддерживает корзину для мусора HDFS (домашний каталог /.Trash) для хранения файлов и каталогов до их окончательного удаления.
Файлы в папке имеют полный путь к удалённым файлам (для возможности их восстановления при необходимости) и контрольные точки. Время, в течение которого файл или каталог остается в корзине, зависит от свойств HDFS.
Чтобы просмотреть корзину, в окне Браузера файлов щёлкните Trash.
Примечание. Только суперпользователь Hadoop может изменять владельца, группу или права доступа к файлу или каталогу. Пользователь, запускающий Hadoop, является суперпользователем Hadoop. Учётная запись суперпользователя Hadoop не обязательно совпадает с учётной записью суперпользователя Hue. Если вы создаёте пользователя Hue с тем же именем пользователя и паролем, что и суперпользователь Hadoop, то этот пользователь Hue может изменить владельца, группу или права доступа к файлу или каталогу. |
4. Нажмите Submit, чтобы внести изменения.
Вы можете просматривать и редактировать файлы как текстовые или двоичные.
Роли и права устройства безопасности можно редактировать непосредственно в интерфейсе безопасности.
Права доступа необходимо изменять через интерфейс Hive.
Права доступа Solr можно редактировать прямо через интерфейс.
Для перечисления наборов, запросов и создания наборов:
Admin=*->action=*
Collection=*->action=*
Schema=*->action=*
Config=*->action=*
Браузер заданий (Job Browser) позволяет проверять несколько типов заданий, выполняемых в кластере.
Браузер заданий представляет задания и задачи уровнями. Верхний уровень — это список заданий, и вы можете просмотреть список задач этого задания. Затем вы можете просмотреть запуски задачи и свойства каждого запуска, такие как состояние, время начала и окончания, а также размер выходных данных. Для устранения проблем с неудачными заданиями вы также можете просмотреть логи каждого запуска.
Если есть выполняемые задания, Браузер заданий отобразит их перечень.
Примечание. На любом уровне вы можете просмотреть журнал объекта, щёлкнув значок изображения в столбце журналов. |
Чтобы просмотреть информацию об отдельном задании:
Чтобы просмотреть подробную информацию о задачах, связанных с заданием:
Чтобы просмотреть информацию об отдельной задаче:
Чтобы просмотреть сведения о попытке выполнения задачи:
Все задания, выполняемые в Resource Manager, будут автоматически отображены. Информация будет извлечена соответственно, если задание было перемещено на один из серверов истории.
Приложение Scheduler позволяет создавать процессы (workflows), а затем планировать их регулярное автоматическое выполнение.
Интерфейс мониторинга показывает прогресс, логи и разрешает такие действия, как приостановка или остановка workflow.
Приложение Workflow — это набор действий (actions), организованных в ориентированный ациклический граф (DAG).
Приложение включает в себя два типа узлов:
Приложение Coordinator позволяет определять и выполнять повторяющиеся и взаимозависимые workflow jobs. Приложение Coordinator определяет условия, при которых может происходить выполнение workflow.
Приложение Bundle позволяет вам группировать набор (bundle) приложений Coordinator.
В Workflow Editor вы можете легко выполнять операции с узлами действий (action nodes) и узлами управления (control nodes).
Workflow Editor поддерживает перетаскивание узлов действий (action nodes). Когда вы перемещаете действие над другими действиями, активные области подсвечиваются. Если в процессе есть действия, сами действия подсвечиваются, а также области над и под действиями. Если вы перетаскиваете действие на существующее действие, к рабочему процессу добавляются развлетвление и соединение.
1. Добавьте действия в процесс, нажав
, и перетащите действие в процесс. Отобразится экран редактирования узла:
2. Скопируйте действие, нажав кнопку
3. Действие открывается на экране редактирования узла.
4. Отредактируйте свойства действия и нажмите Done. Действие добавляется в конец процесса.
5. Удалите действие, нажав
6. Отредактируйте действие, нажав
7. Измените положение действия, щёлкнув левой кнопкой мыши и перетащив действие в новое место.
3. Преобразуйте разветвление в решение, нажав
4. Чтобы отредактировать решение:
Примечание. worfklows.xml и их job.properties также могут быть выбраны и выполнены напрямую через Браузер файлов. |
В Менеджере-координаторе вы можете создавать приложения-координаторы и отправлять их на исполнение.
В Редакторе координатора вы указываете свойства координатора и наборы данных, с которыми будет работать процесс, запланированный координатором, путём пошагового перехода между экранами в мастере. Вы также можете перейти к конкретным шагам и вернуться к ним, щёлкнув вкладки шагов над экранами.
Пакет (bundle) состоит из набора расписаний.
В Bundle Editor вы указываете свойства, переходя по экранам мастера. Вы также можете перейти к конкретным шагам и вернуться к ним, щёлкнув вкладки шагов над экранами.
Используйте следующие инструкции для удаления Hadoop:
1. Остановите все установленные службы Hadoop.
2. Если Knox установлен, выполните следующую команду на всех узлах кластера:
yum remove knox*
3. Если Hive установлен, выполните следующую команду на всех узлах кластера:
yum remove hive\*
4. Если HBase установлен, выполните следующую команду на всех узлах кластера:
yum remove hbase\*
5. Удалите Hadoop. Выполните следующую команду на всех узлах кластера:
yum remove hadoop\*
6. Удалите библиотеки ExtJS и коннектор MySQL. Выполните следующую команду на всех узлах кластера:
yum remove extjs-2.2-1 mysql-connector-java-5.0.8-1\*