Apache Kafka. Потоковая обработка и анализ данных. Apache Kafka. Потоковая обработка и анализ данныхСерия Бестселлеры OReilly
Скачать 7.59 Mb.
|
207 тра. num.streams .чуть.меньше.него..В.случае.потребления.или.генерации.сжатых. событий.(что.рекомендуется,.поскольку.ширина.полосы.пропускания.—.наиболее. узкое.место.зеркального.копирования.между.ЦОД).MirrorMaker.придется.рас- паковывать.и.снова.упаковывать.события..При.этом.активно.используются.ре- сурсы.CPU,.так.что.следите.за.применением.CPU.при.увеличении.числа.потоков. выполнения..Таким.образом.вы.сможете.определить.максимальную.пропускную. способность,.достижимую.с.помощью.одного.экземпляра.MirrorMaker..Если.ее. недостаточно,.попробуйте.добавить.дополнительные.экземпляры,.а.затем.и.до- полнительные.серверы. Кроме.того,.полезно.будет.выделить.важные.темы.—.те,.для.которых.обязательно. низкое.значение.задержки,.так.что.кластер-зеркало.должен.находиться.как.можно. ближе.к.исходному.кластеру.—.в.отдельном.кластере.MirrorMaker.со.своей.группой. потребителей..Это.позволит.предотвратить.замедление.работы.самого.важного.из. ваших.конвейеров.из-за.слишком.раздутой.темы.или.вышедшего.из-под.контроля. производителя. По.большому.счету.это.все,.что.можно.настроить.в.самой.MirrorMaker..Однако. у.вас.есть.еще.возможности.повысить.производительность.потоков.потребителей. и.экземпляров.MirrorMaker. Для.оптимизации.настроек.сети.в.операционной.системе.Linux.можно.сделать. следующее: увеличить.размер.буфера.TCP.( net.core.rmem_default ,. net.core.rmem_max ,. net.core.wmem_default ,. net.core.wmem_max ,. net.core.optmem_max ); включить.автоматическое.масштабирование.TCP.окна.(выполнить.команду. sysctl –w net.ipv4.tcp_window_scaling=1 .или.добавить. net.ipv4.tcp_window_ scaling=1 .в.файл. /etc/sysctl.conf ); уменьшить.интервал.времени.в.алгоритме.медленного.старта.TCP.(установить. значение. /proc/sys/net/ipv4/tcp_slow_start_after_idle .в.0). Обратите.внимание.на.то,.что.тонкая.настройка.сети.Linux.—.объемная.и.сложная. тема..Чтобы.лучше.разобраться.в.перечисленных.и.иных.параметрах,.почитайте. руководство.по.тонкой.настройке.сети,.например,.Performance Tuning for Linux Servers.Сандры.К..Джонсон.(Sandra.K..Johnson).и.др..(издательство.IBM.Press). Кроме.того,.вам.может.понадобиться.настроить.работающие.в.MirrorMaker.про- изводители.и.потребители..Во-первых,.нужно.разобраться,.производитель.или. потребитель.представляет.собой.узкое.место.—.производитель.ожидает,.пока.по- требитель.прочитает.данные,.или.наоборот?.Один.из.способов.выяснения.этого.—. анализ.параметров.производителя.и.потребителя..Если.один.процесс.простаивает,. а.другой.используется.на.все.100.%,.то.сразу.становится.понятно,.какой.из.них. нуждается.в.настройке..Еще.один.способ.—.выполнить.несколько.дампов.потоков. выполнения.с.помощью.утилиты.jstack.и.посмотреть,.на.что.потоки.MirrorMaker. тратят.большую.часть.времени.—.на.опросы.или.отправку..То,.что.бо'льшая.часть. 208 Глава 8 • Зеркальное копирование между кластерами времени.затрачивается.на.опросы,.обычно.означает,.что.узкое.место.—.в.потреби- теле,.а.если.на.отправку,.то.в.производителе. При.тонкой.настройке.производителя.могут.оказаться.полезными.следующие. параметры.конфигурации: max.in.flight.requests.per.connection ..По.умолчанию.MirrorMaker.допускает. наличие.только.одного.активного.запроса..Это.значит,.что.прежде.чем.можно. будет.отправить.следующее.сообщение,.целевой.кластер.должен.подтвердить. получение.каждого.отправленного.производителем.запроса..Это.может.огра- ничить.пропускную.способность,.особенно.если.брокеры.подтверждают.полу- чение.со.значительной.задержкой..MirrorMaker.ограничивает.число.активных. запросов,.потому.что.это.единственный.способ.гарантировать.сохранение. Kafka.порядка.сообщений.в.том.случае,.если.отправку.некоторых.из.них.при- дется.повторить.несколько.раз,.прежде.чем.их.успешное.получение.будет.под- тверждено..Если.для.сценария.использования.не.важен.порядок.сообщений,.то. можно.повысить.значение.параметра. max.in.flight.requests.per.connection и.значительно.увеличить.пропускную.способность; linger.ms .и. batch.size ..Если.мониторинг.показывает,.что.производитель.все. время.отправляет.полупустые.пакеты.(то.есть.значения. batch-size-avg .и. batch- size-max .меньше,.чем.заданное.в.настройках.значение. batch.size ),.можно. увеличить.пропускную.способность.путем.создания.небольшой.искусственной. задержки..Увеличьте.значение.параметра. linger.ms ,.и.производитель.будет. несколько.миллисекунд.ожидать.наполнения.пакета,.прежде.чем.отправить. его..Если.же.вы.отправляете.полные.пакеты.и.у.вас.есть.свободная.память,.то. можете.увеличить.значение.параметра. batch.size ,.чтобы.отправлять.пакеты. большего.размера. Следующие.параметры.конфигурации.потребителя.могут.помочь.увеличить.его. пропускную.способность. Стратегия.распределения.разделов.по.потребителям.в.MirrorMaker.(то.есть. алгоритм.выбора.того,.какому.потребителю.какие.разделы.назначаются).со. значением.по.умолчанию. range ..В.стратегии. range .есть.свои.преимущества,. именно.поэтому.она.используется.по.умолчанию,.но.она.же.может.обусловить. неравномерное.распределение.разделов.по.потребителям..Применительно. к.MirrorMaker.обычно.лучше.изменить.стратегию.на.циклическую,.особен- но.в.случае.зеркального.копирования.большого.количества.тем.и.разделов.. Для.этого.в.файл.конфигурации.потребителя.необходимо.добавить.параметр. partition.assignment.strategy=org.apache.kafka.clients.consumer.Round- RobinAssignor fetch.max.bytes .—.если.собираемые.показатели.демонстрируют,.что.значения. fetch-size-avg .и. fetch-size-max .близки.к.значению.параметра. fetch.max.bytes ,. то.потребитель.читает.с.брокера.столько.данных,.сколько.ему.разрешается.. Если.у.вас.есть.резервы.памяти,.можете.попробовать.увеличить.значение.па- Другие программные решения для зеркального копирования между кластерами 209 раметра. fetch.max.bytes ,.позволив.тем.самым.потребителю.читать.больший. объем.данных.при.каждом.запросе. fetch.min.bytes .и. fetch.max.wait .—.если.анализ.показателей.потребителя. свидетельствует,.что.значение. fetch-rate .слишком.высокое,.то.потребитель. отправляет.брокерам.слишком.много.запросов,.не.получая.в.ответ.в.каждом. запросе.достаточного.количества.данных..Попробуйте.увеличить.значения.обо- их.параметров,. fetch.min.bytes .и. fetch.max.wait ,.чтобы.потребитель.получал. в.каждом.запросе.больше.данных,.а.брокер,.перед.отправкой.ему.данных,.ждал,. пока.не.появится.достаточное.их.количество. Другие программные решения для зеркального копирования между кластерами Мы.так.подробно.изучили.MirrorMaker.потому,.что.это.программное.обеспечение. для.зеркального.копирования.входит.в.состав.Apache.Kafka..Однако.у.MirrorMaker. есть.определенные.ограничения..Имеет.смысл.обратить.внимание.на.некоторые. альтернативы.MirrorMaker.и.на.то,.как.они.обходят.его.ограничения.и.проблемы. uReplicator компании Uber Компания.Uber.использовала.MirrorMaker.очень.широко.и.по.мере.роста.числа. тем.и.разделов.и.повышения.производительности.кластера.столкнулась.со.следу- ющими.проблемами. Задержки из-за перераспределения..MirrorMaker.применяют.обычные.потре- бители..Добавление.потоков.и.экземпляров.MirrorMaker,.перезапуск.экзем- пляров.MirrorMaker.или.даже.просто.добавление.новых.тем,.соответствующих. регулярному.выражению.из.параметра. whitelist ,.—.все.это.приводит.к.пере- распределению.потребителей..Как.мы.видели.в.главе.4,.это.вызывает.останов. всех.потребителей.до.тех.пор,.пока.всем.им.не.будут.назначены.новые.разделы.. При.очень.большом.числе.тем.и.разделов.этот.процесс.может.занять.немало. времени,.особенно.при.использовании.потребителей.старой.версии,.как.было. в.Uber..В.некоторых.случаях.это.приводило.к.простою.в.течение.5–10.минут,. отставанию.зеркального.копирования.и.накоплению.огромного.объема.событий,. требующих.зеркального.копирования..Восстановление.после.подобной.ситуа- ции.могло.быть.длительным..В.результате.возникала.очень.большая.задержка. чтения.событий.потребителями.из.целевого.кластера. Сложности при добавлении тем..Использование.регулярного.выражения. в.качестве. whitelist .темы.означает,.что.MirrorMaker.придется.выполнять. перераспределение.при.каждом.добавлении.соответствующей.темы.в.исход- ный.кластер..Ранее.мы.уже.видели,.что.в.Uber.перераспределение.приводило. к.особенно.неприятным.последствиям..Чтобы.избежать.подобных.внезапных. 210 Глава 8 • Зеркальное копирование между кластерами перераспределений,.в.компании.решили.просто.перечислять.все.темы,.кото- рые.нужно.зеркально.копировать..Но.это.значит,.что.приходилось.вручную. добавлять.все.подлежащие.копированию.новые.темы.в. whitelist .на.всех.эк- земплярах.MirrorMaker.и.перезапускать.эти.экземпляры,.что.все.равно.приво- дило.к.перераспределению..Конечно,.оно.происходило.при.запланированном. техобслуживании,.а.не.всякий.раз,.когда.кто-нибудь.добавлял.тему,.но.объем. трудозатрат.все.равно.был.большим..Это.также.означало,.что.в.случае.ошибки. при.техобслуживании,.вследствие.которой.у.разных.экземпляров.окажутся. разные.списки.тем,.MirrorMaker.после.запуска.станет.бесконечно.производить. перераспределение,.поскольку.потребители.не.смогут.договориться,.на.какую. тему.кому.подписываться. Из-за.этих.проблем.Uber.пришлось.написать.собственный.клон.утилиты.Mir- rorMaker,.получивший.название.uReplicator..В.компании.решили.воспользовать- ся.Apache.Helix.в.качестве.центрального.высокодоступного.контроллера,.кото- рый.отвечал.бы.за.список.тем.и.разделов,.назначаемых.различным.экземплярам. uReplicator..В.нем.для.добавления.новых.тем.в.список.в.Helix.администраторы.при- меняют.API.REST,.а.uReplicator.отвечает.за.назначение.разделов.различным.по- требителям..Чтобы.добиться.этого,.в.Uber.заменили.используемых.в.MirrorMaker. потребителей.Kafka.на.потребителя.Kafka,.который.они.написали.сами.и.назвали. потребителем.Helix..Разделы.назначаются.этому.потребителю.контроллером.Helix,. а.не.в.результате.соглашения.между.потребителями.(подробности.того,.как.это. происходит.в.Kafka,.вы.можете.найти.в.главе.4)..В.результате.потребитель.Helix. избегает.перераспределений,.прослушивая.на.предмет.поступающих.от.Helix.из- менений.в.назначениях.разделов. В.блоге.Uber.написали.сообщение,.где.описали.архитектуру.более.подробно.и.по- казали,.каких.положительных.результатов.достигли..На.момент.написания.данной. книги.нам.неизвестно.о.каких-либо.компаниях,.кроме.Uber,.которые.использо- вали.бы.uReplicator..Вероятно,.это.следствие.того,.что.большинство.компаний. не.работают.в.таких.масштабах,.как.Uber,.и.не.сталкиваются.с.подобными.пробле- мами,.или.того,.что.зависимость.от.Apache.Helix.означает.необходимость.изучения. совершенно.нового.компонента.и.работы.с.ним,.что.усложняет.проект.в.целом. Replicator компании Confluent Параллельно.с.разработкой.uReplicator.компанией.Uber.в.компании.Confluent.неза- висимо.создали.свой.Replicator..Несмотря.на.схожесть.названий,.проекты.не.имеют. практически.ничего.общего.—.это.два.различных.решения.двух.различных.наборов. проблем.MirrorMaker..Replicator.компании.Confluent.был.разработан.для.решения. проблем,.с.которыми.сталкиваются.корпоративные.заказчики,.когда.используют. MirrorMaker.при.развертывании.своих.мультикластерных.архитектур. Расхождения конфигураций кластеров..MirrorMaker.обеспечивает.согласован- ность.данных.в.исходном.и.целевом.кластерах,.но.согласованность.только.их.. В.результате.у.тем.могут.появиться.различное.число.разделов,.разные.коэффи- Резюме 211 циенты.репликации.и.различные.настройки.уровня.темы..Если.вы.увеличите. длительность.хранения.информации.с.одной.до.трех.недель.на.исходном.кластере. и.забудете.проделать.это.на.DR-кластере,.то.при.аварийном.переключении.вас. ждет.довольно.неприятный.сюрприз.в.виде.потери.информации.за.несколько. недель..Попытка.поддержания.согласованности.всех.этих.настроек.вручную. может.вызвать.ошибки.и.сбой.расположенных.далее.по.конвейеру.приложений. или.даже.самой.репликации.в.случае.рассогласованности.подсистем. Проблемы управления кластером..Мы.уже.видели,.что.MirrorMaker.обычно. развертывается.в.виде.кластера.из.нескольких.экземпляров..А.это.еще.один. кластер,.нужно.как-то.развернуть.его,.управлять.им.и.выполнять.мониторинг.. Управление.конфигурацией.MirrorMaker.из-за.двух.файлов.конфигурации. и.большого.числа.параметров.и.так.представляет.собой.непростую.задачу.. Ее.сложность.только.возрастает,.если.кластеров.больше.двух,.а.репликация. односторонняя..При.трех.кластерах.и.архитектуре.типа.«активный.—.активный». вам.придется.развертывать.шесть.кластеров.MirrorMaker,.вероятно,.с.тремя. экземплярами.в.каждом.как.минимум,.выполнять.их.мониторинг.и.настрой- ку..При.пяти.кластерах.типа.«активный.—.активный».количество.кластеров. MirrorMaker.возрастает.до.20. Компания.Confluent.ради.минимизации.издержек.администрирования.и.без.того. загруженных.корпоративных.IT-отделов.приняла.решение.реализовать.Replicator. в.виде.коннектора.производителя.для.фреймворка.Kafka.Connect,.который.бы.чи- тал.данные.из.другого.кластера.Kafka,.а.не.из.базы.данных..Вспомните.архитектуру. Kafka.Connect.из.главы.7:.каждый.коннектор.делит.нагрузку.между.задачами,.чис- ло.которых.можно.настроить..В.Replicator.каждая.задача.представляет.собой.пару. «потребитель/производитель»..Фреймворк.Connect.распределяет.эти.задачи.по. различным.рабочим.узлам.по.мере.необходимости,.так.что.все.задачи.могут.быть. на.одном.сервере.или.распределяться.по.нескольким..Таким.образом,.отпадает. необходимость.вручную.подсчитывать,.сколько.потоков.MirrorMaker.должно. приходиться.на.один.экземпляр.и.сколько.экземпляров.—.на.машину..В.Kafka. Connect.есть.также.API.REST.для.централизованного.управления.настройка- ми.коннекторов.и.задач..Если.считать,.что.по.другим.причинам.в.большинство. схем.развертывания.Kafka.включен.Kafka.Connect.(очень.популярный.сценарий. использования.—.отправка.событий.изменения.базы.данных.в.Kafka),.то.можно. уменьшить.число.кластеров,.которыми.нужно.будет.управлять,.за.счет.запуска. Replicator.внутри.Kafka.Connect..Другое.важное.преимущество.состоит.в.том,. что.коннектор.Replicator.реплицирует.не.только.данные.из.списка.тем.Kafka,.но. и.настройки.тем.ZooKeeper. Резюме Мы.начали.эту.главу.с.описания.причин,.по.которым.вам.может.понадобиться. более.одного.кластера.Kafka,.после.чего.рассмотрели.несколько.распространенных. мультикластерных.архитектур,.начиная.с.простейшей.и.заканчивая.чрезвычайно. сложными..Мы.углубились.в.подробности.реализации.архитектуры.восстановления. 212 Глава 8 • Зеркальное копирование между кластерами после.сбоя.и.сравнение.различных.ее.вариантов..Далее.перешли.к.утилитам,.начав. с.MirrorMaker.Apache.Kafka.и.обсудив.немало.нюансов.ее.промышленной.экс- плуатации..Завершили.главу.обзором.двух.ее.альтернатив,.позволяющих.решить. некоторые.из.возникающих.при.работе.MirrorMaker.проблем. Какие.бы.архитектуру.и.утилиты.вы.ни.выбрали,.помните.о.необходимости.мони- торинга.и.тестирования.мультикластерной.конфигурации.и.конвейеров.зеркаль- ного.копирования,.как.и.всего.остального,.что.попадает.в.промышленную.эксплу- атацию..А.поскольку.управление.мультикластерной.системой.в.Kafka.проще,.чем. при.работе.с.реляционными.базами.данных,.некоторые.компании.вспоминают.об. этом.слишком.поздно.и.недостаточно.внимательно.относятся.к.ее.проектированию,. планированию,.тестированию,.автоматизации.развертывания,.мониторингу.и.об- служиванию..Вы.намного.повысите.вероятность.того,.что.управление.несколькими. кластерами.Kafka.окажется.успешным,.если.отнесетесь.к.управлению.мультикла- стерной.архитектурой.всерьез,.по.возможности.сделав.его.частью.единого.для.всей. организации.плана.восстановления.после.аварийного.сбоя.или.плана.географиче- ского.разнесения.данных. 9 Администрирование Kafka Kafka.предоставляет.пользователям.несколько.утилит.командной.строки.(CLI),. удобных.для.администрирования.кластеров..Они.реализованы.в.виде.классов.Java,. для.правильного.вызова.которых.имеются.наборы.сценариев..Эти.утилиты.позво- ляют.выполнять.простейшие.действия,.но.более.сложные.операции.реализовать. с.их.помощью.нельзя..В.этой.главе.мы.опишем.доступные.в.проекте.Apache.Kafka. утилиты..Дополнительную.информацию.о.более.продвинутых.утилитах,.создан- ных.сообществом.разработчиков.вне.рамок.основного.проекта.Kafka,.можно.найти. на.сайте.Apache.Kafka.( https://kafka.apache.org/). Авторизация административных операций В Apache Kafka реализованы аутентификация и авторизация для управления операциями с темами, но для большинства операций над кластером они пока не поддерживаются. Это значит, что вышеупомянутые утилиты командной строки можно использовать без всякой аутентификации, то есть такие операции, как из- менение темы, можно выполнять без какой-либо проверки на безопасность или аудита. Соответствующая функциональность находится в процессе разработки и скоро будет добавлена в Kafka. Операции с темами Утилита.kafka-topics.sh.позволяет.легко.выполнить.большинство.операций.с.те- мами.(изменять.настройки.тем.с.ее.помощью.не.рекомендуется,.соответствующая. функциональность.была.перенесена.в.утилиту.kafka-configs.sh)..Она.позволяет. создавать,.менять,.удалять.и.выводить.информацию.об.имеющихся.в.кластере.те- мах..Для.ее.использования.необходимо.задать.строку.подключения.ZooKeeper.для. кластера.с.помощью.аргумента. --zookeeper ..В.приводимых.далее.примерах.пред- полагается,.что.строка.подключения.ZooKeeper.имеет.вид. zoo1.examp le.com:2181/ kafka-cluster 214 Глава 9 • Администрирование Kafka Проверьте версию Многие утилиты командной строки Kafka работают непосредственно с хранимыми в ZooKeeper метаданными, а не подключаются к брокерам. Поэтому важно про- верять соответствие версии используемых утилит версии брокеров в кластере. Безопаснее всего запускать версии этих утилит, установленные на самих брокерах Kafka. Создание новой темы Для.создания.новой.темы.в.кластере.необходимо.задать.три.аргумента.(их.следует. указывать,.несмотря.на.то.что.для.некоторых.из.них.могут.быть.заданы.значения. по.умолчанию.на.уровне.брокера): название темы —.название.создаваемой.темы; коэффициент репликации —.количество.реплик.темы.в.кластере; разделы —.число.создаваемых.для.данной.темы.разделов. |