Главная страница
Навигация по странице:

  • Рис. 8.6.

  • Apache Kafka. Потоковая обработка и анализ данных. Apache Kafka. Потоковая обработка и анализ данныхСерия Бестселлеры OReilly


    Скачать 7.59 Mb.
    НазваниеApache Kafka. Потоковая обработка и анализ данныхСерия Бестселлеры OReilly
    Дата21.06.2022
    Размер7.59 Mb.
    Формат файлаpdf
    Имя файлаApache Kafka. Потоковая обработка и анализ данных.pdf
    ТипДокументы
    #609074
    страница25 из 39
    1   ...   21   22   23   24   25   26   27   28   ...   39
    199
    Эластичные кластеры
    Архитектуры.типа.«активный.—.резервный».служат.для.защиты.бизнеса.при.сбое.
    кластера.Kafka.за.счет.переключения.приложения.на.взаимодействие.с.другим.
    кластером.в.случае.отказа.первоначального..Эластичные кластеры.(stretch.clusters).
    предназначены.для.предотвращения.отказа.кластера.Kafka.в.случае.сбоя.всего.
    ЦОД..Это.достигается.за.счет.установки.одного.кластера.Kafka.в.нескольких.ЦОД.
    Эластичные.кластеры.принципиально.отличаются.от.других.мультикластерных.
    архитектур..Начать.нужно.с.того,.они.не.мультикластерные.—.речь.идет.об.одном.
    кластере..В.результате.оказывается.не.нужен.процесс.зеркального.копирования.
    для.синхронизации.двух.кластеров..Для.обеспечения.согласованности.всех.бро- керов.кластера.используется.обычный.механизм.репликации.Kafka..Эта.схема.
    может.включать.синхронную.репликацию..Обычно.производители.после.успеш- ной.записи.сообщения.в.Kafka.получают.подтверждение.от.брокера.Kafka..В.слу- чае.же.эластичного.кластера.можно.настроить.все.так,.чтобы.подтверждение.от- правлялось.после.успешной.записи.сообщения.в.брокеры.Kafka.в.двух.ЦОД..
    Для.этого.потребуются.соответствующие.описания.стоек,.чтобы.у.каждого.раз- дела.были.реплики.в.нескольких.ЦОД..Придется.также.воспользоваться.параме- трами.
    min.insync.replicas
    .и.
    acks=all
    ,.чтобы.гарантировать.подтверждение.каж- дой.записи.как.минимум.из.двух.ЦОД.
    Преимущества.такой.архитектуры.заключаются.в.синхронной.репликации.—.для.
    некоторых.коммерческих.предприятий.необходимо,.чтобы.их.DR-сайт.всегда.был.
    на.100.%.согласован.с.основным.сайтом..Зачастую.это.нужно.согласно.законода- тельству,.так.что.компания.вынуждена.соблюдать.указанное.требование.во.всех.
    своих.хранилищах.данных,.включая.Kafka..Еще.одно.преимущество.—.использу- ются.оба.ЦОД.и.все.брокеры.кластера..Ничего.не.простаивает,.как.в.архитектурах.
    типа.«активный.—.резервный».
    Однако.эта.архитектура.защищает.от.ограниченного.списка.типов.аварий:.только.
    от.отказов.ЦОД,.но.не.от.отказов.приложений.или.Kafka..Ограничена.также.экс- плуатационная.сложность..Кроме.того,.архитектура.требует.физической.инфра- структуры,.обеспечить.которую.под.силу.не.всем.компаниям.
    Использовать.эту.архитектуру.имеет.смысл,.если.у.вас.есть.возможность.уста- новить.Kafka.по.крайней.мере.в.трех.ЦОД.с.высокой.пропускной.способностью.
    и.низкой.сетевой.задержкой.взаимодействия.между.ними..Достичь.этого.можно,.
    если.вашей.компании.принадлежат.три.здания.на.одной.улице.или.(чаще.всего).
    три.зоны.доступности.в.пределах.одного.региона.облачного.провайдера.
    Причина,.по.которой.нужны.три.ЦОД,.заключается.в.том,.что.для.ZooKeeper.тре- буется,.чтобы.в.кластере.было.нечетное.число.узлов,.он.остается.доступным,.пока.
    доступно.большинство.из.них..При.двух.ЦОД.и.нечетном.числе.узлов.в.одном.

    200 Глава 8 • Зеркальное копирование между кластерами из.ЦОД.будет.больше.узлов,.так.что.при.его.недоступности.окажется.недоступен.
    и.ZooKeeper,.а.значит,.и.Kafka..При.трех.ЦОД.можно.легко.распределить.узлы.так,.
    что.ни.у.одного.из.них.не.будет.большинства..И.если.один.из.ЦОД.станет.недо- ступен,.в.других.двух.останется.большинство,.а.значит,.останется.доступен.кластер.
    ZooKeeper..А.следовательно,.и.кластер.Kafka.
    Работу.ZooKeeper.и.Kafka.в.двух.ЦОД.можно.обеспечить.с.помощью.таких.на- строек.групп.ZooKeeper,.которые.позволяли.бы.выполнять.ручное.аварийное.пере- ключение.между.этими.ЦОД..Однако.такая.схема.реализуется.редко.
    Утилита MirrorMaker (Apache Kafka)
    В.Apache.Kafka.включена.простая.утилита.для.зеркального.копирования.данных.
    между.двумя.ЦОД..Она.называется.MirrorMaker.и.представляет.собой.набор.по- требителей.(по.историческим.причинам.именуемых.в.документации.MirrorMaker.
    потоками данных.(streams)),.состоящих.в.одной.группе.и.читающих.данные.из.
    выбранного.вами.для.репликации.набора.тем..У.каждого.из.процессов.MirrorMaker.
    имеется.один.производитель..Последовательность.выполняемых.действий.очень.
    проста:.MirrorMaker.запускает.для.каждого.потребителя.поток.выполнения..По- требители.читают.события.из.назначенных.им.тем.и.разделов.исходного.кластера.
    и.используют.разделяемый.производитель.для.отправки.этих.событий.на.целевой.
    кластер..Каждые.60.секунд.(по.умолчанию).потребители.сообщают.производи- телю,.чтобы.он.отправил.все.имеющиеся.события.в.Kafka.и.подождал.от.нее.под- тверждения.их.успешного.получения..Затем.потребители.обращаются.к.исходному.
    кластеру.Kafka.для.фиксации.смещений.этих.событий..Такая.схема.гарантирует.
    отсутствие.потерь.данных.(Kafka.подтверждает.получение.сообщений.до.фиксации.
    смещений.в.исходном.кластере),.а.в.случае.аварийного.сбоя.процесса.MirrorMaker.
    образуются.дубликаты.максимум.за.60.секунд.(рис..8.6).
    Рис. 8.6. Процесс MirrorMaker в Kafka

    Утилита MirrorMaker (Apache Kafka) 201
    Еще о MirrorMaker
    Утилита MirrorMaker представляется очень простой, но в силу нашего стремления к эффективности и максимальной приближенности к строго однократной до- ставке ее корректная реализация — задача довольно хитрая. К моменту выхода версии Kafka 0.10.0.0 MirrorMaker переписывалась уже четырежды и, возможно, не в последний раз. Приведенные в следующих разделах описание и различные подробности относятся к MirrorMaker такой, какой она была версиях Kafka с 0.9.0.0 по 0.10.2.0.
    Настройка MirrorMaker
    У.MirrorMaker.очень.широкие.возможности.настройки..Во-первых,.утилита.ис- пользует.один.производитель.и.несколько.потребителей,.так.что.при.ее.настройке.
    можно.задействовать.все.конфигурационные.параметры.производителей.и.по- требителей..Кроме.того,.у.самой.MirrorMaker.есть.обширный.список.параметров.
    конфигурации,.зачастую.взаимосвязанных.довольно.запутанным.образом..Мы.про- демонстрируем.несколько.примеров.и.отметим.некоторые.наиболее.важные.пара- метры.конфигурации,.но.всестороннее.описание.MirrorMaker.выходит.за.рамки.
    данной.книги.
    С.учетом.сказанного.взглянем.на.пример.использования.MirrorMaker:
    bin/kafka-mirror-maker --consumer.config etc/kafka/consumer.properties --producer.
    config etc/kafka/producer.properties --new.consumer --num.streams=2 --whitelist ".*"
    Рассмотрим.основные.аргументы.командной.строки.MirrorMaker:
    ‰
    ‰ consumer.config
    ..Это.настройки.для.всех.потребителей,.извлекающих.данные.из.
    исходного.кластера..Конфигурационный.файл.у.них.один.на.всех,.а.значит,.мож- но.использовать.только.один.исходный.кластер.и.один.
    group.id
    ..Поэтому.все.по- требители.окажутся.в.составе.одной.группы.потребителей.—.это.именно.то,.что.
    нам.и.требуется..Обязательные.настройки.в.этом.файле.—.
    bootstrap.servers
    (для.исходного.кластера).и.
    group.id
    ..Но.можете.задать.любые.необходимые.
    вам.дополнительные.настройки..А.вот.параметр.
    auto.commit.enable=false
    .вам.
    вряд.ли.стоит.менять..Для.MirrorMaker.необходима.возможность.фиксировать.
    свои.смещения.после.их.успешной.доставки.в.целевой.кластер.Kafka..Измене- ние.этого.параметра.может.привести.к.потере.данных..Имеет.смысл.также.по- менять.значение.параметра.
    auto.offset.reset
    ..По.умолчанию.оно.равно.
    latest
    ,.
    то.есть.MirrorMaker.будет.зеркально.копировать.только.события,.поступившие.
    в.исходный.кластер.после.запуска.MirrorMaker..Если.вы.предпочли.бы.скопиро- вать.и.существующие.данные,.поменяйте.его.значение.на.
    earliest
    ..Мы.обсудим.
    другие.настройки.конфигурации.в.разделе.«Тонкая.настройка.MirrorMaker».
    далее.в.этой.главе.
    ‰
    ‰ producer.config
    ..Эти.настройки.производителей.используются.MirrorMaker.
    для.записи.в.целевой.кластер..Единственная.обязательная.настройка.среди.

    202 Глава 8 • Зеркальное копирование между кластерами них.—.
    bootstrap.servers
    .(для.целевого.кластера)..Обсудим.дополнительные.
    настройки.конфигурации.в.разделе.«Тонкая.настройка.MirrorMaker».
    ‰
    ‰ new.consumer
    ..MirrorMaker.может.задействовать.потребитель.версии.0.8.или.0.9..
    Рекомендуем.использовать.потребители.версии.0.9,.поскольку.они.в.настоящий.
    момент.стабильнее.
    ‰
    ‰ num.streams
    ..Как.мы.уже.объясняли,.каждый.поток.означает.еще.один.потреби- тель,.читающий.данные.из.исходного.кластера..Помните,.что.все.потребители.из.
    одного.процесса.MirrorMaker.делят.между.собой.одни.и.те.же.производители..
    Для.потребления.всех.данных.от.производителя.потребуется.несколько.по- токов..Для.большего.повышения.производительности.понадобится.еще.один.
    процесс.MirrorMaker.
    ‰
    ‰ whitelist
    ..Регулярное.выражение.для.названий.зеркально.копируемых.тем..
    Все.темы,.чьи.названия.соответствуют.данному.регулярному.выражению,.
    будут.копироваться..В.данном.примере.мы.реплицируем.их.все,.но.часто.имеет.
    смысл.использовать.регулярное.выражение.вроде.
    prod.*
    ,.чтобы.не.реплициро- вать.тестовые.темы..Или.можно.при.архитектуре.типа.«активный.—.активный».
    задать.для.MirrorMaker,.копирующего.данные.из.нью-йоркского.ЦОД.в.ЦОД.
    Сан-Франциско,.значение.этого.параметра.равным.
    whitelist="NYC.\*"
    ,.чтобы.
    избежать.обратного.копирования.тем.из.Сан-Франциско.
    Развертывание MirrorMaker для промышленной эксплуатации
    В.предыдущем.примере.MirrorMaker.запускалась.как.утилита.командной.строки..
    Когда.MirrorMaker.работает.в.среде.промышленной.эксплуатации,.желательно.
    запускать.ее.как.сервис.с.помощью.команды.
    nohup
    .и.перенаправлять.выводимую.
    в.консоль.информацию.в.файл.журнала..Формально.у.MirrorMaker.есть.параметр.
    командной.строки.
    -daemon
    ,.которая.делает.все.перечисленное,.но.в.последних.вы- пусках.Kafka.она.не.работает.как.полагается.
    У.большинства.использующих.MirrorMaker.компаний.написаны.собственные.
    сценарии.запуска,.включающие.применяемые.параметры..Для.автоматизации.раз- вертывания.и.управления.параметрами.и.файлами.конфигураций.задействуются.
    также.такие.системы.развертывания.для.промышленной.эксплуатации,.как.Ansible,.
    Puppet,.Chef.и.Salt.
    Более.продвинутый.вариант.развертывания,.который.становится.все.более.по- пулярным,.—.запуск.MirrorMaker.в.контейнере.Docker..Утилита.MirrorMaker.
    совершенно.не.сохраняет.состояние,.для.нее.не.нужно.никакого.дискового.хра- нилища.—.все.данные.и.состояние.хранятся.в.самой.Kafka..Благодаря.использо- ванию.Docker.в.качестве.адаптера.для.MirrorMaker.становится.возможной.также.

    Утилита MirrorMaker (Apache Kafka) 203
    работа.нескольких.экземпляров.утилиты.на.одной.машине..Поскольку.отдельный.
    экземпляр.MirrorMaker.ограничивается.пропускной.способностью.одного.про- изводителя,.часто.бывает.важно.запустить.несколько.экземпляров.MirrorMaker,.
    а.Docker.эту.задачу.облегчает..Он.также.упрощает.вертикальное.масштабирование.
    в.обе.стороны.—.можно.добавить.контейнеры,.если.возникает.потребность.в.до- полнительной.пропускной.способности.в.период.пиковой.нагрузки,.а.затем.убрать.
    их..При.работе.MirrorMaker.в.облачной.среде.можно.даже.подключать.дополни- тельные.серверы,.чтобы.запускать.на.них.контейнеры.в.зависимости.от.нагрузки.
    и.потребностей.в.обслуживании.
    Если.это.возможно,.запускайте.MirrorMaker.в.целевом.ЦОД..То.есть.при.отправке.
    данных.из.Нью-Йорка.в.Сан-Франциско.MirrorMaker.должен.работать.в.Сан-
    Франциско.и.потреблять.данные.из.Нью-Йорка..Причина.состоит.в.том,.что.сеть.
    внутри.ЦОД.более.надежна,.чем.магистральные.сети..В.случае.разрыва.связности.
    сети.и.потери.связи.между.ЦОД.потребитель,.который.не.может.подключиться.
    к.кластеру,.намного.безопаснее.подобного.производителя..Такой.потребитель.
    просто.не.сможет.читать.события,.но.эти.события.все.равно.будут.сохранены.в.ис- ходном.кластере.Kafka.и.могут.находиться.там.длительное.время..Риска.потери.
    событий.нет..В.то.же.время,.если.события.уже.прочитаны,.а.MirrorMaker.не.может.
    отправить.их.из-за.разрыва.связности.сети,.то.все.равно.появляется.риск.случай- ной.их.потери.MirrorMaker..Так.что.удаленное.потребление.данных.безопаснее.
    удаленной.их.генерации.
    В.каких.же.случаях.приходится.потреблять.данные.локально,.а.генерировать.
    удаленно?.Ответ:.тогда,.когда.необходимо.шифровать.данные.при.их.передаче.
    из.одного.ЦОД.в.другой,.но.не.нужно.шифровать.внутри.ЦОД..Использование.
    SSL-шифрования.при.подключении.к.Kafka.существенно.влияет.на.производи- тельность.потребителей.—.намного.сильнее,.чем.на.производительность.произ- водителей..Воздействует.оно.и.на.сами.брокеры.Kafka..Если.трафик.между.ЦОД.
    требует.шифрования,.лучше.разместить.MirrorMaker.в.исходном.ЦОД,.чтобы.он.
    потреблял.незашифрованные.данные.локально,.после.чего.отправлять.посред- ством.генерации.их.в.удаленный.ЦОД.через.зашифрованное.SSL-соединение..
    Таким.образом,.через.SSL.подключается.к.Kafka.производитель,.а.не.потребитель,.
    и.производительность.страдает.не.так.сильно..Если.вы.решите.использовать.схему.
    локального.потребления.и.удаленной.генерации,.позаботьтесь,.чтобы.MirrorMaker.
    никогда.не.теряла.событий,.задав.параметр.
    acks=all
    .и.достаточное.число.повторов.
    попыток..Настройте.MirrorMaker.так,.чтобы.она.завершала.работу,.если.отправить.
    события.невозможно,.—.обычно.это.безопаснее,.чем.продолжать.работу.и.риско- вать.потерей.данных.
    Если.важно.понизить.до.минимума.отставание.целевого.кластера.от.исходного,.
    лучше.запустить.не.менее.двух.экземпляров.MirrorMaker.на.двух.различных.сер- верах.с.использованием.обоими.одной.и.той.же.группы.потребителей..В.случае.

    204 Глава 8 • Зеркальное копирование между кластерами останова.одного.из.серверов.второй.экземпляр.MirrorMaker.продолжит.зеркальное.
    копирование.данных.
    При.развертывании.MirrorMaker.для.промышленной.эксплуатации.важно.не.за- бывать.контролировать.ее.работу.
    ‰
    ‰
    Мониторинг отставания..Безусловно,.нужно.знать,.отстает.ли.целевой.кластер.
    от.исходного..Отставание.равно.разнице.смещений.между.последним.сообще- нием.в.исходном.кластере.Kafka.и.последним.сообщением.в.целевом.кластере.
    (рис..8.7).
    На.рис..8.7.последнее.смещение.исходного.кластера.равно.7,.а.последнее.сме- щение.целевого.—.5,.то.есть.величина.отставания.составляет.два.сообщения.
    Существует.два.способа.отслеживания.этого.отставания,.но.ни.один.из.них.
    не.идеален.
    y
    Проверка.последнего.зафиксированного.MirrorMaker.смещения.в.исходном.
    кластере.Kafka..Можно.воспользоваться.утилитой.
    kafka-consumer-groups
    ,.
    чтобы.для.каждого.читаемого.MirrorMaker.раздела.выяснить.смещение.
    последнего.сообщения.раздела,.последнее.зафиксированное.смещение.
    и.отставание.одного.от.другого..Этот.показатель.не.совсем.точен,.ведь.
    MirrorMaker.не.фиксирует.смещения.непрерывно..По.умолчанию.она.дела- ет.это.раз.в.минуту,.так.что.вы.обнаружите,.что.отставание.растет.в.течение.
    минуты,.после.чего.неожиданно.резко.уменьшается..На.схеме.фактическое.
    отставание.равно.2,.но.утилита.
    kafka-consumer-groups
    .покажет,.что.оно.
    равно.4,.поскольку.MirrorMaker.пока.еще.не.зафиксировала.смещения.
    для.более.новых.сообщений..Утилита.Burrow.от.LinkedIn.служит.для.мо- ниторинга.той.же.информации,.но.использует.более.сложный.метод.для.
    определения.того,.действительно.ли.отставание.представляет.собой.про- блему,.так.что.ложной.тревоги.она.не.поднимет.
    y
    Проверка.последнего.прочитанного.MirrorMaker.смещения,.даже.если.оно.
    не.зафиксировано..Встраиваемые.в.MirrorMaker.потребители.публикуют.
    важнейшие.показатели.в.JMX..Один.из.них.—.максимальное.отставание.
    потребителя.по.всем.читаемым.разделам..Этот.показатель.тоже.не.вполне.
    точен,.поскольку.обновляется.в.зависимости.от.прочитанных.потребителем.
    сообщений,.но.не.учитывает,.удалось.ли.производителю.отправить.эти.
    сообщения.в.целевой.кластер.Kafka.и.было.ли.их.получение.подтверждено..
    В.данном.примере.потребитель.MirrorMaker.проинформирует.об.отставании.
    в.одно.сообщение,.а.не.в.два,.поскольку.уже.прочитал.сообщение.6,.хотя.оно.
    еще.не.было.сгенерировано.для.отправки.в.целевой.кластер.
    Обратите.внимание.на.то,.что.ни.один.из.описанных.методов.не.обнаружит.
    проблемы.в.случае,.когда.MirrorMaker.пропускает.или.отбрасывает.сообще- ния,.поскольку.они.лишь.отслеживают.последнее.смещение..Продукт.Confluent.
    Control.Center.заполняет.эту.брешь.в.мониторинге,.контролируя.количество.
    сообщений.и.контрольные.суммы.

    206 Глава 8 • Зеркальное копирование между кластерами
    ‰
    ‰
    Мониторинг показателей..MirrorMaker.включает.производитель.и.потребитель..
    У.каждого.из.них.есть.множество.показателей,.которые.рекомендуется.собирать.
    и.отслеживать..Список.всех.доступных.показателей.приведен.в.документации.
    Kafka..Здесь.же.мы.перечислим.лишь.некоторые.из.них,.удобные.при.тонкой.
    настройке.производительности.MirrorMaker:
    y
    показатели потребителя:.
    fetch-size-avg
    ,.
    fetch-size-max
    ,.
    fetch-rate
    ,.
    fetch- throttle-time-avg
    .и.
    fetch-throttle-time-max
    ;
    y
    показатели производителя:.
    batch-size-avg
    ,.
    batch-size-max
    ,.
    requests-in- flight
    .и.
    record-retry-rate
    ;
    y
    показатели обоих:.
    io-ratio
    .и.
    io-wait-ratio
    ‰
    ‰
    «Канарейка»
    1
    ..Если.вы.контролируете.все.остальное,.«канарейка».не.нуж- на,.но.иметь.ее.в.качестве.дополнительного.слоя.мониторинга.не.помешает..
    Она.представляет.собой.процесс,.который.ежеминутно.отправляет.событие.
    в.специальную.тему.в.исходном.кластере,.после.чего.пытается.прочитать.это.
    событие.из.целевого.кластера..И.уведомляет.вас.в.случае,.если.передача.этого.
    события.занимает.слишком.много.времени.(то.есть.MirrorMaker.отстает.или.
    вообще.не.работает).
    Тонкая настройка MirrorMaker
    Выбор.кластера.MirrorMaker.зависит.от.требуемой.пропускной.способности.и.до- пустимого.отставания..Если.даже.минимальное.отставание.недопустимо,.мощности.
    MirrorMaker.должно.быть.достаточно,.чтобы.выдержать.максимально.возможную.
    нагрузку..Если.же.некоторое.отставание.допустимо,.можно.выбрать.такие.параме- тры,.при.которых.MirrorMaker.95–99.%.времени.использовалась.бы.на.75–80.%..
    Вы.должны.понимать,.что.при.пиковой.нагрузке.возможно.возникновение.неболь- шого.отставания,.но.поскольку.у.MirrorMaker.большую.часть.времени.есть.резервы.
    производительности,.то.по.окончании.пиковой.нагрузки.она.его.наверстает.
    Далее.неплохо.бы.оценить.пропускную.способность.MirrorMaker.при.различном.
    количестве.потоков.потребителей.—.оно.настраивается.с.помощью.параметра.
    num.streams
    ..Мы.можем.дать.некоторые.приближенные.оценки.(для.LinkedIn.
    это.6.Мбайт/с.при.8.потоках.потребителей.и.12.Мбайт/с.при.16),.но.поскольку.
    очень.многое.зависит.от.вашего.аппаратного.обеспечения,.ЦОД.и.провайдера.об- лачных.сервисов,.будет.правильнее.выполнить.собственные.тесты..В.комплект.
    поставки.Kafka.включена.утилита.kafka-performance-producer..Ею.можно.вос- пользоваться.для.генерации.данных.(нагрузки).на.исходном.кластере,.а.затем.под- ключить.MirrorMaker.и.начать.эти.данные.зеркально.копировать..Протестируйте.
    MirrorMaker.при.1,.2,.4,.8,.16.и.32.потоках.потребителей..Найдите.число.потоков,.
    при.котором.производительность.начинает.падать,.и.установите.значение.параме-
    1.
    Название.напоминает.о.том,.что.долгое.время.шахтеры.использовали.канареек.в.качестве.
    высокочувствительных.живых.детекторов.рудничного.газа..—.Примеч. пер.

    Утилита MirrorMaker (Apache Kafka)
    1   ...   21   22   23   24   25   26   27   28   ...   39


    написать администратору сайта