Поиск по сайту:

Как установить Apache Kafka на Ubuntu 14.04


Введение

Apache Kafka — популярный распределенный брокер сообщений, предназначенный для эффективной обработки больших объемов данных в режиме реального времени. Кластер Kafka не только обладает высокой масштабируемостью и отказоустойчивостью, но также имеет гораздо более высокую пропускную способность по сравнению с другими брокерами сообщений, такими как ActiveMQ и RabbitMQ. Хотя он обычно используется в качестве системы обмена сообщениями pub/sub, многие организации также используют его для агрегирования журналов, поскольку он предлагает постоянное хранилище для опубликованных сообщений.

В этом руководстве вы узнаете, как установить и использовать Apache Kafka 0.8.2.1 в Ubuntu 14.04.

Предпосылки

Чтобы следовать дальше, вам понадобятся:

  • Дроплет Ubuntu 14.04
  • Не менее 4 ГБ подкачки.

Шаг 1 — Создайте пользователя для Kafka

Поскольку Kafka может обрабатывать запросы по сети, вам следует создать для нее выделенного пользователя. Это сводит к минимуму ущерб вашей машине с Ubuntu, если сервер Kafka будет состоять из нее.

Примечание. После настройки Apache Kafka рекомендуется создать другого пользователя без полномочий root для выполнения других задач на этом сервере.

Как root, создайте пользователя с именем kafka с помощью команды useradd:

  1. useradd kafka -m

Установите его пароль с помощью passwd:

  1. passwd kafka

Добавьте его в группу sudo, чтобы у него были права, необходимые для установки зависимостей Kafka. Это можно сделать с помощью команды adduser:

  1. adduser kafka sudo

Теперь ваш пользователь Kafka готов. Войдите в него с помощью su:

  1. su - kafka

Шаг 2 — Установите Java

Перед установкой дополнительных пакетов обновите список доступных пакетов, чтобы установить последние версии, доступные в репозитории:

  1. sudo apt-get update

Поскольку Apache Kafka нуждается в среде выполнения Java, используйте apt-get для установки пакета default-jre:

  1. sudo apt-get install default-jre

Шаг 3 — Установите ZooKeeper

Apache ZooKeeper — это служба с открытым исходным кодом, созданная для координации и синхронизации информации о конфигурации узлов, принадлежащих распределенной системе. Кластер Kafka зависит от ZooKeeper для выполнения, среди прочего, таких операций, как обнаружение отказавших узлов и выбор лидеров.

Поскольку пакет ZooKeeper доступен в стандартных репозиториях Ubuntu, установите его с помощью apt-get.

  1. sudo apt-get install zookeeperd

После завершения установки ZooKeeper автоматически запустится как демон. По умолчанию он будет прослушивать порт 2181.

Чтобы убедиться, что он работает, подключитесь к нему через Telnet:

  1. telnet localhost 2181

В командной строке Telnet введите ruok и нажмите ENTER.

Если все в порядке, ZooKeeper скажет imok и завершит сеанс Telnet.

Шаг 4 — Загрузите и распакуйте двоичные файлы Kafka

Теперь, когда Java и ZooKeeper установлены, пришло время скачать и распаковать Kafka.

Для начала создайте каталог с именем Загрузки для хранения всех ваших загрузок.

  1. mkdir -p ~/Downloads

Используйте wget для загрузки двоичных файлов Kafka.

  1. wget "http://mirror.cc.columbia.edu/pub/software/apache/kafka/0.8.2.1/kafka_2.11-0.8.2.1.tgz" -O ~/Downloads/kafka.tgz

Создайте каталог с именем kafka и перейдите в этот каталог. Это будет базовый каталог установки Kafka.

  1. mkdir -p ~/kafka && cd ~/kafka

Извлеките загруженный архив с помощью команды tar.

  1. tar -xvzf ~/Downloads/kafka.tgz --strip 1

Шаг 5 — Настройте сервер Kafka

Следующим шагом будет настройка сервера Kakfa.

Откройте server.properties с помощью vi:

  1. vi ~/kafka/config/server.properties

По умолчанию Kafka не позволяет удалять темы. Чтобы иметь возможность удалять темы, добавьте в конец файла следующую строку:

delete.topic.enable = true

Сохраните файл и выйдите из vi.

Шаг 6 — Запустите сервер Kafka

Запустите сценарий kafka-server-start.sh с помощью nohup, чтобы запустить сервер Kafka (также называемый брокером Kafka) в качестве фонового процесса, независимого от сеанса вашей оболочки.

  1. nohup ~/kafka/bin/kafka-server-start.sh ~/kafka/config/server.properties > ~/kafka/kafka.log 2>&1 &

Подождите несколько секунд, пока он не запустится. Вы можете быть уверены, что сервер успешно запущен, когда увидите следующие сообщения в ~/kafka/kafka.log:


...

[2015-07-29 06:02:41,736] INFO New leader is 0 (kafka.server.ZookeeperLeaderElector$LeaderChangeListener)
[2015-07-29 06:02:41,776] INFO [Kafka Server 0], started (kafka.server.KafkaServer)

Теперь у вас есть сервер Kafka, который прослушивает порт 9092.

Шаг 7 — Проверьте установку

Давайте теперь опубликуем и воспользуемся сообщением «Hello World», чтобы убедиться, что сервер Kafka работает правильно.

Чтобы публиковать сообщения, вы должны создать производителя Kafka. Вы можете легко создать его из командной строки, используя скрипт kafka-console-producer.sh. В качестве аргументов он ожидает имя хоста и порт сервера Kafka, а также имя темы.

Опубликуйте строку «Hello, World» в теме под названием TutorialTopic, введя следующее:

  1. echo "Hello, World" | ~/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic TutorialTopic > /dev/null

Поскольку темы не существует, Kafka создаст ее автоматически.

Чтобы получать сообщения, вы можете создать потребителя Kafka с помощью скрипта kafka-console-consumer.sh. Он ожидает имя хоста и порт сервера ZooKeeper, а также имя темы в качестве своих аргументов.

Следующая команда использует сообщения из темы, в которой мы опубликовали. Обратите внимание на использование флага --from-beginning, который присутствует, потому что мы хотим использовать сообщение, которое было опубликовано до запуска потребителя.

  1. ~/kafka/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic TutorialTopic --from-beginning

Если проблем с конфигурацией нет, вы должны увидеть Hello, World в выходных данных.

Сценарий будет продолжать работать, ожидая публикации новых сообщений в теме. Смело открывайте новый терминал и запускайте продюсера, чтобы публиковать еще несколько сообщений. Вы должны иметь возможность мгновенно увидеть их все в выводе потребителя.

Когда вы закончите тестирование, нажмите CTRL+C, чтобы остановить потребительский скрипт.

Шаг 8 — Установите KafkaT (необязательно)

KafkaT — это небольшой удобный инструмент от Airbnb, который упрощает вам просмотр сведений о вашем кластере Kafka, а также выполняет несколько административных задач из командной строки. Поскольку это драгоценный камень Ruby, вам понадобится Ruby для его использования. Вам также понадобится пакет build-essential, чтобы иметь возможность собирать другие гемы, от которых он зависит. Установите их с помощью apt-get:

  1. sudo apt-get install ruby ruby-dev build-essential

Теперь вы можете установить KafkaT с помощью команды gem:

  1. sudo gem install kafkat --source https://rubygems.org --no-ri --no-rdoc

Используйте vi, чтобы создать новый файл с именем .kafkatcfg.

  1. vi ~/.kafkatcfg

Это файл конфигурации, который KafkaT использует для определения каталогов установки и журналов вашего сервера Kafka. Он также должен указать KafkaT на ваш экземпляр ZooKeeper. Соответственно, добавьте в него следующие строки:

{
  "kafka_path": "~/kafka",
  "log_path": "/tmp/kafka-logs",
  "zk_path": "localhost:2181"
}

Теперь вы готовы использовать KafkaT. Для начала, вот как вы можете использовать его для просмотра сведений обо всех разделах Kafka:

  1. kafkat partitions

Вы должны увидеть следующий вывод:

Topic		    Partition	Leader		Replicas		ISRs	
TutorialTopic	0		      0		      [0]			[0]

Чтобы узнать больше о KafkaT, обратитесь к его репозиторию GitHub.

Шаг 9 — Настройте многоузловой кластер (необязательно)

Если вы хотите создать кластер с несколькими брокерами, используя больше машин Ubuntu 14.04, вам следует повторить Шаг 1, Шаг 3, Шаг 4 и Шаг 5 на каждой из новых машин. Кроме того, вы должны внести следующие изменения в файл server.properties в каждом из них:

  • значение свойства broker.id должно быть изменено таким образом, чтобы оно было уникальным во всем кластере
  • значение свойства zookeeper.connect должно быть изменено таким образом, чтобы все узлы указывали на один и тот же экземпляр ZooKeeper

Если вы хотите иметь несколько экземпляров ZooKeeper для своего кластера, значение свойства zookeeper.connect на каждом узле должно быть идентичной строкой, разделенной запятыми, в которой перечислены IP-адреса и номера портов всех ZooKeeper. экземпляры.

Шаг 10 — Ограничьте пользователя Kafka

Теперь, когда все установки завершены, вы можете удалить права администратора пользователя kafka. Прежде чем сделать это, выйдите из системы и снова войдите в систему как любой другой пользователь sudo без полномочий root. Если вы все еще используете тот же сеанс оболочки, с которого начали это руководство, просто введите exit.

Чтобы лишить пользователя kafka прав администратора, удалите его из группы sudo.

  1. sudo deluser kafka sudo

Чтобы еще больше повысить безопасность вашего сервера Kafka, заблокируйте пароль пользователя kafka с помощью команды passwd. Это гарантирует, что никто не сможет войти в него напрямую.

  1. sudo passwd kafka -l

На данный момент только пользователь root или sudo может войти в систему как kafka, введя следующую команду:

  1. sudo su - kafka

В будущем, если вы захотите его разблокировать, используйте passwd с опцией -u:

  1. sudo passwd kafka -u

Заключение

Теперь у вас есть безопасный Apache Kafka, работающий на вашем сервере Ubuntu. Вы можете легко использовать его в своих проектах, создавая производителей и потребителей Kafka с помощью документации.