Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Apache Kafka — это распределенная платформа потоковой передачи с открытым кодом. Она часто используется как брокер сообщений, предоставляя такие же функциональные возможности, как и очередь сообщений типа "публикация-подписка".
Из этого краткого руководства вы узнаете, как создать кластер Apache Kafka с помощью портала Azure. Вы также узнаете, как с помощью предоставленных служебных программ отправлять и получать сообщения, используя Apache Kafka. Подробные объяснения доступных конфигураций см. в статье Set up clusters in HDInsight with Apache Hadoop, Apache Spark, Apache Kafka, and more (Установка кластеров в HDInsight с использованием Apache Hadoop, Apache Spark, Apache Kafka и других технологий). Дополнительные сведения об использовании портала для создания кластеров см. в статье Create Linux-based clusters in HDInsight by using the Azure portal (Создание кластеров под управлением Linux в HDInsight с помощью портала Azure).
Предупреждение
Счета за кластеры HDInsight выставляются пропорционально в минутах, независимо от их использования. Обязательно удалите кластер, когда завершите его использование. См. как удалить кластер HDInsight.
API Apache Kafka доступен только ресурсам, размещенным в той же виртуальной сети. В этом кратком руководстве вы напрямую обращаетесь к кластеру по протоколу SSH. Чтобы подключить к Apache Kafka другие службы, сети или виртуальные машины, необходимо сначала создать виртуальную сеть, а затем создать в ней эти ресурсы. Дополнительные сведения см. в документе Подключение к Apache Kafka с помощью виртуальной сети. Дополнительные сведения о планировании виртуальных сетей для HDInsight см. в статье Планирование виртуальной сети для Azure HDInsight.
Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.
Предварительные условия
Клиент SSH. Дополнительные сведения см. в руководстве по подключению к HDInsight (Apache Hadoop) с помощью SSH.
Создание кластера Apache Kafka
Чтобы создать кластер Apache Kafka в HDInsight, сделайте следующее.
Войдите на портал Azure.
В меню сверху выберите + Create a resource (+ Создать ресурс).
Выберите разделы Analytics>Azure HDInsight, чтобы перейти на страницу Создание кластера HDInsight.
На вкладке Основные сведения укажите следующую информацию:
Недвижимость Описание Подписка В раскрывающемся списке выберите подписку Azure, которая используется для кластера. Группа ресурсов Создайте новую группу ресурсов или выберите имеющуюся группу ресурсов. Группа ресурсов — это контейнер компонентов Azure. В данном случае группа ресурсов содержит кластер HDInsight и зависимую учетную запись хранения Azure. Имя кластера Введите глобально уникальное имя. Имя может содержать до 59 знаков, включая буквы, цифры и дефисы. Первый и последний знаки в имени не могут быть дефисами. Область/регион В раскрывающемся списке выберите регион, в котором создается кластер. Выберите ближайший к себе регион для повышения производительности. Тип кластера Щелкните Выберите тип кластера, чтобы открыть список. В списке выберите Kafka в качестве типа кластера. Версия Для типа кластера будет указана версия по умолчанию. Если хотите указать другую версию, выберите ее из раскрывающегося списка. Имя для входа и пароль для кластера Имя входа по умолчанию — admin
. Пароль должен содержать по крайней мере 10 символов в длину и содержать по крайней мере одну цифру, одну заглавную и одну строчную букву, один небуквенно-цифровой символ (за исключением символов' ` "
). Убедитесь, что вы не предоставляете общие пароли,Pass@word1
например.Имя пользователя для Secure Shell (SSH) Имя пользователя по умолчанию — sshuser
. Можно указать другое имя пользователя SSH.Использовать логин и пароль кластера при подключении через SSH Установите этот флажок, чтобы использовать одинаковый пароль для пользователя SSH и имени для входа для кластера. В каждом регионе Azure (расположении) предоставляются домены сбоя. Домен сбоя — это логическое объединение базового оборудования в центре обработки данных Azure. Все домены сбоя используют общий источник питания и сетевой коммутатор. Виртуальные машины и управляемые диски, на которых реализуются узлы в кластере HDInsight, распределяются по этим доменам сбоя. Такая архитектура ограничивает потенциальное влияние сбоев физического оборудования.
Для обеспечения высокой доступности данных выберите регион (расположение), содержащий три домена сбоя. Для получения информации о количестве доменов сбоя в регионе см. документ Доступность виртуальных машин Linux.
Нажмите кнопку Далее: Хранилище>> для перехода к настройкам хранилища.
На вкладке Хранилище укажите следующие значения:
Свойство Описание Тип первичного хранилища Используйте значение Azure Storage по умолчанию. Метод выбора Используйте значение Выбрать в списке по умолчанию. Основная учетная запись хранилища Используйте раскрывающийся список, чтобы выбрать имеющуюся учетную запись хранения, или создайте новую, щелкнув Создать. При создании учетной записи имя должно содержать от 3 до 24 символов, включая цифры и строчные буквы Контейнер Используйте значение, предоставленное автоматически. Выберите вкладку Безопасность и сетевые подключения.
Для этого краткого руководства значения параметров безопасности оставьте по умолчанию. Дополнительные сведения о пакете корпоративной безопасности см. в статье "Настройка кластера HDInsight с корпоративным пакетом безопасности с помощью доменных служб Microsoft Entra". Чтобы узнать, как использовать собственный ключ для шифрования дисков в Apache Kafka, посетите страницу по шифрованию дисков с использованием ключа, управляемого клиентом.
Если вы хотите подключить к виртуальной сети кластер, выберите виртуальную сеть из раскрывающегося списка Виртуальная сеть.
Перейдите на вкладку Конфигурация и цены.
Для гарантии доступности Apache Kafka на HDInsight число узлов для рабочего узла должно составлять 3 или более. Значение по умолчанию — 4.
Стандартное количество дисков на рабочий узел настраивает степень масштабируемости Apache Kafka в HDInsight. Кластер Apache Kafka в HDInsight использует локальный диск виртуальных машин в кластере для хранения данных. Apache Kafka обрабатывает большое количество операций ввода-вывода, поэтому используются Управляемые диски Azure, чтобы обеспечить высокую пропускную способность и предоставить дополнительное хранилище для каждого узла. Управляемый диск может быть двух типов: Стандартный (HDD) или Премиум (SSD). Тип диска зависит от размера виртуальной машины, используемой рабочими узлами (брокерами Apache Kafka). Диски категории "Премиум" автоматически используются для виртуальных машин серий DS и GS. Для всех остальных типов виртуальных машин используется стандарт.
Выберите вкладку Просмотр и создание.
Проверьте конфигурацию кластера. Измените неправильные параметры. Наконец, выберите Создать, чтобы создать кластер.
Операция создания кластера может занять до 20 минут.
Подключение к кластеру
С помощью команды ssh command подключитесь к кластеру. Измените приведенную ниже команду, заменив CLUSTERNAME именем своего кластера, а затем введите команду:
ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
При появлении запроса введите пароль пользователя SSH.
После подключения отобразятся сведения, аналогичные приведенному ниже тексту.
Authorized uses only. All activity may be monitored and reported. Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.13.0-1011-azure x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage Get cloud support with Ubuntu Advantage Cloud Guest: https://www.ubuntu.com/business/services/cloud 83 packages can be updated. 37 updates are security updates. Welcome to Apache Kafka on HDInsight. Last login: Thu Mar 29 13:25:27 2018 from 108.252.109.241
Получите информацию о хостах Apache Zookeeper и брокера
Для работы с Kafka необходимы сведения об узле Apache Zookeeper и узле брокера. Эти узлы используются с API Apache Kafka и многими служебными программами, поставляемыми с платформой Kafka.
В этом разделе вы получите информацию о хосте кластера с помощью REST API Apache Ambari.
Установите jq — обработчик командной строки JSON. Эта служебная программа используется для анализа документов JSON. С ее помощью также удобно анализировать сведения об узлах. В открытом сеансе SSH-подключения введите следующую команду для установки
jq
:sudo apt -y install jq
Настройте переменную пароля. Замените
PASSWORD
паролем для входа в кластер, а затем введите следующую команду:export PASSWORD='PASSWORD'
Извлеките имя кластера с правильно выбранным регистром. Фактический регистр имени кластера может отличаться от ожидаемого, в зависимости от способа создания кластера. Эта команда получит фактический регистр, а затем сохранит его в переменной. Введите следующую команду:
export CLUSTER_NAME=$(curl -u admin:$PASSWORD -sS -G "http://headnodehost:8080/api/v1/clusters" | jq -r '.items[].Clusters.cluster_name')
Примечание.
Если вы выполняете этот процесс вне кластера, используйте другой способ хранения имени кластера. Получите имя кластера в нижнем регистре из портала Azure. Затем измените имя кластера на
<clustername>
в следующей команде и выполните ее:export clusterName='<clustername>'
.Чтобы задать переменную среды со сведениями об узле Zookeeper, выполните следующую команду. Эта команда извлекает все хосты Zookeeper, а затем возвращает только первые две записи. Причина этого состоит в том, что требуется обеспечить избыточность на случай, если один из хостов станет недоступным.
export KAFKAZKHOSTS=$(curl -sS -u admin:$PASSWORD -G https://$CLUSTER_NAME.azurehdinsight.net/api/v1/clusters/$CLUSTER_NAME/services/ZOOKEEPER/components/ZOOKEEPER_SERVER | jq -r '["\(.host_components[].HostRoles.host_name):2181"] | join(",")' | cut -d',' -f1,2);
Примечание.
Для этой команды требуется доступ к Ambari. Если кластер находится за пределами NSG, выполните эту команду на компьютере с доступом к Ambari.
Чтобы убедиться, что переменную среды задано верно, выполните следующую команду.
echo $KAFKAZKHOSTS
Эта команда возвращает сведения аналогичные следующим:
<zookeepername1>.eahjefxxp1netdbyklgqj5y1ud.ex.internal.cloudapp.net:2181,<zookeepername2>.eahjefxxp1netdbyklgqj5y1ud.ex.internal.cloudapp.net:2181
Чтобы задать переменную среды со сведениями об узле брокера Apache Kafka, выполните следующую команду.
export KAFKABROKERS=$(curl -sS -u admin:$PASSWORD -G https://$CLUSTER_NAME.azurehdinsight.net/api/v1/clusters/$CLUSTER_NAME/services/KAFKA/components/KAFKA_BROKER | jq -r '["\(.host_components[].HostRoles.host_name):9092"] | join(",")' | cut -d',' -f1,2);
Примечание.
Для этой команды требуется доступ к Ambari. Если кластер находится за пределами NSG, выполните эту команду на компьютере с доступом к Ambari.
Чтобы убедиться, что переменную среды задано верно, выполните следующую команду.
echo $KAFKABROKERS
Эта команда возвращает сведения аналогичные следующим:
<brokername1>.eahjefxxp1netdbyklgqj5y1ud.cx.internal.cloudapp.net:9092,<brokername2>.eahjefxxp1netdbyklgqj5y1ud.cx.internal.cloudapp.net:9092
Управление разделами Apache Kafka
Kafka хранит потоки данных в разделах. Для управления разделами можно использовать служебную программу kafka-topics.sh
.
Чтобы создать раздел, в сеансе SSH-подключения выполните следующую команду.
/usr/hdp/current/kafka-broker/bin/kafka-topics.sh --create --replication-factor 3 --partitions 8 --topic test --bootstrap-server $KAFKABROKERS
Эта команда подключается к Брокеру с помощью сведений о узле, хранящихся в
$KAFKABROKERS
. Затем она создает раздел Apache Kafka с именем test.Данные, хранящиеся в этом разделе, разделены на восемь секций.
Каждый раздел реплицируется на три рабочих узла в кластере.
Если кластер был создан в регионе Azure, который предоставляет три домена сбоя, то следует использовать коэффициент репликации, равный 3. В противном случае следует использовать коэффициент репликации, равный 4.
В регионах с тремя доменами сбоя коэффициент репликации, равный 3, обеспечивает распределение реплик по доменам сбоя. В регионах с двумя доменами сбоя коэффициент репликации, равный 4, обеспечивает равномерное распределение реплик по доменам сбоя.
Для получения информации о числе доменов отказа в регионе см. документ Доступность виртуальных машин на Linux.
В Apache Kafka нет сведений о доменах сбоя Azure. При создании реплик секций для разделов реплики могут быть неправильно распределены с точки зрения высокой доступности.
Для обеспечения высокого уровня доступности используйте средство перераспределения секций Apache Kafka. Этот инструмент следует запускать из сеанса SSH-подключения на головном узле кластера Apache Kafka.
Чтобы обеспечить максимально высокий уровень доступности данных Apache Kafka, следует перераспределять реплики секций для раздела в следующих случаях:
вы создаете новую тему или раздел
Вы увеличиваете масштаб кластера.
Чтобы вывести список разделов, введите следующую команду.
/usr/hdp/current/kafka-broker/bin/kafka-topics.sh --list --bootstrap-server $KAFKABROKERS
Она выводит список разделов на кластере Apache Kafka.
Чтобы удалить раздел, используйте следующую команду.
/usr/hdp/current/kafka-broker/bin/kafka-topics.sh --delete --topic topicname --bootstrap-server $KAFKABROKERS
Эта команда удаляет тему с именем
topicname
.Предупреждение
Если вы уже удалили раздел
test
, то необходимо создать его заново. Он используется на последующих этапах в этом документе.
Чтобы получить дополнительные сведения о командах, доступных в служебной программе kafka-topics.sh
, используйте следующую команду.
/usr/hdp/current/kafka-broker/bin/kafka-topics.sh
Создание и использование записей
В Kafka записи хранятся в разделах. Записи создаются производителями, а используются потребителями. Производители и потребители взаимодействуют со службой брокера Kafka. Каждый рабочий узел в кластере HDInsight — это сервер брокера Apache Kafka.
Чтобы сохранить записи в созданную ранее тему теста и затем прочитать их с помощью консьюмера, выполните следующие шаги:
Чтобы записать записи в тему, используйте служебную программу
kafka-console-producer.sh
из SSH-подключения./usr/hdp/current/kafka-broker/bin/kafka-console-producer.sh --broker-list $KAFKABROKERS --topic test
После выполнения этой команды вы перейдете к пустой строке.
Введите текстовое сообщение в пустую строку и нажмите клавишу ВВОД. Введите несколько таких сообщений, а затем нажмите клавиши CTRL+C, чтобы вернуться к обычной командной строке. Каждая строка отправляется в раздел Apache Kafka как отдельная запись.
Чтобы считать записи из топика, используйте служебную программу
kafka-console-consumer.sh
из подключения по SSH./usr/hdp/current/kafka-broker/bin/kafka-console-consumer.sh --bootstrap-server $KAFKABROKERS --topic test --from-beginning
Эта команда извлекает записи из раздела, а затем отображает их. Параметр
--from-beginning
указывает потребителю считывать данные с самого начала потока, поэтому будут извлечены все записи.Если вы используете более раннюю версию Kafka, замените
--bootstrap-server $KAFKABROKERS
на--zookeeper $KAFKAZKHOSTS
.Нажмите клавиши Ctrl + C, чтобы остановить процесс.
Вы также можете программно создавать производителей и потребителей. Пример использования этого API см. в руководстве Использование API производителя и потребителя Apache Kafka.
Очистка ресурсов
Чтобы очистить ресурсы, созданные в рамках этого быстрого запуска, можно удалить группу ресурсов. При этом будет удален связанный кластер HDInsight и другие ресурсы, связанные с этой группой ресурсов.
Чтобы удалить группу ресурсов с помощью портала Azure, сделайте следующее:
- На портале Azure разверните меню слева, чтобы открыть меню служб, а затем выберите Группы ресурсов, чтобы просмотреть список групп ресурсов.
- Найдите группу ресурсов, которую нужно удалить, и щелкните правой кнопкой мыши кнопку Дополнительно (…) справа от списка.
- Выберите Удалить группу ресурсов и подтвердите выбор.
Предупреждение
При удалении кластера Apache Kafka в HDInsight удаляются все хранимые данные в Kafka.