apache-kafka учебник
Начало работы с apache-kafka
Поиск…
замечания
Kafka - это высокопроизводительная система обмена сообщениями для публикации-подписки, реализованная как распределенная, разделенная, реплицированная служба журнала фиксации.
Взято с официального сайта Кафки
Быстро
Один брокер Kafka может обрабатывать сотни мегабайт от чтения и записи в секунду от тысяч клиентов.
Масштабируемость
Kafka спроектирован таким образом, чтобы один кластер мог служить центральной базой данных для крупной организации. Он может быть эластично и прозрачно расширен без простоя. Потоки данных разделяются и распределяются по кластеру машин, чтобы потоки данных превышали возможности любой отдельной машины и позволяли кластерам скоординированных потребителей
долговечный
Сообщения сохраняются на диске и реплицируются внутри кластера, чтобы предотвратить потерю данных. Каждый брокер может обрабатывать терабайты сообщений без влияния на производительность.
Распространяется по дизайну
Kafka имеет современную кластер-ориентированную конструкцию, которая обеспечивает надежную прочность и отказоустойчивость.
Установка или настройка
Шаг 1 . Установка Java 7 или 8
Шаг 2 . Загрузите Apache Kafka по адресу: http://kafka.apache.org/downloads.html
Например, мы попробуем загрузить Apache Kafka 0.10.0.0
Шаг 3 . Извлеките сжатый файл.
В Linux:
tar -xzf kafka_2.11-0.10.0.0.tgz
В окне: щелкните правой кнопкой мыши -> Извлечь здесь
Шаг 4 . Запустить Zookeeper
cd kafka_2.11-0.10.0.0
Linux:
bin/zookeeper-server-start.sh config/zookeeper.properties
Окна:
bin/windows/zookeeper-server-start.bat config/zookeeper.properties
Шаг 5 . Запустить сервер Kafka
Linux:
bin/kafka-server-start.sh config/server.properties
Окна:
bin/windows/kafka-server-start.bat config/server.properties
Вступление
Apache Kafka ™ - это распределенная потоковая платформа.
Что значит
1-Он позволяет публиковать и подписываться на потоки записей. В этом отношении он похож на очередь сообщений или корпоративную систему обмена сообщениями.
2-Он позволяет сохранять потоки записей отказоустойчивым способом.
3-Он позволяет обрабатывать потоки записей по мере их возникновения.
Он используется для двух широких классов приложений:
1-построение потоковых данных в реальном времени, которые надежно получают данные между системами или приложениями
2-потоковые приложения реального времени, которые преобразуют или реагируют на потоки данных
Скрипты консоли Kafka отличаются для платформ Unix и Windows. В примерах вам может потребоваться добавить расширение в соответствии с вашей платформой. Linux: скрипты, расположенные в
bin/с расширением.sh. Windows: скрипты, расположенные вbin\windows\и с расширением.bat.
Монтаж
Шаг 1. Загрузите код и разблокируйте его:
tar -xzf kafka_2.11-0.10.1.0.tgz
cd kafka_2.11-0.10.1.0
Шаг 2. Запустите сервер.
чтобы иметь возможность удалять темы позже, откройте
server.propertiesи установитеdelete.topic.enableв true.
Kafka в значительной степени полагается на zookeeper, поэтому вам нужно сначала начать его. Если вы его не установили, вы можете использовать удобный сценарий, упакованный с помощью kafka, чтобы получить быстрый и грязный одноузловой экземпляр ZooKeeper.
zookeeper-server-start config/zookeeper.properties
kafka-server-start config/server.properties
Шаг 3: убедитесь, что все работает
Теперь у вас должен быть zookeeper, слушая localhost:2181 и один брокер kafka на localhost:6667 .
Создать тему
У нас только один брокер, поэтому мы создаем тему без коэффициента репликации и только один раздел:
kafka-topics --zookeeper localhost:2181 \
--create \
--replication-factor 1 \
--partitions 1 \
--topic test-topic
Проверьте свою тему:
kafka-topics --zookeeper localhost:2181 --list
test-topic
kafka-topics --zookeeper localhost:2181 --describe --topic test-topic
Topic:test-topic PartitionCount:1 ReplicationFactor:1 Configs:
Topic: test-topic Partition: 0 Leader: 0 Replicas: 0 Isr: 0
отправлять и получать сообщения
Запуск потребителя:
kafka-console-consumer --bootstrap-server localhost:9092 --topic test-topic
На другом терминале запустите производителя и отправьте несколько сообщений. По умолчанию инструмент отправляет каждую строку в виде отдельного сообщения для брокера без специальной кодировки. Напишите несколько строк и выйдите с помощью CTRL + D или CTRL + C:
kafka-console-producer --broker-list localhost:9092 --topic test-topic
a message
another message
^D
Сообщения должны появляться в потребительском термине.
Стоп кафка
kafka-server-stop
запустить кластер с несколькими брокерами
В приведенных выше примерах используется только один брокер. Чтобы настроить настоящий кластер, нам просто нужно запустить более одного сервера kafka. Они будут автоматически координировать себя.
Шаг 1. Чтобы избежать столкновения, мы создаем файл server.properties для каждого брокера и изменяем свойства конфигурации id , port и logfile .
Копирование:
cp config/server.properties config/server-1.properties
cp config/server.properties config/server-2.properties
Изменить свойства для каждого файла, например:
vim config/server-1.properties
broker.id=1
listeners=PLAINTEXT://:9093
log.dirs=/usr/local/var/lib/kafka-logs-1
vim config/server-2.properties
broker.id=2
listeners=PLAINTEXT://:9094
log.dirs=/usr/local/var/lib/kafka-logs-2
Шаг 2: запустите трех брокеров:
kafka-server-start config/server.properties &
kafka-server-start config/server-1.properties &
kafka-server-start config/server-2.properties &
Создание реплицированной темы
kafka-topics --zookeeper localhost:2181 --create --replication-factor 3 --partitions 1 --topic replicated-topic
kafka-topics --zookeeper localhost:2181 --describe --topic replicated-topic
Topic:replicated-topic PartitionCount:1 ReplicationFactor:3 Configs:
Topic: replicated-topic Partition: 0 Leader: 1 Replicas: 1,2,0 Isr: 1,2,0
На этот раз есть дополнительная информация:
- «Лидер» - это узел, ответственный за все чтения и записи для данного раздела. Каждый узел будет лидером для случайно выбранной части разделов.
- «replicas» - это список узлов, которые реплицируют журнал для этого раздела независимо от того, являются ли они лидером или даже если они в настоящее время живы.
- «isr» - это набор реплик «in-sync». Это подмножество списка реплик, который в настоящее время жив и подхвачен лидеру.
Обратите внимание, что ранее созданный раздел остается неизменным.
проверка отказоустойчивости
Опубликуйте сообщение в новой теме:
kafka-console-producer --broker-list localhost:9092 --topic replicated-topic
hello 1
hello 2
^C
Убейте лидера (1 в нашем примере). В Linux:
ps aux | grep server-1.properties
kill -9 <PID>
В Windows:
wmic process get processid,caption,commandline | find "java.exe" | find "server-1.properties"
taskkill /pid <PID> /f
Посмотрите, что произошло:
kafka-topics --zookeeper localhost:2181 --describe --topic replicated-topic
Topic:replicated-topic PartitionCount:1 ReplicationFactor:3 Configs:
Topic: replicated-topic Partition: 0 Leader: 2 Replicas: 1,2,0 Isr: 2,0
Руководство переключилось на брокер 2 и «1» в несинхронный режим. Но сообщения все еще существуют (используйте потребитель, чтобы проверить самостоятельно).
Очистка
Удалите две темы, используя:
kafka-topics --zookeeper localhost:2181 --delete --topic test-topic
kafka-topics --zookeeper localhost:2181 --delete --topic replicated-topic