Важно: Данный раздел актуален для Платформы данных On-Premise.
Внимание. Настоятельно рекомендуется устанавливать кластер RT.StreamingKafka с использованием RT.ClusterManager. Инструкция, как это сделать, находится здесь: Процесс установки компонентов на основании плагина RT.StreamingKafka.
Текущая инструкция по ручной установке RT.StreamingKafka (без использования RT.ClusterManager) представлена здесь в ознакомительных целях. Не рекомендуется использовать её для установки RT.StreamingKafka, т.к. это может привести к некорректной установке и как следствие ошибкам и нестабильно работающему кластеру RT.StreamingKafka.
В требованиях приведены необходимые сведения для подготовки к установке кластера RT.StreamingKafka.
Также приведены минимальные аппаратные и программные требования.
Документ может быть полезен администраторам, программистам, разработчикам и сотрудникам подразделений информационных технологий, осуществляющих внедрение кластера.
Для установки кластера RT.StreamingKafka необходима следующая информация:
Минимальные аппаратные требования к сети для установки кластера RT.StreamingKafka следующие:
№ | Порт | Описание |
---|---|---|
1 | 22 | ssh |
2 | 81 | tcp-порт (доступ к репозиториям в случае offline инсталляции) |
3 | 2015 | tcp-порт для отправки метрик на сервер мониторинга |
4 | 2016 | udp-порт для отправки метрик на сервер мониторинга |
5 | 8000 | tcp-порт для отправки статусов компонентов кластера в RT.StreamingKafka |
6 | 2181 | порт доступа к сервису Zookeeper |
7 | 2888 | порт межсерверного взаимодействия для компонентов кворума Zookeeper |
8 | 3888 | порт межсерверного взаимодействия для компонентов кворума Zookeeper |
9 | 9092 | http-порт доступа к сервису RT.StreamingKafka |
10 | 9093 | https-порт доступа к сервису RT.StreamingKafka |
11 | 8081 | порт доступа к сервису Schema-Registry |
12 | 8082 | порт доступа к сервису Kafka REST Proxy |
13 | 8088 | порт доступа к компоненту KSQL Server |
14 | 9898 | порт доступа к сервису Kafka-Manager |
15 | 9997 | JMX-порт для доступа к метрикам сервисa Schema-Registry |
16 | 9998 | JMX-порт для доступа к метрикам сервисa Kafka REST Proxy |
17 | 9999 | JMX-порт для доступа к метрикам сервиса RT.StreamingKafka |
Минимальные аппаратные требования к серверу Zookeeper:
Минимальные аппаратные требования к отдельному брокеру RT.StreamingKafka для установки кластера следующие:
Минимальные программные требования для установки кластера RT.StreamingKafka следующие:
Перечисленные файлы не должны контролироваться системой управления конфигурации (при её наличии);
Чтобы развернуть RT.StreamingKafka, выполните шаги, представленные ниже.
Загрузите последнюю версию RT.StreamingKafka и распакуйте её:
$ tar -xzf RT.StreamingKafka_3.3.0-1.tgz
$ cd RT.StreamingKafka
Примечание. В вашей локальной среде должна быть установлена Java 8+.
Выполните следующие команды, чтобы запустить все службы в правильном порядке:
# Запустить сервис ZooKeeper
$ bin/zookeeper-server-start.sh config/zookeeper.properties
Откройте ещё один терминальный сеанс и запустите:
# Запустить брокерскую службу RT.StreamingKafka
$ bin/kafka-server-start.sh config/server.properties
После успешного запуска всех сервисов у вас будет запущена и готова к использованию базовая среда RT.StreamingKafka.
RT.StreamingKafka — платформа распределённой потоковой передачи событий, которая позволяет читать, записывать, хранить и обрабатывать события (также называемые записями или сообщениями) на многих машинах.
Примерами событий являются платёжные транзакции, обновления геолокации с мобильных телефонов, заказы на доставку, измерения датчиков с устройств IoT или медицинского оборудования и многое другое. Эти события организованы и хранятся в топиках. Очень упрощённо, топик похож на папку в файловой системе, а события — файлы в этой папке.
Итак, прежде чем вы сможете записать свои первые события, вы должны создать топик. Откройте ещё один терминальный сеанс и запустите:
$ bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server localhost:9092
Все инструменты командной строки RT.StreamingKafka имеют дополнительные параметры: запустите команду kafka-topics.sh без каких-либо аргументов, чтобы отобразить информацию об использовании команды. Например, он также может показать вам подробную информацию, такую как количество партиций нового топика:
$ bin/kafka-topics.sh --describe --topic quickstart-events --bootstrap-server localhost:9092
Topic:quickstart-events PartitionCount:1 ReplicationFactor:1 Configs:
Topic: quickstart-events Partition: 0 Leader: 0 Replicas: 0 Isr: 0
Клиент RT.StreamingKafka связывается с брокерами RT.StreamingKafka через сеть для записи (или чтения) событий. После получения брокеры будут хранить события в надёжном и отказоустойчивом виде столько времени, сколько необходимо — даже навсегда.
Запустите консоль клиента поставщика, чтобы записать несколько событий в созданный топик. По умолчанию каждая вводимая строка приводит к записи отдельного события в топик.
$ bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server localhost:9092
This is my first event
This is my second event
Вы можете остановить клиента поставщика с помощью Ctrl-C в любое время.
Откройте другой терминальный сеанс и запустите консоль клиента потребителя, чтобы прочитать только что созданные события:
$ bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server localhost:9092
This is my first event
This is my second event
Вы можете остановить клиента потребителя с помощью Ctrl-C в любое время.
Не стесняйтесь экспериментировать: например, переключитесь обратно на свой терминал поставщика (предыдущий шаг), чтобы записать дополнительные события, и посмотрите, как события сразу же отображаются в терминале потребителя.
Поскольку события надёжно хранятся в RT.StreamingKafka, они могут быть прочитаны сколько угодно раз и любым количеством потребителей. В этом легко убедиться, открыв ещё один сеанс терминала и повторно запустив предыдущую команду.
Вероятно, у вас есть много данных в существующих системах, таких как реляционные базы данных или традиционные системы обмена сообщениями, а также множество приложений, которые уже используют эти системы. Kafka Connect позволяет непрерывно получать данные из внешних систем в RT.StreamingKafka и наоборот. Таким образом, очень легко интегрировать существующие системы с RT.StreamingKafka. Чтобы сделать этот процесс ещё проще, доступны сотни таких коннекторов.
Как только данные будут сохранены в RT.StreamingKafka в качестве событий, вы можете обрабатывать их с помощью клиентской библиотеки Kafka Streams для Java\Scala. Она позволяет имплементировать критически важные приложения и микросервисы реального времени, где входные и\или выходные данные хранятся в топиках RT.StreamingKafka. Kafka Streams сочетает в себе простоту написания и развёртывания стандартных приложений Java и Scala на стороне клиента с преимуществами серверной кластерной технологии RT.StreamingKafka, что делает эти приложения высокомасштабируемыми, эластичными, отказоустойчивыми и распределёнными. Библиотека поддерживает однократную обработку, операции и агрегаты с отслеживанием статусов, управление окнами, объединения, обработку на основе времени события и многое другое.
Ниже в примере представлена имплементация популярного алгоритма WordCount:
KStream<String, String> textLines = builder.stream("quickstart-events");
KTable<String, Long> wordCounts = textLines
.flatMapValues(line -> Arrays.asList(line.toLowerCase().split(" ")))
.groupBy((keyIgnored, word) -> word)
.count();
wordCounts.toStream().to("output-topic", Produced.with(Serdes.String(), Serdes.Long()));
Выполните следующие шаги:
Если вы также хотите удалить любые данные вашей локальной среды RT.StreamingKafka, включая любые события, которые вы создали в процессе, выполните команду:
$ rm -rf /tmp/kafka-logs /tmp/zookeeper