Apache Kafka. Потоковая обработка и анализ данных. Apache Kafka. Потоковая обработка и анализ данныхСерия Бестселлеры OReilly
Скачать 7.59 Mb.
|
Создание пользовательского сериализатора Пользовательские сериализаторы должны расширять класс kafka.serializer.Encoder. Их можно использовать для преобразования полученных из стандартного потока ввода строк в подходящую для темы кодировку, например Avro или Protobuf. Небезопасные операции 239 Параметры построчного чтения У.класса. kafka.tools.LineMessageReader ,.отвечающего.за.чтение.из.стандартного. потока.ввода.и.создание.записей.для.производителей,.также.есть.несколько.удоб- ных.параметров,.которые.можно.передать.консольному.производителю.с.помощью. параметра.командной.строки. --property : ignore.error .—.установите.в. false ,.чтобы.при.отсутствии.разделителя.ключей. при. parse.key=true .генерировалось.исключение..По.умолчанию. true ; parse.key .—.установите.в. false ,.чтобы.ключ.всегда.оставался.пустым..По.умол- чанию. true ; key.separator .—.определяет,.какой.разделитель.между.ключом.и.значением. сообщения.будет.использоваться.при.чтении. При.генерации.сообщений. LineMessageReader .будет.разбивать.поступившие.вход- ные.данные.в.точке.первого.вхождения. key.separator ..Если.далее.не.остается. никаких.символов,.значение.сообщения.будет.пустым..Если.в.строке.отсутствует. символ-разделитель.для.ключа.или. parse.key=false ,.то.ключ.будет.пустым. Списки управления доступом клиентов Для.взаимодействия.с.механизмом.управления.доступом.(ACL).клиентов.Kafka.су- ществует.утилита.командной.строки,. kafka-acls.sh ..Дополнительную.информацию. об.ACL.и.безопасности.можно.найти.на.сайте.Apache.Kafka.( https://kafka.apache.org/ ) Небезопасные операции Среди.административных.задач.есть.и.такие,.которые.технически.выполнить.возмож- но,.но.лучше.этого.не.делать,.разве.что.в.самом.крайнем.случае,.например,.при.диагно- стике.проблем,.когда.все.остальные.варианты.исчерпаны,.или.при.поиске.обходного. пути.для.решения.конкретной.ошибки..Эти.операции.обычно.не.документированы,. не.поддерживаются,.и.их.выполнение.несет.некоторые.риски.для.приложения. Несколько.наиболее.распространенных.из.них.описаны.далее,.чтобы.в.непред- виденной.ситуации.был.лишний.вариант.восстановления..При.нормальном.функ- ционировании.кластера.использовать.их.не.рекомендуется,.так.что,.прежде.чем.их. запустить,.стоит.дважды.подумать. Опасность: Неизведанная территория Операции из этого раздела предполагают работу напрямую с хранящимися в ZooKeeper метаданными. Это чрезвычайно опасная операция, так что будьте осторожны и не модифицируйте напрямую информацию в ZooKeeper, за исклю- чением рассмотренных далее случаев. 240 Глава 9 • Администрирование Kafka Перенос контроллера кластера У.каждого.кластера.Kafka.есть.контроллер,.представляющий.собой.запущенный.на. одном.из.брокеров.поток.выполнения..Контроллер.отвечает.за.управление.опера- циями.кластера,.и.время.от.времени.рекомендуется.переносить.его.на.другой.бро- кер..В.качестве.примера.можно.привести.ситуацию,.когда.в.контроллере.возникло. исключение.или.какая-либо.другая.проблема,.в.результате.чего.он.продолжает. работать,.но.уже.не.выполняет.свои.функции..Перенос.контроллера.в.подобных. случаях.не.представляет.особого.риска,.но.это.нестандартная.операция,.и.выпол- нять.ее.регулярно.не.стоит. Брокер,.который.является.текущим.контроллером,.регистрируется.с.помощью. узла.ZooKeeper. /controller .на.верхнем.уровне.пути.кластера..Если.удалить.этот. узел.вручную,.то.текущий.контроллер.сложит.полномочия.и.кластер.выберет. новый. Отмена перемещения раздела Обычная.последовательность.выполняемых.действий.при.перераспределении. разделов. 1.. Выполняется.запрос.перераспределения.(создание.узла.ZooKeeper). 2.. Контроллер.добавляет.кластер.разделов.в.новые.брокеры. 3.. Новые.брокеры.приступают.к.репликации.разделов.и.делают.это.вплоть.до.до- стижения.согласованности. 4.. Контроллер.кластера.удаляет.старые.брокеры.из.списка.реплик.разделов. Поскольку.запрошенные.перераспределения.запускаются.параллельно,.при.нор- мальных.обстоятельствах.причин.для.отмены.происходящего.перераспределения. нет..Одно.из.исключений.—.сбой.брокера.посередине.процесса.перераспределения. и.невозможность.его.(брокера).немедленного.перезапуска..В.результате.перерас- пределение.никогда.не.завершится,.тем.самым.препятствуя.запуску.дополнитель- ных.перераспределений.(например,.для.удаления.разделов.со.сбойного.брокера. и.распределения.их.по.другим.брокерам)..В.подобных.случаях.можно.заставить. кластер.забыть.об.этом.перераспределении. Для.удаления.выполняемого.в.данный.момент.перераспределения.сделайте.сле- дующее. 1.. Удалите.узел.ZooKeeper. /admin/reassign_partitions .из.пути.кластера. Kafka. 2.. Принудительно.инициируйте.перемещение.контроллера.(см..подробности. в.разделе.«Перенос.контроллера.кластера».ранее.в.главе). Небезопасные операции 241 Проверка коэффициентов репликации При отмене текущего перемещения раздела, действия над которым еще не были завершены, старые брокеры не будут удалены из списка реплик. Это значит, что коэффициент репликации части разделов может оказаться больше, чем планировалось. Брокер не позволит выполнять некоторые административные операции с темами, в которых есть разделы с несогласованными коэффициентами репликации. Рекомендуется просмотреть обрабатываемые разделы и убедиться, что их коэффициенты репликации верны. Отмена удаления тем При.удалении.темы.с.помощью.утилит.командной.строки.узел.ZooKeeper.за- прашивает.удаление..При.обычных.обстоятельствах.кластер.выполняет.это.не- медленно..Однако.утилита.командной.строки.никак.не.может.знать,.включена.ли. возможность.удаления.тем.в.кластере..В.результате.удаление.темы.запрашивается. в.любом.случае,.так.что.если.эта.настройка.отключена,.вас.будет.ждать.неприятный. сюрприз..Избежать.этого.помогает.возможность.отмены.ожидающих.выполнения. запросов.на.удаление.тем. Удаление.темы.запрашивается.созданием.в. /admin/delete_topic .дочернего.узла. ZooKeeper,.название.которого.соответствует.названию.темы..Удаление.этих.узлов. ZooKeeper.(но.не.родительского.узла. /admin/delete_topic ).приводит.к.удалению. ожидающих.выполнения.запросов. Удаление тем вручную Если.удаление.тем.в.вашем.кластере.отключено.или.вам.понадобилось.убрать. какие-либо.темы.вне.нормального.технологического.процесса,.существует.возмож- ность.вручную.удалять.их.из.кластера..Однако.для.этого.необходимо.остановить. все.работающие.брокеры.кластера. Сначала остановите брокеры Модификация метаданных кластера в ZooKeeper во время его (кластера) работы — очень опасная операция, которая может привести к нестабильности кластера. Никогда не пытайтесь удалять или модифицировать метаданные темы в ZooKeeper во время работы кластера. Для.удаления.темы.из.кластера.сделайте.следующее. 1.. Остановите.все.брокеры.кластера. 2.. Удалите.каталог.ZooKeeper. /brokers/topics/TOPICNAME .из.пути.кластера.Kafka.. Обратите.внимание.на.то,.что.сначала.необходимо.удалить.его.дочерние.узлы. 242 Глава 9 • Администрирование Kafka 3.. Удалите.каталоги.разделов.из.каталогов.журналов.всех.брокеров..Они.называ- ются. TOPICNAME-NUM ,.где. NUM .—.идентификаторы.разделов. 4.. Перезапустите.все.брокеры. Резюме Эксплуатация.кластера.Kafka.—.непростая.задача,.поскольку.имеется.множество. настроек.и.задач.по.сопровождению,.необходимых.для.обеспечения.максимальной. производительности..В.этой.главе.мы.обсудили.многие.задачи,.которые.часто.тре- буется.выполнять.регулярно,.например,.администрирование.настроек.тем.и.кли- ентов..Рассмотрели.также.более.нетривиальные.операции,.порой.необходимые.для. отладки,.например,.просмотр.сегментов.журналов..Наконец.описали.несколько. небезопасных.нерегулярных.операций,.которые.иногда.приходится.выполнять,. чтобы.выйти.из.проблемных.ситуаций..Все.вместе.эти.утилиты.чрезвычайно.по- лезны.для.управления.кластером.Kafka. Конечно,.управлять.кластером.Kafka.невозможно.без.должного.мониторинга.. В.главе.10.мы.обсудим.способы.мониторинга.состояния.и.функционирования.бро- керов.и.кластера,.благодаря.которым.вы.сможете.быть.уверены,.что.Kafka.работает. должным.образом,.или.будете.знать,.что.это.не.так..Опишем.также.рекомендуемые. практики.мониторинга.клиентов.—.как.производителей,.так.и.потребителей. 10 Мониторинг Kafka У.приложений.Kafka.множество.показателей.для.отслеживания.функционирова- ния..Их.столько,.что.можно.легко.запутаться,.что.важно.отслеживать,.а.что.можно. не.учитывать,.от.простых.показателей.общей.интенсивности.трафика.до.подробных. показателей.хронометража.для.всех.типов.запросов,.в.том.числе.по.отдельным. темам.и.разделам..Благодаря.им.у.вас.будет.подробная.информация.обо.всех.про- изводимых.на.брокере.операциях,.но.они.же.могут.стать.настоящим.проклятием. ответственных.за.мониторинг.системы. В.этом.разделе.мы.подробно.опишем.важнейшие.показатели,.которые.следу- ет.контролировать.постоянно,.и.расскажем,.как.реагировать.на.их.изменения.. Мы.также.опишем.некоторые.из.показателей,.которые.могут.пригодиться.при. отладке..Конечно,.наш.список.—.отнюдь.не.исчерпывающий,.поскольку.перечень. доступных.показателей.часто.меняется.и.многие.из.них.имеют.смысл.только.для. разработчиков.ядра.Kafka. Основы показателей Прежде.чем.углубиться.в.рассмотрение.показателей.брокера.и.клиентов.Kafka,. поговорим.об.основах.мониторинга.приложений.Java.и.рекомендуемых.к.использо- ванию.при.мониторинге.и.уведомлении.пользователей.практиках..Этот.фундамент. позволит.вам.понять,.как.выполнять.мониторинг.своих.приложений.и.почему.мы. считаем.наиболее.важными.именно.те.показатели,.которые.обсуждаются.далее. в.этой.главе. Как получить доступ к показателям Ко.всем.показателям.Kafka.можно.обращаться.через.интерфейс.расширений.Java. для.управления.(Java.Management.Extensions,.JMX)..Удобнее.всего.использовать. их.во.внешней.системе.посредством.подсоединения.к.процессу.Kafka.агента-сбор- щика,.предоставляемого.вашей.системой.мониторинга..Он.может.быть.отдельным. 244 Глава 10 • Мониторинг Kafka системным.процессом,.который.подключается.к.интерфейсу.JMX,.как.это.делают. плагины.check_jmx.системы.мониторинга.Nagios.XI.или.jmxtrans..Можно.также. воспользоваться.JMX-агентом,.запускаемым.непосредственно.внутри.процесса. Kafka.для.доступа.к.показателям.по.протоколу.HTTP,.например.Jolokia.или. MX4J. Детальное.обсуждение.настройки.агентов.мониторинга.выходит.за.рамки.данной. главы,.и.вариантов.слишком.много,.чтобы.охватить.все..Если.ваша.компания.пока. не.занималась.мониторингом.приложений.Java,.возможно,.лучшим.решением.будет. мониторинг.как.сервис..Существует.множество.компаний,.предлагающих.агенты. мониторинга,.точки.сбора.показателей,.их.хранение,.графическое.отображение. и.уведомление.о.проблемах.в.составе.пакета.сервисов..Они.же.помогут.вам.и.в.на- стройке.нужных.агентов.мониторинга. Как найти порт JMX Чтобы упростить настройку приложений, подключающихся к JMX брокера Kafka напрямую, следует указать настроенный JMX-порт в настройках брокера, храни- мых в ZooKeeper. Z-узел /brokers/ids/ JSON, включая ключи hostname и jmx_port. Внешние и внутренние показатели Предоставляемые.по.интерфейсу.JMX.показатели.—.внутренние,.они.формируются. и.выдаются.самим.контролируемым.приложением..Для.большинства.внутренних. показателей,.например,.хронометража.отдельных.этапов.запроса,.это.оптимальный. вариант..Лишь.у.самого.приложения.имеется.настолько.подробная.информация.. Существуют.и.другие.показатели,.например,.общее.время.выполнения.запроса.или. доступность.конкретного.типа.запроса,.которые.можно.оценить.извне.приложения.. То.есть.сервер.(в.нашем.случае.брокер).будет.получать.показатели.от.клиента.Kafka. или.другого.стороннего.приложения..В.их.числе.зачастую.оказываются.такие,.как. доступность.(доступен.ли.брокер?).и.время.задержки.(сколько.времени.занимает. выполнение.запроса?)..Они.позволяют.оценить.приложение.со.стороны,.что.за- частую.более.информативно. Один.из.традиционных.примеров.ценности.внешних.показателей.—.мониторинг. состояния.сайта..Веб-сервер.работает.нормально.и.все.его.показатели.говорят,.что. сайт.функционирует..Однако.существует.проблема.с.сетью.между.веб-сервером. и.внешними.пользователями,.из-за.чего.веб-сервер.недоступен.пользователям.. Внешний.мониторинг,.выполняемый.за.пределами.сети,.с.помощью.которого.про- веряют.доступность.сайта,.может.обнаружить.подобную.проблему.и.уведомить.вас. о.ситуации. Основы показателей 245 Контроль состояния приложения Вне.зависимости.от.способа.сбора.показателей.Kafka.необходимо.также.контро- лировать.общее.состояние.процесса.приложения.с.помощью.простой.проверки. рабочего.состояния..Сделать.это.можно.двумя.способами: с.помощью.внешнего.процесса,.который.сообщает,.работает.брокер.или.отклю- чен.(проверка.состояния); посредством.того,.что.брокер.Kafka.оповещает.об.отсутствии.показателей.(ко- торые.иногда.называют.устаревшими показателями). Хотя.второй.метод.работает,.при.его.использовании.трудно.отличить.сбой.брокера. Kafka.от.сбоя.самой.системы.мониторинга. Для.брокера.Kafka.такой.контроль.состояния.можно.выполнить,.просто.подклю- чившись.к.внешнему.порту.(тому.самому,.который.используют.для.подключения. к.брокеру.клиенты).и.проверив,.отвечает.ли.брокер..Для.клиентских.приложений. задача.усложняется.и.может.варьироваться.от.простой.проверки.того,.работает.ли. процесс,.до.написания.внутреннего.метода,.который.определяет.состояние.при- ложения. Охват показателей С.учетом.числа.доступных.в.Kafka.показателей.важно.тщательно.выбирать,.на.ка- кие.из.них.обращать.внимание..Особую.важность.это.приобретает.при.настройке. уведомлений.на.их.основе..Слишком.легко.поддаться.усталости.от.уведомлений,. когда.их.всплывает.так.много,.что.невозможно.понять,.какая.проблема.серьезна,. а.какая.нет..Непросто.также.задать.должным.образом.пороговые.значения.для.всех. показателей.и.поддерживать.их.актуальность..Если.уведомлений.слишком.много. или.они.часто.оказываются.некорректными,.перестаешь.верить,.что.они.правильно. описывают.состояние.приложения. Гораздо.лучше.иметь.несколько.высокоуровневых.уведомлений..Например,.вы. можете.получать.одно.уведомление.о.масштабной.проблеме,.с.тем.чтобы.сразу. начать.собирать.дополнительные.данные.для.выяснения.конкретики..Аналогом. можно.считать.индикатор.«Проверить.двигатель».в.автомобиле..Сотня.индика- торов.на.панели,.каждый.из.которых.сигнализировал.бы.об.отдельных.проблемах. с.воздушным.фильтром,.маслом,.выхлопной.трубой.и.т..д.,.только.запутала.бы. водителя..Вместо.этого.существует.один.индикатор,.сообщающий.о.проблеме,. и.есть.возможность.получить.более.подробную.информацию.о.том,.в.чем.имен- но.заключается.проблема..На.протяжении.данной.главы.мы.будем.отмечать. показатели.с.максимальным.охватом,.позволяющие.упростить.систему.опове- щения. 246 Глава 10 • Мониторинг Kafka Показатели брокеров Kafka Существует.множество.показателей.брокеров.Kafka..Многие.из.них.представляют. собой.низкоуровневые.показатели,.добавленные.разработчиками.при.поиске.при- чин.конкретных.проблем.или.ради.возможности.получения.отладочной.информа- ции.в.будущем..Имеются.показатели.практически.по.каждой.функции.в.брокере,. но.чаще.всего.используются.те,.которые.дают.необходимую.для.ежедневной.работы. Kafka.информацию. Кто наблюдает за наблюдателями? Множество компаний используют Kafka для сбора показателей приложений, си- стемных показателей и журналов для дальнейшей отправки в централизованную систему мониторинга. Это отличный способ отделения приложений от системы мониторинга, но существует нюанс, связанный с Kafka. Если использовать эту же систему для мониторинга самой Kafka, то очень вероятно, что вы не узнаете о сбое в ее функционировании, поскольку поток данных системы мониторинга также будет прерван. Существует множество путей решения этой проблемы. Один из них — воспользо- ваться для Kafka отдельной, независимой от нее системой мониторинга. Другой способ: при наличии нескольких ЦОД сделать так, чтобы показатели кластера Kafka в ЦОД A отправлялись в ЦОД Б и наоборот. Какой бы способ вы ни выбрали, главное, чтобы мониторинг и оповещение о проблемах Kafka не зависели от ее функционирования. Начнем.с.обсуждения.показателей.недореплицированных.разделов.как.характери- стики.общей.производительности,.а.также.с.того,.как.реагировать.на.их.изменения.. Остальные.рассматриваемые.показатели.дополнят.высокоуровневую.картину.бро- кера..Конечно,.это.отнюдь.не.исчерпывающий.список.показателей.брокеров,.а.лишь. некоторые,.совершенно.необходимые.для.проверки.состояния.брокера.и.кластера.. Завершим.эту.тему.обсуждением.вопроса.журналирования,.после.чего.перейдем. к.показателям.клиентов. Недореплицированные разделы Если.у.вас.есть.возможность.контролировать.лишь.один.показатель.брокера.Kafka,. выберите.число.недореплицированных.разделов..Этот.показатель,.взятый.для. каждого.брокера.кластера,.представляет.собой.количество.разделов,.для.которых. данный.брокер.является.ведущей.репликой.(ведомые.реплики.отстают)..Он.по- зволяет.охватить.взглядом.множество.проблем.с.кластером.Kafka.—.от.аварийного. останова.брокера.до.исчерпания.доступных.ресурсов..Учитывая.разнообразие.про- блем,.на.которые.может.указывать.отличное.от.нуля.значение.этого.показателя,. имеет.смысл.выяснить.подробнее,.как.реагировать.на.него..Многие.из.показателей,. Показатели брокеров Kafka 247 используемых.при.диагностике.подобных.проблем,.будут.описаны.далее.в.этой. главе..В.табл..10.1.приведена.более.подробная.информация.по.поводу.недорепли- цированных.разделов. Таблица 10.1. Показатели и соответствующие им недореплицированные разделы Показатель Недореплицированные разделы Управляемый.компонент. (MBean).JMX kafka.server:type=ReplicaManager,name=UnderReplicatedPartitions Диапазон.значений Целое.число,.равное.нулю.или.больше.него Если.многие.брокеры.кластера.сообщают.о.постоянном.(не.меняющемся).числе.не- дореплицированных.разделов,.то.обычно.это.значит,.что.один.из.брокеров.кластера. отключен..Число.недореплицированных.разделов.в.масштабе.всего.кластера.будет. равно.числу.распределенных.на.этот.брокер.разделов,.и.отказавший.брокер.не.бу- дет.отправлять.показателей..В.этом.случае.необходимо.выяснить,.что.случилось. с.брокером,.и.решить.проблему..Зачастую.дело.оказывается.в.отказе.аппаратного. обеспечения,.но.проблему.может.вызывать.и.проблема.с.операционной.системой. или.Java. |