Apache Kafka. Потоковая обработка и анализ данных. Apache Kafka. Потоковая обработка и анализ данныхСерия Бестселлеры OReilly
Скачать 7.59 Mb.
|
182 Глава 7 • Создание конвейеров данных Фреймворки ввода и обработки данных для других хранилищ Хотя.мы.привыкли.считать.Kafka.центром.мироздания,.кое-кто.с.нами.не.согласен.. Часть.разработчиков.ставят.в.основу.своих.архитектур.данных.такие.системы,.как. Hadoop.или.Elasticsearch..В.некоторых.системах.есть.собственные.утилиты.ввода. и.обработки.данных.—.Flume.для.Hadoop.и.Logstash.или.Fluentd.для.Elasticsearch.. Мы.рекомендуем.использовать.API.Kafka.Connect.в.случаях,.когда.Kafka.является. неотъемлемой.частью.архитектуры,.а.цель.состоит.в.соединении.большого.числа. источников.и.приемников..Если.же.вы.создаете.систему,.ориентированную.на. Hadoop.и.Elasticsearch,.а.Kafka.—.лишь.одно.из.многих.средств.ввода.данных.в.эту. систему,.то.имеет.смысл.воспользоваться.Flume.или.Logstash. ETL-утилиты на основе GUI Множество.классических.систем.наподобие.Informatica,.а.также.их.альтернатив. с.открытым.исходным.кодом,.например.Talend.и.Pentaho,.и.даже.более.новых.ва- риантов,.таких.как.Apache.NiFi.и.StreamSets,.поддерживают.использование.Apache. Kafka.в.качестве.как.источника.данных,.так.и.целевой.системы..Задействовать.их. имеет.смысл.лишь.для.того,.чтобы.не.переходить.на.что-то.новое:.если.вы.везде. применяете,.например,.Pentaho,.то.зачем.добавлять.еще.одну.систему.интеграции. данных.специально.для.Kafka?.Это.имеет.смысл.также,.если.вы.создаете.конвейе- ры.ETL.на.основе.GUI..Основной.недостаток.таких.систем.в.том,.что.они.обычно. предназначены.для.запутанных.технологических.процессов.и.окажутся.несколько. тяжеловесным.и.сложным.программным.решением.для.случая,.когда.нужно.всего. лишь.передать.данные.в.Kafka.и.из.нее..Как.упоминалось.в.разделе.«Преобразо- вания».ранее.в.этой.главе,.мы.убеждены,.что.основной.целью.интеграции.данных. должна.быть.добросовестная.передача.сообщений.при.любых.условиях,.в.то.время. как.большинство.ETL-утилит.лишь.привносят.ненужную.сложность. Мы.рекомендуем.рассматривать.Kafka.в.качестве.платформы,.способной.как.на. интеграцию.данных.(с.помощью.Connect).и.приложений.(с.использованием.произ- водителей.и.потребителей),.так.и.на.потоковую.обработку..Kafka.может.послужить. прекрасной.заменой.для.ETL-утилиты,.которая.занимается.только.интеграцией. хранилищ.данных. Фреймворки потоковой обработки Практически.все.фреймворки.потоковой.обработки.могут.читать.данные.из.Kafka. и.записывать.их.в.некоторые.другие.системы..Если.ваша.целевая.система.под- держивается.и.вы.все.равно.собираетесь.использовать.конкретный.фреймворк. потоковой.обработки.для.обработки.поступающих.из.Kafka.событий,.имеет.смысл. задействовать.его.же.для.интеграции.данных..Это.часто.позволяет.исключить.из. технологического.процесса.потоковой.обработки.необходимость.хранить.обрабо- Резюме 183 танные.события.в.Kafka.—.можно.просто.читать.их.и.записывать.в.другую.систему.. Правда,.у.этого.решения.есть.и.недостаток.в.виде.усложнения.отладки.в.случае,. например,.потери.и.повреждения.сообщений. Резюме В.этой.главе.разговор.шел.о.применении.Kafka.для.интеграции.данных..Начав.с.ос- нований.для.использования.Kafka.при.реализации.данной.задачи,.мы.рассмотрели. несколько.общих.вопросов,.относящихся.к.решениям.для.интеграции.данных.. Мы.продемонстрировали,.почему,.с.нашей.точки.зрения,.Kafka.и.ее.API.Connect. хорошо.для.этого.подходят..Привели.несколько.примеров.работы.Kafka.Connect. в.различных.сценариях,.посмотрели,.как.Connect.работает,.после.чего.обсудили. несколько.его.альтернатив. На.каком.бы.программном.решении.для.интеграции.данных.вы.ни.остановились. в.итоге,.важнейшим.его.свойством.будет.способность.доставить.все.сообщения. при.любых.сбойных.ситуациях..Мы.убеждены,.что.Kafka.Connect.исключительно. надежен,.поскольку.основан.на.проверенных.временем.характеристиках.надеж- ности.самой.Kafka,.но.важно,.чтобы.вы.всегда.тестировали.выбранную.систему,. как.это.делаем.мы..Убедитесь,.что.ваша.система.интеграции.данных.способна.без. потерь.сообщений.выдержать.остановку.процессов,.аварийные.сбои.машин,.сете- вые.задержки.и.высокие.нагрузки..В.конце.концов,.единственная.задача.систем. интеграции.данных.—.доставить.сообщения. Важнейшим.требованием.при.интеграции.информационных.систем.обычно.явля- ется.надежность,.однако.это.лишь.одно.из.требований..При.выборе.информацион- ной.системы.важно.сначала.просмотреть.свои.требования.(см..примеры.в.разделе. «Соображения.по.поводу.создания.конвейеров.данных».ранее.в.этой.главе),.после. чего.убедиться,.что.система.им.удовлетворяет..Но.этого.недостаточно.—.вы.должны. хорошо.разобраться.в.выбранном.программном.решении.для.интеграции.данных,. чтобы.быть.уверенным.в.том,.что.при.его.использовании.ваши.требования.будут. удовлетворяться..Того,.что.Kafka.поддерживает.строго.однократную.доставку,. недостаточно.—.вы.должны.убедиться,.что.случайно.не.настроили.ее.так,.что.она. окажется.надежной.лишь.частично. 8 Зеркальное копирование между кластерами В.большей.части.данной.книги.мы.обсуждаем.настройку,.поддержку.и.использова- ние.одного.кластера.Kafka..Однако.существует.несколько.сценариев,.при.которых. архитектура.должна.состоять.из.нескольких.кластеров. В.некоторых.случаях.кластеры.совершенно.независимы.—.действуют.в.различных. подразделениях.организации.или.в.различных.сценариях..Иногда.вследствие.раз- личий.в.соглашениях.об.уровне.предоставления.услуг.(SLA).или.нагрузках.бывает. сложно.приспособить.один.кластер.для.обслуживания.нескольких.сценариев. использования..В.других.случаях.различаются.требования.к.информационной. безопасности..Эти.ситуации.не.представляют.проблем.—.управлять.несколькими. отдельными.кластерами,.по.сути,.все.равно.что.управлять.несколькими.экземпля- рами.одного.и.того.же.кластера. В.других.сценариях.различные.кластеры.взаимосвязаны,.и.администраторам. приходится.непрерывно.копировать.данные.между.ними..В.большинстве.баз.дан- ных.непрерывное.копирование.данных.между.серверами.баз.данных.называется. репликацией..Но.поскольку.мы.используем.термин.«репликация».для.описания. перемещения.данных.между.узлами.Kafka.в.пределах.одного.кластера,.то.для.ко- пирования.данных.между.разными.кластерами.Kafka.будем.употреблять.термин. зеркальное копирование.(mirroring)..Встроенный.в.Apache.Kafka.репликатор.данных. между.кластерами.называется.MirrorMaker. В.этой.главе.мы.обсудим.зеркальное.копирование.части.или.всех.данных.между. кластерами..Начнем.с.обсуждения.некоторых.распределенных.сценариев.зеркаль- ного.копирования.данных.между.кластерами..Затем.продемонстрируем.несколько. применяемых.для.реализации.этих.сценариев.архитектур.и.обсудим.плюсы.и.ми- нусы.каждой.из.них..После.этого.перейдем.к.разговору.о.самом.MirrorMaker.и.его. использовании..Мы.дадим.вам.несколько.советов.по.его.эксплуатации,.включая. Сценарии зеркального копирования данных между кластерами 185 развертывание.и.настройку.производительности..В.завершение.обсудим.несколько. альтернатив.MirrorMaker. Сценарии зеркального копирования данных между кластерами Вот.несколько.ситуаций,.в.которых.может.оказаться.полезно.зеркальное.копиро- вание.данных.между.кластерами. Региональные и центральные кластеры..В.некоторых.случаях.один.или.несколько. ЦОД.компании.находятся.в.различных.географических.регионах,.городах.или. даже.на.разных.континентах..В.каждом.ЦОД.есть.свой.кластер.Kafka..Части.при- ложений.для.работы.достаточно.взаимодействия.лишь.с.локальным.кластером,. а.части.требуются.данные.из.нескольких.ЦОД.(в.противном.случае.нам.не.нуж- ны.были.бы.программные.решения.для.репликации.данных.между.ЦОД)..Такое. требование.выдвигается.при.множестве.сценариев.использования,.но.классиче- ский.пример.—.компания,.меняющая.цены.товаров.в.зависимости.от.их.запасов. и.спроса..У.такой.компании.может.быть.ЦОД.во.всех.городах,.где.она.работает,. в.которые.стекается.информация.о.запасах.товаров.на.местных.складах.и.спросе. на.них.с.соответствующей.корректировкой.цен..Всю.эту.информацию.необхо- димо.зеркально.копировать.на.центральный.кластер,.чтобы.бизнес-аналитики. могли.сформировать.отчеты.о.прибыли.в.масштабе.всей.компании. Избыточность (переключение при аварийных сбоях)..Приложения.выполняются. на.одном.кластере.Kafka,.для.них.не.требуются.данные.из.других.мест,.но.вас. беспокоит.вероятность.недоступности.кластера.по.каким-либо.причинам..Вам. нужен.еще.один.кластер.Kafka.со.всеми.данными.с.первого.кластера,.чтобы. в.случае.аварии.можно.было.перенаправить.приложения.на.второй.кластер. и.продолжать.работу.как.ни.в.чем.не.бывало. Миграция в облако..Сейчас.многие.компании.пользуются.как.локальным.ЦОД,. так.и.услугами.облачных.провайдеров..Часто.ради.избыточности.приложения. выполняются.в.различных.регионах.провайдеров.облачных.услуг,.а.иногда. используются.и.различные.провайдеры..В.подобных.случаях.нередко.задей- ствуется.как.минимум.по.одному.кластеру.Kafka.в.каждом.локальном.ЦОД. и.каждом.регионе.облака..Эти.кластеры.Kafka.задействуются.приложениями.из. каждого.ЦОД.и.региона.для.эффективной.передачи.данных.между.ЦОД..Напри- мер,.если.развернутое.в.облаке.новое.приложение.требует.каких-либо.данных,. хранимых.в.локальной.базе.данных.и.обновляемых.работающими.в.локальном. ЦОД.приложениями,.то.можно.воспользоваться.Kafka.Connect.для.сбора.изме- нений.в.базе.данных.в.локальном.кластере.Kafka.с.последующим.их.зеркальным. копированием.в.облачный.кластер.Kafka,.где.их.сможет.использовать.новое. приложение..Это.помогает.контролировать.затраты.на.трафик.между.ЦОД,. а.также.повысить.его.безопасность. 186 Глава 8 • Зеркальное копирование между кластерами Мультикластерные архитектуры Теперь,.когда.мы.взглянули.на.несколько.сценариев.использования,.для.которых. требуется.больше.одного.кластера.Kafka,.пришло.время.описать.несколько.распро- страненных.архитектурных.паттернов,.которые.мы.успешно.применяли.при.реали- зации.этих.сценариев..Прежде.чем.заняться.данными.архитектурами,.рассмотрим. вкратце.реалии.взаимодействия.между.различными.ЦОД..Если.не.понимать,.что. предлагаемые.программные.решения.—.компромиссы,.учитывающие.конкретные. условия.работы.сети,.может.показаться,.что.они.переусложнены. Реалии взаимодействия между различными ЦОД При.обсуждении.взаимодействия.между.различными.ЦОД.имеет.смысл.учитывать. следующие.вещи: высокую длительность задержек..Задержки.при.взаимодействии.между.двумя. кластерами.Kafka.возрастают.пропорционально.расстоянию.и.числу.транзит- ных.участков.сети.между.ними; ограниченную пропускную способность сети..Пропускная.способность.глобаль- ных.сетей.(Wide.Area.networks.(WAN)).обычно.значительно.ниже.пропускной. способности.сети.в.пределах.одного.ЦОД,.причем.еще.и.меняется.ежеминутно.. Кроме.того,.более.высокая.длительность.задержек.усложняет.использование. всей.доступной.полосы.пропускания; повышенные по сравнению с работой в пределах одного ЦОД затраты..Вне.за- висимости.от.того,.где.работает.Kafka,.локально.или.в.облаке,.взаимодействие. между.кластерами.означает.повышенные.затраты..Это.происходит.отчасти.из-за. ограниченности.пропускной.способности.сети.и.слишком.высокой.стоимости. ее.повышения,.а.также.из-за.запрашиваемой.провайдерами.стоимости.передачи. данных.между.различными.ЦОД,.регионами.и.облаками. Брокеры.и.клиенты.Apache.Kafka.проектируются,.разрабатываются,.тестируются. и.настраиваются.в.условиях.одного.ЦОД..Причем.в.расчете.на.низкую.задержку. и.широкую.полосу.пропускания.между.брокерами.и.клиентами..Это.очевидно.из. значений.времени.ожидания.по.умолчанию.и.размеров.различных.буферов..Поэто- му.не.рекомендуется.(за.исключением.особых.случаев,.которые.мы.обсудим.позже). устанавливать.часть.брокеров.Kafka.в.одном.ЦОД,.а.часть.—.в.другом. В.большинстве.случаев.стоит.избегать.генерации.данных.для.удаленного.ЦОД,. но.если.вам.все.же.приходится.это.делать,.рассчитывайте.на.более.длительные. задержки.и,.возможно,.большее.число.сетевых.ошибок..С.ошибками.можно.спра- виться.с.помощью.увеличения.числа.попыток.повтора.производителей,.а.с.дли- тельными.задержками.—.за.счет.увеличения.размеров.буферов.для.хранения.за- писей.между.попытками.отправки. Мультикластерные архитектуры 187 Если.нам.требуется.репликация.между.кластерами.и.мы.исключили.возможность. взаимодействия.между.брокерами,.а.также.взаимодействия.производителей.с.бро- керами,.то.остается.только.взаимодействие.брокеров.с.потребителями..Безусловно,. это.наиболее.безопасный.вид.межкластерного.взаимодействия,.поскольку.в.случае. невозможности.чтения.данных.потребителем.из-за.нарушения.связности.сети.за- писи.будут.в.безопасности.в.брокерах.Kafka.до.тех.пор,.пока.связь.не.восстановится. и.потребители.не.смогут.их.прочитать..Риск.случайной.потери.данных.вследствие. нарушения.связности.сети.отсутствует..Тем.не.менее.если.в.одном.ЦОД.есть.не- сколько.приложений,.которым.требуется.читать.данные.из.брокеров.Kafka.в.дру- гом.ЦОД,.то.из-за.ограниченности.полосы.пропускания.лучше.установить.кластер. Kafka.в.каждом.из.ЦОД.и.выполнить.зеркальное.копирование.данных.между.ними,. вместо.того.чтобы.допустить,.чтобы.несколько.приложений.потребляли.одни. и.те.же.данные.через.глобальную.сеть. Мы.еще.поговорим.подробнее.о.тонкой.настройке.Kafka.для.взаимодействия. между.ЦОД,.но.следующие.принципы.будут.руководящими.для.всех.дальнейших. архитектур. Не.менее.одного.кластера.на.ЦОД. Каждое.событие.реплицируется.ровно.один.раз.(повторы.в.случае.ошибок.за- прещены).между.каждой.парой.ЦОД. По.возможности.предпочитаем.потребление.данных.из.удаленного.ЦОД.от- правке.данных.в.него. Архитектура с топологией типа «звезда» Эта.архитектура.предназначена.для.ситуации.с.несколькими.локальными.и.одним. центральным.кластером.Kafka.(рис..8.1). Существует.также.упрощенный.вариант.этой.архитектуры.с.двумя.кластерами.—. ведущим.и.ведомым.(рис..8.2). Эта.архитектура.применяется,.когда.данные.генерируются.в.нескольких.ЦОД,. причем.части.потребителей.необходим.доступ.ко.всему.набору.данных..Она.также. дает.возможность.приложениям.в.каждом.ЦОД.обрабатывать.только.локальные.по. отношению.к.нему.данные..Но.при.этом.не.обеспечивается.доступ.ко.всему.набору. данных.из.всех.ЦОД. Основное.достоинство.этой.архитектуры.заключается.в.том,.что.данные.всегда. генерируются.для.локального.ЦОД,.а.события.из.каждого.ЦОД.реплицируются. однократно.—.в.центральный.ЦОД..Приложения,.обрабатывающие.данные.из. одного.ЦОД,.можно.разместить.в.нем.же..Приложения,.которым.необходимо.об- рабатывать.данные.из.нескольких.ЦОД,.размещаются.в.центральном.ЦОД,.куда. зеркально.копируются.все.события..А.поскольку.репликация.всегда.происходит. в.одну.сторону,.а.каждый.потребитель.всегда.читает.данные.из.одного.кластера,.то. такую.архитектуру.легко.развертывать,.настраивать.и.контролировать. 188 Глава 8 • Зеркальное копирование между кластерами Рис. 8.1. Архитектура с топологией типа «звезда» Мультикластерные архитектуры 189 Рис. 8.2. Упрощенная версия архитектуры с топологией типа «звезда» Основные.недостатки.этой.архитектуры.вытекают.из.ее.достоинств.и.простоты.. Процессоры.одного.регионального.ЦОД.не.могут.обращаться.к.данным.другого.. Чтобы.лучше.разобраться,.почему.это.обстоятельство.ограничивает.наши.возмож- ности,.рассмотрим.пример.данной.архитектуры. Допустим,.у.большого.банка.есть.филиалы.в.нескольких.городах.и.было.решено. хранить.профили.пользователей.и.историю.их.счетов.в.кластерах.Kafka.в.каждом. из.городов..Вся.информация.реплицируется.в.центральный.кластер,.использу- емый.для.целей.бизнес-аналитики..При.входе.пользователей.на.сайт.банка.или. посещении.ими.местного.филиала.события.отправляются.в.локальный.кластер. и.читаются.тоже.оттуда..Однако.представьте.себе,.что.пользователь.посетил.фи- лиал.банка.в.другом.городе..Информации.о.нем.в.этом.городе.нет,.так.что.филиалу. придется.связаться.с.удаленным.кластером.(не.рекомендуется),.иначе.никакой. возможности.получить.информацию.о.пользователе.у.него.не.будет.(весьма.не- приятная.ситуация)..Поэтому.применяться.данный.паттерн.может.только.для.тех. частей.набора.данных,.которые.можно.полностью.разделить.между.региональны- ми.ЦОД. При.реализации.такой.архитектуры.необходим.как.минимум.один.процесс.зер- кального.копирования.в.центральном.ЦОД.для.каждого.регионального..Этот. процесс.будет.потреблять.данные.из.всех.удаленных.региональных.кластеров. и.отправлять.их.в.центральный.кластер..Если.в.нескольких.ЦОД.существует.одна. и.та.же.тема,.можно.записать.все.события.из.нее.в.одну.тему.с.тем.же.названием. на.центральном.кластере.или.заносить.события.из.каждого.ЦОД.в.отдельную. тему. Архитектура типа «активный — активный» Эта.архитектура.реализуется,.когда.два.или.более.ЦОД.совместно.используют. часть.данных.или.их.все,.причем.каждый.из.них.может.как.генерировать,.так.и.по- треблять.события.(рис..8.3). 190 Глава 8 • Зеркальное копирование между кластерами Рис. 8.3. Модель архитектуры типа «активный — активный» Основное.преимущество.архитектуры.—.возможность.обслуживания.пользова- телей.ближайшим.ЦОД,.что.обычно.повышает.производительность,.причем.без. потерь.функциональности.из-за.ограниченной.доступности.данных,.что.мы.наблю- дали.в.архитектуре.с.топологией.типа.«звезда»..Преимуществами.являются.также. его.избыточность.и.отказоустойчивость..Поскольку.каждый.из.ЦОД.обладает.всей. полнотой.функциональности,.в.случае.недоступности.одного.из.них.можно.пере- направить.пользователей.на.оставшийся..Для.такого.восстановления.после.сбоев. нужно.лишь.сетевое.перенаправление.пользователей,.обычно.это.самый.простой. и.прозрачный.тип.восстановления. Основной.недостаток.подобной.архитектуры.заключается.в.том,.что.весьма.не- просто.избежать.конфликтов.в.случае.асинхронного.чтения.и.обновления.данных. в.нескольких.местах..Существуют.также.технические.сложности.зеркального. копирования.событий..Например,.как.гарантировать,.что.одно.и.то.же.событие. не.будет.бесконечно.зеркально.копироваться.туда.и.обратно?.Но.еще.более.значи- мы.сложности.в.поддержании.согласованности.данных.между.этими.двумя.ЦОД.. Вот.несколько.примеров.трудностей,.с.которыми.вам.придется.столкнуться. При.отправке.пользователем.события.в.один.ЦОД.и.чтении.событий.из.друго- го.существует.вероятность.того,.что.записанное.им.событие.еще.не.попало.во. второй.ЦОД..С.точки.зрения.пользователя.это.будет.выглядеть.так,.будто.он. добавил.книгу.в.список.желаемых,.заглянул.в.него,.а.книги.там.нет..Поэтому. при.использовании.такой.архитектуры.разработчики.обычно.стараются.при- вязывать.пользователей.к.конкретному.ЦОД.и.гарантировать,.что.они.всегда. задействуют.один.кластер,.кроме.случаев.их.подключения.из.удаленной.точки. или.недоступности.ЦОД. Событие.из.одного.ЦОД.гласит,.что.пользователь.заказал.книгу.A,.а.относяще- еся.примерно.к.тому.же.моменту.времени.событие.из.другого.ЦОД.—.что.он.же. заказал.книгу.Б..После.зеркального.копирования.оба.события.окажутся.в.обоих. |