Параллельные и распределенные вычисления

Семинар 13

Apache Kafka

Пономаренко Роман
@rerand0m
rerandom@ispras.ru

Apache Kafka

  • Брокер сообщений
  • Порядок приёма не гарантируется
  • Стриминговая платформа
  • Отказоустройчивая
  • Распределённая
  • Единица хранения - лог сообщений
  • Возможна асинхронная репликация

Семантики доставки сообщений

  • At-most-once (не более одного раза)
  • At-least-once (не менее одного раза)
  • Exactly-once
  • ...

Виды репликаций

  • Синхронная (как в hadoop)
  • Асинхронная

Про топики и партиции

Спасибо Selectel за картинку

На кластере доступны:

  • Zookeeper:
    • mipt-master.atp-fivt.org:2181
    • mipt-node01.atp-fivt.org:2181
    • mipt-node02.atp-fivt.org:2181
  • Kafka brokers и Kafka bootstrap-servers:
    • mipt-node04.atp-fivt.org:9092
    • mipt-node05.atp-fivt.org:9092
    • mipt-node06.atp-fivt.org:9092
    • mipt-node07.atp-fivt.org:9092
    • mipt-node08.atp-fivt.org:9092

Работа с топиками из консоли

(Тут потребуется адрес zookeeper)

Вывести список:

kafka-topics --zookeeper mipt-node01.atp-fivt.org:2181 --list

Создание:


						kafka-topics --zookeeper mipt-node01.atp-fivt.org:2181 --create \
						--partitions 6 \
						--replication-factor 2 \
						--topic pd2023xx-topic
					

Вывод информации о топике


						kafka-topics --zookeeper mipt-node01.atp-fivt.org:2181 --describe --topic pd2023xx-topic

						Topic:pd2023xx-topic	PartitionCount:6	ReplicationFactor:2	Configs:
							Topic: pd2023xx-topic	Partition: 0	Leader: 134	Replicas: 134,133	Isr: 134,133
							Topic: pd2023xx-topic	Partition: 1	Leader: 135	Replicas: 135,134	Isr: 135,134
							Topic: pd2023xx-topic	Partition: 2	Leader: 131	Replicas: 131,135	Isr: 131,135
							Topic: pd2023xx-topic	Partition: 3	Leader: 132	Replicas: 132,131	Isr: 132,131
							Topic: pd2023xx-topic	Partition: 4	Leader: 133	Replicas: 133,132	Isr: 133,132
							Topic: pd2023xx-topic	Partition: 5	Leader: 134	Replicas: 134,135	Isr: 134,135
					

Чтение и запись

Чтение:

kafka-console-consumer --bootstrap-server mipt-node04.atp-fivt.org:9092 --topic pd2023xx-topic

Для чтения всех данных нужен флаг --from-beginning

Запись:

kafka-console-producer --broker-list mipt-node05.atp-fivt.org:9092 --topic pd2023xx-topic
Разумеется есть api в Java, есть множество библиотек для python...

Про хранение конфигураций