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

  • Учет интеграции данных

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


    Скачать 7.59 Mb.
    НазваниеApache Kafka. Потоковая обработка и анализ данныхСерия Бестселлеры OReilly
    Дата21.06.2022
    Размер7.59 Mb.
    Формат файлаpdf
    Имя файлаApache Kafka. Потоковая обработка и анализ данных.pdf
    ТипДокументы
    #609074
    страница20 из 39
    1   ...   16   17   18   19   20   21   22   23   ...   39
    159
    Во-первых,.клиенты.Kafka.включают.показатели.JMX,.позволяющие.выполнять.
    мониторинг.событий.и.состояния.клиентов..Два.наиболее.важных.для.производи- телей.показателя.—.число.ошибок.и.число.повторов.в.секунду.(агрегированные)..
    Следите.за.ними,.ведь.рост.числа.ошибок.или.повторов.означает.проблему.с.систе- мой.в.целом..По.журналам.производителей.также.отслеживайте.ошибки.отправки.
    событий,.помеченные.как.
    WARN
    ,.которые.выглядят.примерно.так:.«Получен.ответ.
    об.ошибке.при.генерации.сообщения.с.идентификатором.корреляции.5689.в.теме/
    разделе.[тема.1,.3],.повторяю.попытку.(осталось.две.попытки)..Ошибка…».(Got.error.
    produce.response.with.correlation.id.5689.on.topic-partition.[topic-1,.3],.retrying.(two.
    attempts.left)..Error…)..Как.говорилось.в.разделе.«Использование.производителей.
    в.надежной.системе».ранее.в.данной.главе,.вы.можете.или.увеличить.число.повто- ров,.или.первым.делом.устранить.вызывающую.ошибки.проблему.
    На.стороне.потребителя.важнейшим.показателем.является.задержка.потребителя,.
    показывающая,.насколько.он.отстает.от.последнего.зафиксированного.в.разделе.на.
    брокере.сообщения..В.идеале.задержка.всегда.должна.быть.равна.0.и.потребитель.
    всегда.читает.последнее.сообщение..На.практике.же.она.будет.колебаться.в.опре- деленных.пределах.вследствие.того,.что.вызов.метода.
    poll()
    .возвращает.несколько.
    сообщений,.после.чего.потребителю.приходится.тратить.время.на.их.обработку,.
    прежде.чем.извлечь.новые..Главное,.чтобы.потребители.в.конце.концов.наверстали.
    упущенное,.а.не.отставали.все.больше.и.больше..Из-за.ожидаемых.колебаний.за- держки.потребителя.задание.уведомлений.на.основе.этого.показателя.представляет.
    собой.непростую.задачу..Упростить.ее.может.утилита.проверки.задержки.Burrow.
    от.LinkedIn.(
    https://github.com/linkedin/Burrow
    ).
    Мониторинг.потока.данных.означает.также.проверку.того,.чтобы.все.сформиро- ванные.производителями.данные.были.потреблены.своевременно.(смысл.слова.
    «своевременно».определяется.вашими.требованиями)..Для.обеспечения.этого.нуж- но.знать,.когда.данные.поступили.от.производителей..Для.облегчения.этого.Kafka,.
    начиная.с.версии.0.10.0,.включает.во.все.сообщения.метку.даты/времени..Если.
    ваши.клиенты.работают.с.более.ранней.версией.Kafka,.рекомендуем.для.каждого.
    события.регистрировать.метку.даты/времени,.имя.приложения-производителя.
    и.имя.хоста,.на.котором.было.создано.сообщение..Это.поможет.в.дальнейшем.при.
    выяснении.причин.различных.проблем.
    Чтобы.убедиться.в.том,.что.все.сформированные.производителями.сообщения.
    были.потреблены.за.приемлемое.время,.производители.должны.регистрировать.
    число.сгенерированных.сообщений.(обычно.в.виде.количества.событий.в.секунду)..
    Потребители.должны.будут.регистрировать.как.число.потребленных.сообщений.
    (также.в.виде.количества.событий.в.секунду),.так.и.информацию.о.задержках.
    между.генерацией.сообщений.и.их.потреблением.на.основе.меток.даты/времени.
    событий..Далее.вам.понадобится.система.для.сверки.количества.событий.в.секунду.
    от.производителей.и.потребителей,.чтобы.гарантировать,.что.никакие.сообще- ния.не.потерялись.по.дороге,.а.также.чтобы.убедиться,.что.промежутки.времени.
    между.генерацией.и.потреблением.не.слишком.велики..Для.более.продвинутого.
    мониторинга.можете.добавить.специальный.потребитель,.подписав.его.на.наибо-

    160 Глава 6 • Надежная доставка данных лее.важные.темы,.который.бы.подсчитывал.события.и.сравнивал.их.количество.
    с.информацией.от.производителей.с.целью.точного.мониторинга.производителей.
    даже.в.случае,.когда.в.конкретный.момент.времени.никто.не.получает.исходящие.
    от.них.события..Реализация.подобных.систем.сквозного.мониторинга.непроста.
    и.требует.значительных.затрат.времени..Насколько.нам.известно,.подобных.систем.
    с.открытым.исходным.кодом.не.существует,.но.Confluent.предлагает.коммерческую.
    реализацию.как.часть.продукта.Confluent.Control.Center.(
    http://www.confluent.io/
    product/control-center
    ).
    Резюме
    Как.мы.говорили.в.начале.главы,.надежность.—.вопрос.не.только.конкретных.
    возможностей.Kafka..Необходимо.сделать.надежной.систему.в.целом,.включая.
    архитектуру.вашего.приложения,.методы.применения.приложением.API.произво- дителей.и.потребителей,.настройки.производителей.и.потребителей,.настройки.тем.
    и.брокеров..Обеспечение.надежности.приложения.всегда.означает.определенный.
    компромисс.между.сложностью.приложения,.его.производительностью,.доступно- стью.и.использованием.дискового.пространства..Понимая.все.доступные.варианты,.
    распространенные.схемы.действий.и.требования.для.конкретных.сценариев,.можно.
    принимать.разумные.решения.по.поводу.нужной.степени.надежности.вашего.при- ложения.и.развернутого.Kafka,.а.также.того,.на.какие.компромиссы.имеет.смысл.
    пойти.в.конкретном.случае.

    7
    Создание конвейеров данных
    При.обсуждении.создания.конвейеров.данных.с.помощью.Apache.Kafka.обычно.
    подразумевают.несколько.сценариев.использования..Первый.—.создание.конвейера.
    данных,.в.котором.Apache.Kafka.представляет.собой.одну.из.двух.конечных.точек..
    Например,.перемещение.данных.из.Kafka.в.S3.или.из.MongoDB.в.Kafka..Второй.
    сценарий.включает.создание.конвейера.данных.между.двумя.различными.систе- мами.с.Kafka.в.качестве.промежуточной..Примером.может.служить.перемещение.
    данных.из.Twitter.в.Elasticsearch.путем.отправки.их.сначала.в.Kafka,.а.затем.из.
    Kafka.в.Elasticsearch.
    Увидев,.что.Kafka.задействуется.в.обоих.этих.сценариях.в.LinkedIn.и.других.круп- ных.компаниях,.мы.добавили.в.Apache.Kafka.фреймворк.Kafka.Connect..Мы.обра- тили.внимание.на.специфические.задачи.по.интеграции.Kafka.в.конвейеры.данных,.
    которые.приходилось.решать.каждой.из.этих.компаний,.и.решили.добавить.в.Kafka.
    API,.которые.решали.бы.некоторые.из.этих.задач,.вместо.того.чтобы.заставлять.
    всех.делать.это.с.нуля.
    Главная.ценность.Kafka.для.конвейеров.данных.состоит.в.том,.что.она.может.слу- жить.очень.большим.надежным.буфером.между.различными.этапами.конвейера,.
    разделяя.внутри.конвейера.производители.данных.и.их.потребителей..Благодаря.
    этому,.а.также.своим.надежности.и.эффективности.Kafka.очень.хорошо.подходит.
    для.большинства.конвейеров.данных.
    Учет интеграции данных
    Некоторые компании рассматривают Kafka как конечную точку конвейера.
    Они формулируют свою задачу так: «Как мне передать данные из Kafka в Elastic?»
    Это вполне резонный вопрос, особенно если данные, находящиеся сейчас в Kafka,

    162 Глава 7 • Создание конвейеров данных нужны вам в Elastic, и мы рассмотрим способы добиться этого. Но начнем с обсуждения использования Kafka в более широком контексте, включающем по крайней мере две (а может, и намного больше) конечные точки, не считая Kafka.
    Рекомендуем каждому, кто столкнулся с задачей интеграции данных, исходить из более широкой картины, а не зацикливаться на непосредственных конечных точках. Сосредоточить усилия только на текущих задачах интеграции — верный способ в итоге получить сложную и дорогостоящую в поддержке мешанину вместо системы.
    В.этой.главе.мы.обсудим.некоторые.распространенные.нюансы,.которые.необходи- мо.учитывать.при.создании.конвейеров.данных..Они.представляют.собой.не.нечто.
    специфичное.для.Kafka,.а.скорее.общие.проблемы.интеграции.данных..Однако.
    мы.покажем,.что.Kafka.отлично.подходит.для.связанных.с.интеграцией.данных.
    сценариев.использования.и.продемонстрируем.решение.многих.из.этих.проблем.
    с.ее.помощью..Мы.обсудим.отличия.API.Kafka.Connect.от.обычных.клиентов- производителей.и.клиентов-потребителей,.а.также.обстоятельства,.при.которых.
    должен.применяться.каждый.из.типов.клиентов..Хотя.полномасштабное.изучение.
    Kafka.Connect.выходит.за.рамки.данной.главы,.мы.продемонстрируем.простейшие.
    примеры.использования.этого.фреймворка,.чтобы.познакомить.вас.с.ним,.и.ука- жем,.где.искать.более.детальную.информацию..Наконец,.обсудим.другие.системы.
    интеграции.данных.и.их.объединение.с.Kafka.
    Соображения по поводу создания конвейеров данных
    Здесь.у.нас.нет.возможности.углубляться.во.все.нюансы.создания.конвейеров.
    данных,.однако.хотелось.бы.подчеркнуть.некоторые.детали,.которые.важно.учесть.
    при.проектировании.архитектур.программного.обеспечения,.нацеленных.на.инте- грацию.нескольких.систем.
    Своевременность
    В.части.систем.ожидается,.что.данные.будут.поступать.большими.порциями.
    раз.в.день,.в.других.данные.должны.доставляться.через.несколько.миллисекунд.
    после.генерации..Большинство.конвейеров.данных.представляют.собой.что-то.
    среднее.между.этими.двумя.крайностями..Хорошие.системы.интеграции.данных.
    способны.соответствовать.различным.требованиям.к.своевременности.для.разных.
    конвейеров,.а.также.переходить.от.одного.графика.к.другому.при.изменении.биз- нес-требований..Kafka.как.платформу.потоковой.обработки.с.масштабируемым.
    и.надежным.хранилищем.можно.использовать.для.поддержки.чего.угодно,.начиная.

    Соображения по поводу создания конвейеров данных 163
    от.конвейеров,.работающих.практически.в.режиме.реального.времени,.до.пакетов,.
    поступающих.раз.в.час..Производители.могут.записывать.данные.в.Kafka.с.такой.
    частотой,.как.требуется,.а.потребители.могут.читать.и.доставлять.самые.свежие.
    события.по.мере.их.поступления..Возможна.также.реализация.пакетного.режима.
    работы.потребителей.с.запуском.раз.в.час,.подключением.к.Kafka.и.чтением.на- копившихся.за.этот.час.событий.
    В.этом.контексте.удобно.рассматривать.Kafka.как.гигантский.буфер,.который.раз- деляет.требования.к.интервалам.времени,.относящимся.к.производителям.и.потре- бителям..Производители.могут.записывать.события.в.режиме.реального.времени,.
    а.потребители.—.обрабатывать.пакеты.событий,.или.наоборот..Появляется.также.
    возможность.приостановки.процесса.—.Kafka.сама.контролирует.обратный.поток.
    в.производителях.за.счет.отсрочки.подтверждений.при.необходимости,.поскольку.
    скорость.получения.данных.целиком.зависит.от.потребителей.
    Надежность
    Нам.хотелось.бы.избежать.отдельных.критических.точек.и.обеспечить.быстрое.
    автоматическое.восстановление.после.разнообразных.сбоев..Данные.часто.по- ступают.по.конвейерам.в.критичные.для.бизнеса.системы,.и.сбой.длительностью.
    более.нескольких.секунд.может.иметь.разрушительные.последствия,.особенно.
    если.в.требованиях.к.своевременности.упоминаются.величины.порядка.несколь- ких.миллисекунд..Еще.один.важный.фактор.надежности.—.гарантии.доставки.
    данных..Хотя.в.некоторых.системах.потери.данных.допустимы,.чаще.всего.требу- ется.как минимум однократная.их.доставка..Это.означает,.что.все.события,.отправ- ленные.из.системы-источника,.должны.достичь.пункта.назначения,.хотя.иногда.
    возможно.появление.дубликатов.из-за.повторной.отправки..Часто.выдвигается.
    даже.требование.строго однократной.доставки.—.все.события,.отправленные.из.
    системы-источника,.должны.достичь.пункта.назначения.без.каких-либо.потерь.
    или.дублирования.
    Доступность.и.гарантии.надежности.Kafka.подробно.обсуждались.в.главе.6..Как.мы.
    говорили,.самостоятельно.Kafka.способна.обеспечить.как.минимум.однократную.
    доставку,.а.в.сочетании.с.внешним.хранилищем.с.поддержкой.транзакционной.
    модели.или.уникальных.ключей.—.и.строго.однократную..Поскольку.многие.из.
    конечных.точек.представляют.собой.хранилища.данных,.обеспечивающие.возмож- ность.строго.однократной.доставки,.то.конвейер.на.основе.Kafka.можно.сделать.
    строго.однократным..Стоит.упомянуть,.что.API.Kafka.Connect.при.обработке.сме- щений.предоставляет.API.для.интеграции.с.внешними.системами,.упрощающие.
    построение.сквозных.конвейеров.строго.однократной.доставки..Разумеется,.многие.
    из.существующих.коннекторов.с.открытым.исходным.кодом.поддерживают.строго.
    однократную.доставку.

    164 Глава 7 • Создание конвейеров данных
    Высокая/переменная нагрузка
    Создаваемые.конвейеры.данных.должны.масштабироваться.до.очень.высокой.про- изводительности,.часто.необходимой.в.современных.информационных.системах..
    И,.что.еще.важнее,.они.должны.уметь.приспосабливаться.к.внезапному.повышению.
    нагрузки.
    Благодаря.Kafka,.служащей.буфером.между.производителями.и.потребителями,.
    теперь.не.требуется.связывать.производительность.потребителей.с.производитель- ностью.производителей..Больше.не.нужен.сложный.механизм.контроля.обратного.
    потока.данных,.поскольку,.если.производительность.производителя.превышает.
    производительность.потребителя,.данные.будут.просто.накапливаться.в.Kafka.до.
    тех.пор,.пока.потребитель.не.догонит.производитель..Умение.Kafka.масштабиро- ваться.за.счет.независимого.добавления.производителей.и.потребителей.дает.воз- можность.динамически.и.независимо.масштабировать.любую.из.сторон.конвейера,.
    чтобы.приспособиться.к.меняющимся.требованиям.
    Kafka.—.распределенная.система.с.высокой.пропускной.способностью,.которая.в.со- стоянии.обрабатывать.сотни.мегабайт.данных.в.секунду.даже.на.не.очень.мощных.
    кластерах,.так.что.можно.не.бояться,.что.конвейер.не.сможет.масштабироваться.
    в.соответствии.с.растущими.требованиями..Кроме.того,.API.Kafka.Connect.наце- лены.не.просто.на.масштабирование,.а.на.распараллеливание.работы..В.следующем.
    разделе.мы.опишем,.как.платформа.Kafka.дает.возможность.источникам.и.приемни- кам.данных.распределять.работы.по.нескольким.потокам.выполнения.и.задейство- вать.доступные.ресурсы.процессора.даже.при.работе.на.отдельной.машине.
    Kafka.также.поддерживает.несколько.типов.сжатия,.благодаря.чему.пользователи.
    и.администраторы.могут.контролировать.использование.ресурсов.сети.и.устройств.
    хранения.при.росте.нагрузки.
    Форматы данных
    Одна.из.важнейших.задач.конвейеров.данных.—.согласование.их.форматов.и.ти- пов..Различные.базы.данных.и.другие.системы.хранения.поддерживают.разные.
    форматы.данных..Вам.может.потребоваться.загрузить.в.Kafka.данные.в.формате.
    XML.и.реляционные.данные,.использовать.внутри.Kafka.формат.Avro,.а.затем.пре- образовать.данные.в.формат.JSON.для.записи.в.Elasticsearch,.или.в.формат.Parquet.
    для.записи.в.HDFS,.или.в.CSV.при.записи.в.S3.
    Самой.Kafka.и.API.Kafka.Connect.форматы.данных.совершенно.не.важны..Как.мы.
    видели.в.предыдущих.главах,.производители.и.потребители.могут.применить.
    любой.сериализатор.для.представления.данных.в.любом.формате..Хранящиеся.
    в.оперативной.памяти.собственные.объекты.Kafka.Connect.включают.типы.и.схе- мы.данных,.но,.как.мы.скоро.узнаем,.Kafka.Connect.позволяет.использовать.под- ключаемые.преобразователи.формата.для.хранения.этих.записей.в.произвольном.

    Соображения по поводу создания конвейеров данных 165
    формате..Это.значит,.что.вне.зависимости.от.задействованного.в.ней.формата.
    данных.Kafka.не.ограничивает.выбор.преобразователей.
    У.многих.источников.и.приемников.данных.есть.схемы:.можно.прочитать.схему.
    из.источника.вместе.с.данными,.сохранить.ее.и.воспользоваться.ею.в.дальнейшем.
    для.проверки.совместимости.или.даже.обновить.ее.в.базе.данных.приемника..
    Классический.пример.—.конвейер.данных.из.MySQL.в.Hive..Хороший.конвейер.
    данных.при.добавлении.столбца.в.MySQL.обеспечивает.добавление.его.и.в.Hive,.
    чтобы.можно.было.загрузить.туда.новые.данные.
    Кроме.того,.при.записи.данных.из.Kafka.во.внешние.системы.коннекторы.приемни- ков.данных.отвечают.за.формат.записываемых.данных..Некоторые.из.них.делают.
    этот.формат.подключаемым..Например,.коннектор.HDFS.позволяет.выбирать.
    между.форматами.Avro.и.Parquet.
    Просто.поддерживать.различные.типы.данных.недостаточно.—.универсальный.
    фреймворк.интеграции.данных.должен.также.решать.проблемы.различия.пове- дения.разных.источников.и.приемников.данных..Например,.Syslog.представляет.
    собой.источник,.«проталкивающий».данные,.а.реляционные.базы.данных.требу- ют,.чтобы.фреймворк.извлекал.данные.из.них..HDFS.—.это.файловая.система,.
    предназначенная.только.для.добавления.данных,.так.что.их.в.нее.можно.только.
    записывать,.в.то.время.как.большинство.систем.дают.возможность.как.дописывать.
    данные,.так.и.обновлять.существующие.записи.
    Преобразования
    Преобразования.—.самые.неоднозначные.из.всех.требований..Существуют.две.
    парадигмы.создания.конвейеров.данных:.ETL.и.ELT..ETL.(расшифровывается.
    как.Extract.—.Transform.—.Load.—.«извлечь,.преобразовать,.загрузить»).означает,.
    что.конвейер.данных.отвечает.за.изменение.проходящих.через.него.данных..Это.дает.
    ощутимую.экономию.времени.и.места,.поскольку.не.требуется.сохранять.данные,.
    менять.их.и.сохранять.снова..В.зависимости.от.преобразований.иногда.это.преиму- щество.реально,.а.иногда.просто.перекладывает.бремя.вычислений.и.хранения.на.
    сам.конвейер.данных,.что.может.быть.нежелательным..Основной.недостаток.тако- го.подхода.заключается.в.том,.что.производимые.в.конвейере.данных.преобразо- вания.могут.лишить.нас.возможности.обрабатывать.данные.в.дальнейшем..
    Если.создатель.конвейера.между.MongoDB.и.MySQL.решил.отфильтровать.часть.
    событий.или.убрать.из.записей.некоторые.поля,.то.у.всех.обращающихся.к.данным.
    в.MySQL.пользователей.и.приложений.окажется.доступ.лишь.к.части.данных..Если.
    им.потребуется.доступ.к.отсутствующим.полям,.придется.перестраивать.конвейер.
    и.повторно.обрабатывать.уже.обработанные.данные.(если.они.еще.доступны).
    ELT.расшифровывается.как.«извлечь,.загрузить,.преобразовать».(Extract.—.Load.—.
    Transform).и.означает,.что.конвейер.лишь.минимально.преобразует.данные.(в.ос- новном.это.касается.преобразования.типов.данных).с.тем,.чтобы.попадающие.по.

    166 Глава 7 • Создание конвейеров данных месту.назначения.данные.как.можно.меньше.отличались.от.исходных..Такие.кон- вейеры.называют.также.высокоточными.конвейерами.(high-fidelity.pipeline).или.
    архитектурой.озер.данных.(data-lake.architecture)..В.них.целевая.система.собирает.
    «сырые».данные.и.обрабатывает.их.должным.образом..Их.преимущество.заклю- чается.в.максимальной.гибкости:.у.пользователей.целевой.системы.есть.доступ.ко.
    всем.данным..В.этих.системах.также.проще.искать.причины.проблем,.поскольку.
    вся.обработка.данных.выполняется.в.одной.системе,.а.не.распределяется.между.
    конвейером.и.дополнительными.приложениями..Недостаток.—.в.расходе.ресурсов.
    CPU.и.хранилища.в.целевой.системе..В.некоторых.случаях.ресурсы.обходятся.не- дешево,.и.желательно.по.возможности.вынести.обработку.из.этих.систем.
    Безопасность
    Безопасность.важна.всегда..В.терминологии.конвейеров.данных.основные.про- блемы.безопасности.состоят.в.следующем.
    ‰
    ‰
    Можем.ли.мы.гарантировать.шифрование.проходящих.через.конвейер.данных?.
    В.основном.это.важно.для.конвейеров,.проходящих.через.границы.ЦОД.
    ‰
    ‰
    Кому.разрешено.вносить.в.конвейер.изменения?
    ‰
    ‰
    Может.ли.конвейер.при.чтении.им.данных.из.мест.с.контролируемым.доступом.
    обеспечить.должную.аутентификацию?
    Kafka.предоставляет.возможность.шифрования.данных.при.передаче,.когда.она.
    встроена.в.конвейер.между.источниками.и.приемниками.данных..Она.также.под- держивает.аутентификацию.(через.SASL).и.авторизацию,.так.что.вы.можете.быть.
    спокойны:.если.тема.содержит.конфиденциальную.информацию,.никто.не.упол- номоченный.на.это.не.передаст.ее.в.менее.защищенные.системы..В.Kafka.также.
    имеется.журнал.аудита.для.отслеживания.доступа.—.санкционированного.и.не- санкционированного..Написав.немного.дополнительного.кода,.можно.отследить,.
    откуда.поступили.события.в.каждой.теме.и.кто.их.менял,.и.таким.образом.получить.
    полную.историю.каждой.записи.
    Обработка сбоев
    Считать,.что.все.данные.всегда.будут.в.полном.порядке,.очень.опасно..Важно.за- ранее.предусмотреть.обработку.сбоев..Можно.ли.сделать.так,.чтобы.дефектные.
    записи.никогда.не.попадали.в.конвейер?.Можно.ли.восстановить.работу.системы.
    после.обработки.не.поддающихся.разбору.записей?.Можно.ли.исправить.«плохие».
    записи.(возможно,.при.вмешательстве.оператора).и.обработать.их.заново?.Что.если.
    «плохая».запись.выглядит.точно.так.же,.как.нормальная,.и.проблема.вскроется.
    лишь.через.несколько.дней?
    Благодаря.тому,.что.Kafka.долго.хранит.все.события,.можно.при.необходимости.
    вернуться.назад.во.времени.и.ликвидировать.последствия.ошибок.

    Соображения по поводу создания конвейеров данных
    1   ...   16   17   18   19   20   21   22   23   ...   39


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