Kafka: установка и первый запуск
В этой статье мы рассмотрим установку и запуск Kafka под Ubuntu 16.04 (рецепт будет верен и для других Unix-систем).
Для начала нам нужно получить архив с Kafka и распаковать его.
Заходим в директорию, где вы храните эти ваши спарки, хадупы и стягиваем "десятку" отсюда.
$ cd <your_favorite_directory>
$ wget http://apache-mirror.rbc.ru/pub/apache/kafka/0.10.2.0/kafka_2.11-0.10.2.0.tgz
Как и в случае с большинством апачевских изделий, архив нужно распаковать (а по-хорошему еще и переименовать во что-то удобоваримое читабельности ради).
$ tar xvf kafka_2.11-0.10.2.0.tgz
$ mv kafka_2.11-0.10.2.0 Kafka
Ой, все.
P.S. Под Windows запустить можно, но таки зачем вам этот геморрой?
Запуск
Дело в том, что Kafka идет в комплекте не одна, а вместе со своим напарником, Zookeeper-ом (возможно знакомым вам по таким фильмам, как "Hadoop и High Availability" и "Ненависть к хранению конфигов").
И вот этот самый Zookeeper надо стартовать сначала. Это не проблема, т.к. он уже идет в поставке и полностью интегрирован. Впрочем, если у вас есть свой готовый Zookeeper-кластер, то и его можно сцепить с Kafka.
Но для первого знакомства нам хватит скрипта zookeeper-server-start.sh, который идет в поставке Kafka. Откроем
$ cd Kafka
$ bin/zookeeper-server-start.sh config/zookeeper.properties
Надо понимать, что мы стартуем со стандратным конфигом, который шел с Kafka, о том, как его править, будет в следующих частях.
Самая типичная ошибка, с которой валится Zookeeper - некорреткный путь к конфигам или некорректные конфиги. Правьте их с осторожностью.
Теперь можно запустить своего самого первого кафкианского брокера, в некотором смысле аналога Worker-а/Executor-а в других распределенных вычислительных системах.
$ bin/kafka-server-start.sh config/server.properties
Кафка есть, но пока ничего ни писать, ни читать из нее невозможно, так как нет ни самих сообщений, ни источников, ни стоков, нет и некоей категории/таблицы/тэга, под вывеской которых можно было бы стримить данные. И имя этой категории - topic [топик далее].
Первый топик
Так как мы планируем пока использовать Kafka как систему для передачи сообщений, то первый топик и будет называться "messages". Топик можно создать и программно, но пока никаких программ мы не написали, поэтому воспользуемся прекрасным скриптом с набором конфигурируемых параметров.
$ bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 3 --topic messages
Что тут произошло? Мы попросили Kafka создать топик в связке с ранее запущенным экземпляром Zookeeper, без репликации (т.к. у нас один брокер и вообще песочный запуск), разделить топик на три примерно равных партиции (отвечая в будущем за их балансировку) и наречь сей топик именем "messages".
Следующая команда позволяет вам убедиться, что созданный вами топик уже известен развернутой системе.
$ bin/kafka-topics.sh --list --zookeeper localhost:2181
Вот и все на сегодня. В следующих статьях мы познакомимся с отправкой и получением сообщений при помощи Kafka.