Оглавление
режим работы кластера
Подобно Spark , Flink также имеет различные режимы работы, три из которых в основном поддерживаются: локальный режим, автономный режим и режим Flink on YARN .
Каждый режим имеет определенный сценарий использования, давайте рассмотрим различные режимы работы.
1.локальный режим
Хорошо подходит для тестирования и отладки. Flink может работать в системах Linux , macOS и Windows . Единственным требованием для установки в локальном режиме является Java 1.7.x или более поздняя версия, а JVM будет запускаться во время выполнения , которое в основном используется для отладки кода и может работать на одном сервере.
2. Автономный режим
Применяется к ресурсам самоуправления Flink . Flink имеет собственный автономный режим кластера , который в основном оставляет управление планированием ресурсов самому кластеру Flink . Автономный режим — это кластерный режим, который может иметь один или несколько главных узлов ( JobManager , режим HA , используемый для планирования управления ресурсами, управления задачами, разделения задач и т. д.), несколько подчиненных узлов ( TaskManager , в основном используемый для выполнения декомпозированной задачи JobManager ) .
3. Флинк в режиме YARN
Используйте YARN для унифицированного планирования ресурсов и управления ими. Как правило, в процессе обучения и исследований или когда ресурсов недостаточно, вы можете развернуть в локальном режиме. Режим Flink on YARN более распространен в производственной среде .
В следующем разделе описан рабочий процесс Flink при отправке задачи YARN .
локальный режим
Развертывание и установка локального режима Flink
В локальном режиме нет необходимости запускать какой-либо процесс, просто используйте локальный поток для имитации процесса flink, который подходит для тестирования, разработки и отладки и т. д. В этом режиме нет необходимости изменять какую-либо конфигурацию, нужно только убедиться, что jdk8 установлен нормально.
предпосылки:
Ява 1.8+
Шаги развертывания:
1. Загрузите установочный пакет и распакуйте его, загрузите более новую и стабильную версию:
# wget https://archive.apache.org/dist/flink/flink-1.16.0/flink-1.16.0-bin-scala_2.12.tgz
распаковать
# tar -zxf flink-1.16.0-bin-scala_2.12.tgz
2. Непосредственно используйте скрипт для запуска
Flink находится в локальном режиме, нет необходимости менять какие-либо настройки, просто запустите после распаковки.
Выполните следующую команду, чтобы напрямую запустить локальный режим
cd /data-ext/flink-1.16.0
bin/start-cluster.sh
отключить локальный режим
cd /data-ext/flink-1.16.0
bin/stop-cluster.sh
3. Проверьте после успешного запуска
Выполните jps, чтобы увидеть, что запущены два процесса.
# jps
23792 Таскманажерраннер
23514 StandaloneSessionClusterEntrypoint
доступ к веб-интерфейсу
После успешного запуска двух процессов посетите номер порта 8081, чтобы получить доступ к веб-интерфейсу управления flink.
http://мастер:8081/#/обзор
4. Запустите тесты, которые поставляются с flink
Мастер использует команду nc в linux, чтобы отправить несколько слов в сокет.
nc — это сокращение от netcat, мощного сетевого инструмента, имеющего репутацию швейцарского армейского ножа в сетевой индустрии. Фактическая команда команды nc в системе Linux — ncat, а nc — это мягкое подключение к ncat.
# sudo yum -y install nc
# nc -lk 8000
Откройте другое окно мастера, запустите встроенную программу статистики слов flink, примите данные входного сокета и сделайте статистику.
cd /data-ext/flink-1.16.0
bin/flink run examples/streaming/SocketWindowWordCount.jar --hostname localhost --port 8000
Посмотреть статистику:
Статистические результаты тестов, которые поставляются с flink, находятся в папке журнала.
Мастер выполняет следующую команду для просмотра статистических результатов
cd /data-ext/flink-1.16.0/log
tail -200f flink-root-taskexecutor-0-VM-0-9-centos.out
Автономный режим
Автономный режим — это своего рода кластерный режим, но этот режим обычно не работает в производственной среде, причина сравнивается с режимом на пряже:
Развертывание автономного режима относительно просто и может поддерживать небольшие масштабы и небольшое количество задач;
В режиме Stabdalone отсутствует управление заданиями в кластере на системном уровне, что приводит к неравномерному распределению ресурсов;
Изоляция ресурсов относительно проста, а конкуренция за ресурсы между задачами серьезна.
предпосылки:
Подготовьте два сервера, один для управления задачами (JobManager) и один для выполнения задач (TaskManager).
Достаточно одного сервера для задачи управления, а сервер для выполнения задачи может в последующем без ограничений расширять узлы в соответствии с реальными потребностями.
Установите java 1.8 на каждый сервер и установите JAVA_HOME
Реализовать вход без пароля по ssh между двумя серверами
список серверов:
ИМЯ |
IP |
ОС-ОБРАЗ |
Джава |
||
владелец |
192.168.0.220 |
эл7.x86_64 |
1.8.0_291 |
||
узел01 |
192.168.0.6 |
эл7.x86_64 |
1.8.0_291 |
||
узел02 |
192.168.0.8 |
эл7.x86_64 |
1.8.0_291 |
этапы развертывания
1. Разархивируйте файл flink версии 1.16.0
2. Настройте переменные системной среды
# vim /etc/profile
экспорт FLINK_HOME=/data-ext/flink-1.16.0
экспорт PATH=$PATH:$FLINK_HOME/bin
Обновите переменные системной среды, чтобы они вступили в силу.
# source /etc/profile
3. Отредактируйте файл конфигурации
Введите команду cd flink-1.16.0/conf/, чтобы войти в каталог conf
Введите команду vim flink-conf.yaml, чтобы отредактировать файл conf, который является основным файлом конфигурации.
jobmanager.rpc.address
Настройте адрес rpc диспетчера заданий
Выберите узел в качестве главного узла (JobManager) и задайте для элемента конфигурации jobmanager.rpc.address IP-адрес или имя хоста узла.
Убедитесь, что все узлы имеют одинаковую конфигурацию jobmanager.rpc.address.
- Изменить размер памяти диспетчера задач
taskmanager.memory.process.size: 2048m
диспетчер задач.numberOfTaskSlots
Изменить количество слотов задач диспетчера задач.Слот карты каждого сервера во Flink можно настроить в файле conf.По умолчанию 1
Мы изменяем его на 2. Если это значение больше 1, TaskManager может использовать несколько ядер ЦП, и один TaskManager будет выполнять функцию или оператор сбора данных параллельно.
Изменить параллелизм
параллелизм.по умолчанию: 4
4. Настройте мастер
vim masters
мастер: 8081
5. Редактировать воркеров
Введите vim worker для редактирования файла, этот файл используется для настройки подузла кластера flink, по умолчанию используется localhost.
Подобно конфигурации HDFS, отредактируйте файл conf/slaves и введите IP/имя хоста каждого рабочего узла, а также напишите несколько новых строк для нескольких узлов. Каждый рабочий узел позже будет запускать TaskManager.
Если у мастера большая нагрузка, вы все равно можете выбрать мастер, который не будет узлом TaskManager (удалите localhost).
# vim workers
Узел01
узел02
5. Файл конфигурации дистрибутива
Распространите файл конфигурации на дочерний сервер через scp
6. Запуск и остановка службы
Запустите кластер:
bin/start-cluster.sh
jps просмотр процесса
Выключите кластер:
bin/stop-cluster.sh
7. Конфигурация высокой доступности
7.1 Конструкция серверного узла
главный узел |
подчиненный узел |
Метод развертывания |
владелец |
узел01 |
Автономный-HA |
7.2 Настройка переменных среды
# vim /etc/profile
экспорт HADOOP_HOME=/data-ext/hadoop-3.2.4
экспортировать HADOOP_CONF_DIR=$HADOOP_HOME/etc/Hadoop
Обновить среду системных переменных
# source /etc/profile
7.3 Правка conf/flink-conf.yaml, настройка flink
# vim conf/flink-conf.yaml
7.3.1 Настройка зоопарков
Создайте новый каталог хранения моментальных снимков и выполните его в каталоге FLINK_HOME.
# mkdir -p tmp/zookeeper
Измените конфигурацию zoo.cfg в разделе conf.
# vim zoo.cfg
# Каталог, в котором хранится снимок.
каталог данных = /data-ext/flink-1.16.0/tmp/zookeeper
# Порт, на который будут подключаться клиенты
клиентПорт = 2181
# узлы кворума ZooKeeper
сервер.1 = мастер:2888:3888
Flink в режиме пряжи
Принцип режима Flink on Yarn заключается в том, чтобы полагаться на YARN для планирования задач Flink, который в настоящее время широко используется на предприятиях. Преимущество этого режима заключается в том, что он может в полной мере использовать ресурсы кластера, повысить коэффициент использования машин кластера и нужен только один кластер Hadoop для выполнения задач MR и Spark, а также задач Flink и т. д. Операция очень удобна. и не требует особого обслуживания.Комплект кластеров также очень прост в эксплуатации и обслуживании. Режим Flink on Yarn должен полагаться на кластер Hadoop, а версия Hadoop должна быть 2.2 или выше.
При запуске нового сеанса клиента Flink YARN клиент сначала проверяет, доступны ли запрошенные ресурсы (контейнеры и память). После этого он загружает конфигурацию Flink и файлы JAR в HDFS.
Следующим шагом для клиента является запрос контейнера YARN для запуска ApplicationMaster. JobManager и ApplicationMaster (AM) работают в одном контейнере. После успешного запуска AM может узнать адрес JobManager и сгенерировать новый файл конфигурации Flink для TaskManager (чтобы он мог подключиться к JobManager). также будут загружены в HDFS. Кроме того, контейнер AM также предоставляет службу веб-интерфейса Flink. Порты, которые Flink использует для предоставления услуг, настраиваются идентификаторами пользователя и приложения как смещения, что позволяет пользователям выполнять несколько сеансов YARN параллельно.
После этого AM начинает выделять контейнеры (контейнеры) для диспетчера задач Flink и загружает файлы JAR и измененные файлы конфигурации из HDFS. После выполнения этих шагов Flink будет установлен и готов принимать задачи.
Шаги развертывания:
1. Измените конфигурацию conf/flink-conf.yaml и добавьте следующие два элемента:
#Если пользователю не удается отправить задание, количество повторных
пряжа.заявка-попытки: 4
# Установите задачу для равномерного распределения между всеми узлами
cluster.evenly-spread-out-slots: true
2. Загрузите пакет зависимостей hadoop и скопируйте пакет в каталог lib flink.
flink-shaded-hadoop-3-uber-3.1.1.7.2.1.0-327-9.0.jar
3. Запустите тест (сеансовый режим)
Сеанс-кластер: он предназначен для предварительной инициализации кластера Flink (называемого пряжей-сеансом Flink) в YARN, открытия указанных ресурсов и отправки всех будущих задач Flink здесь. Этот кластер Flink будет находиться в кластере YARN, если его не остановить вручную. Кластер Flink, созданный таким образом, будет монополизировать ресурсы, и независимо от того, выполняются задачи Flink или нет, другие задачи в YARN не могут использовать эти ресурсы.
# Выполнить на главном узле
bin/yarn-session.sh -d -jm 1024 -tm 1024 -s 1
-tm указывает размер памяти каждого TaskManager
-s указывает количество слотов для каждого TaskManager
-d означает запуск в качестве фоновой программы
Примечание. Все задачи, отправленные в это время, выполняются в течение сеанса (сеанса) и не будут применяться к ресурсам пряжи.
Просмотр списка запущенных задач
yarn application -list
4. Тест
- Создайте текстовый файл words.txt
мы думаем, что можем сделать это сами.
мы не можем думать, что можем догадаться сами.
думай думай думай
мы можем думать, значит, мы можем это делать.
- Загрузить файлы на hdfs
# hdfs dfs -copyFromLocal words.txt /
- Отправляйте задачи на пряжу в режиме сеанса
# bin/flink run examples/batch/WordCount.jar --input hdfs://master:8020/wordcount.txt
5. Закройте режим сеанса и убейте запущенные задачи.
yarn application kill