Главная страница

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


Скачать 7.59 Mb.
НазваниеApache Kafka. Потоковая обработка и анализ данныхСерия Бестселлеры OReilly
Дата21.06.2022
Размер7.59 Mb.
Формат файлаpdf
Имя файлаApache Kafka. Потоковая обработка и анализ данных.pdf
ТипДокументы
#609074
страница5 из 39
1   2   3   4   5   6   7   8   9   ...   39
35
перезапускаться.и.продолжать.обработку.сообщений.с.того.места,.на.котором.они.
остановились,.без.потери.данных.
Масштабируемость
Гибко.масштабируемая.Kafka.позволяет.обрабатывать.любые.объемы.данных..
Можно.начать.работу.с.одного.брокера.в.качестве.пробной.версии,.расширить.
систему.до.небольшого.кластера.из.трех.брокеров,.предназначенного.для.разра- ботки,.а.затем.перейти.к.промышленной.эксплуатации.с.большим.кластером.из.
десятков.или.даже.сотен.брокеров,.растущим.по.мере.увеличения.объемов.данных..
При.этом.можно.расширять.систему.во.время.работы.кластера,.что.не.повлияет.
на.доступность.системы.в.целом..Это.означает.также,.что.кластеру.из.множества.
брокеров.не.страшен.сбой.одного.из.них.—.обслуживание.клиентов.таким.образом.
не.прервется..Кластеры,.которые.должны.выдерживать.одновременные.отказы.
нескольких.брокеров,.можно.настроить,.увеличив.коэффициенты.репликации..
Подробнее.репликация.обсуждается.в.главе.6.
Высокое быстродействие
Благодаря.рассмотренным.особенностям.Apache.Kafka.как.система.обмена.со- общениями.по.типу.«публикация/подписка».отличается.прекрасной.производи- тельностью.при.высокой.нагрузке..Производители,.потребители.и.брокеры.можно.
масштабировать.для.легкой.обработки.очень.больших.потоков.сообщений..Причем.
это.можно.делать.параллельно.с.обеспечением.менее.чем.секундной.задержки.со- общений.по.пути.от.производителя.к.потребителю.
Экосистема данных
В.средах,.создаваемых.нами.для.обработки.данных,.задействуется.множество.
приложений..Производители.данных.представляют.собой.приложения,.которые.
создают.данные.или.как-либо.еще.вводят.их.в.систему..Выходные.данные.имеют.
форму.показателей,.отчетов.и.других.результатов.обработки..Мы.создаем.циклы,.
в.которых.одни.компоненты.читают.данные.из.системы,.преобразуют.их.с.помощью.
данных.от.других.производителей,.после.чего.возвращают.обратно.в.инфраструк- туру.данных.для.использования..Это.происходит.со.множеством.типов.данных,.
у.каждого.из.которых.свои.особенности.в.плане.содержимого,.размера.и.способа.
использования.
Apache.Kafka.—.своего.рода.кровеносная.система.для.экосистемы.данных.(рис..1.9)..
Она.обеспечивает.перенос.сообщений.между.разными.членами.инфраструктуры,.
предлагая.единообразный.интерфейс.для.всех.клиентов..В.сочетании.с.систе- мой,.предоставляющей.схемы.сообщений,.производители.и.потребители.более.

36 Глава 1 • Знакомьтесь: Kafka не.требуют.сильного.сцепления.или.прямого.соединения..По.мере.возникновения.
и.исчезновения.бизнес-моделей.можно.добавлять.и.удалять.компоненты,.причем.
производители.не.должно.волновать.то,.какие.приложения.потребляют.данные.
и.сколько.их.
Рис. 1.9. Большая экосистема данных
Сценарии использования
Отслеживание действий пользователей
Первоначальный.сценарий.использования.платформы.Kafka,.разработанный.при.
ее.создании.в.компании.LinkedIn,.состоял.в.отслеживании.действий.пользовате- лей..Пользователи.сайтов.взаимодействуют.с.приложениями.клиентской.части,.
генерирующими.сообщения.о.предпринятых.пользователями.действиях..Это.
может.быть.пассивная.информация,.например,.сведения.о.просмотрах.страниц.или.
отслеживание.щелчков.кнопкой.мыши,.или.информация.о.более.сложных.действи- ях,.например,.добавлении.пользователем.данных.в.свой.профиль..
Сообщения.публикуются.в.одной.или.нескольких.темах,.потребителями.которых.
становятся.приложения.в.прикладной.части..Эти.приложения.могут.генерировать.
отчеты,.служить.производителем.данных.для.систем.машинного.обучения,.обнов- лять.результаты.поиска.или.выполнять.другие.операции,.необходимые.для.повы- шения.удобства.использования.

Экосистема данных 37
Обмен сообщениями
Kafka.используется.также.для.обмена.сообщениями,.при.котором.приложения.
должны.отправлять.пользователям.уведомления,.например,.сообщения.элек- тронной.почты..Эти.приложения.могут.создавать.сообщения,.не.беспокоясь.об.
их.форматировании.или.фактической.отправке..После.этого.одно-единственное.
приложение.сможет.читать.все.отправленные.сообщения.и.обрабатывать.их.еди- нообразно,.включая:
‰
‰
единообразное.форматирование.сообщений,.называемое.также.декорирова- нием;
‰
‰
объединение.нескольких.сообщений.в.одно.уведомление.для.отправки;
‰
‰
учет.предпочтений.пользователя.относительно.способа.получения.сообщений.
Использование.для.этого.единого.приложения.позволяет.избежать.дублирования.
функциональности.в.нескольких.приложениях,.а.также.дает.возможность.вы- полнять.такие.операции,.как.агрегирование,.которые.в.противном.случае.были.бы.
невозможны.
Показатели и журналирование
Kafka.также.идеально.подходит.для.сбора.показателей.и.журналов.приложения.
и.системы..В.случае.реализации.этого.сценария.использования.особенно.ярко.
проявляется.вероятность.наличия.нескольких.приложений,.генерирующих.одно- типные.сообщения..Приложения.регулярно.публикуют.в.темах.Kafka.показатели,.
потребителями.которых.становятся.системы.мониторинга.и.оповещения..Их.
также.можно.использовать.в.таких.офлайн-системах,.как.Hadoop,.для.долгосроч- ного.анализа,.например,.прогноза.роста..Журнальные.сообщения.можно.публи- ковать.аналогичным.образом.с.маршрутизацией.их.на.выделенные.системы.поис- ка.по.журналам,.например,.Elasticsearch.или.системы.анализа.безопасности..Еще.
одно.достоинство.Kafka:.в.случае.необходимости.изменения.целевой.системы.
(например,.при.наступлении.времени.обновления.системы.хранения.журналов).
не.нужно.менять.приложения.клиентской.части.или.способ.агрегирования.
Журнал фиксации
Поскольку.в.основе.Kafka.лежит.понятие.журнала.фиксации,.можно.с.легкостью.
публиковать.в.ней.изменения.базы.данных.и.организовывать.мониторинг.прило- жениями.этого.потока.данных.с.целью.получения.изменений.сразу.же.после.их.вы- полнения..Этот.поток.журнала.изменений.можно.использовать.и.для.репликации.
изменений.базы.данных.в.удаленной.системе.или.для.объединения.изменений.из.
нескольких.систем.в.единое.представление.базы.данных..Долгосрочное.сохране- ние.оказывается.удобным.для.создания.буфера.для.этого.журнала.изменений,.

38 Глава 1 • Знакомьтесь: Kafka поскольку.дает.возможность.повторного.выполнения.в.случае.сбоя.приложений- потребителей..В.качестве.альтернативы.можно.воспользоваться.темами.со.сжа- тыми.журналами.для.более.длительного.хранения.за.счет.хранения.лишь.одного.
изменения.для.каждого.ключа.
Потоковая обработка
Еще.одна.область.потенциального.применения.Kafka.—.потоковая.обработка..Хотя.
практически.любой.вид.использования.платформы.можно.рассматривать.как.
потоковую.обработку,.этот.термин.обычно.относится.к.приложениям.с.такой.же.
функциональностью,.как.отображение/свертка.в.Hadoop..Hadoop.обычно.работает.
с.агрегированием.данных.на.длительном.интервале.времени.—.несколько.часов.или.
дней..Потоковая.же.обработка.работает.с.данными.в.режиме.реального.времени.со.
скоростью.генерации.сообщений..Потоковые.фреймворки.позволяют.пользовате- лям.писать.маленькие.приложения.для.работы.с.сообщениями.Kafka,.выполняя.
такие.задачи,.как.расчет.показателей,.секционирование.(разбиение.на.разделы).
сообщений.для.повышения.эффективности.обработки.другими.приложениями.
и.преобразование.сообщений.с.использованием.данных.из.нескольких.произво- дителей..Мы.рассмотрим.потоковую.обработку.в.главе.11.
История создания Kafka
Платформа.Kafka.была.создана.для.решения.задачи.организации.конвейеров.
данных.в.компании.LinkedIn..Она.была.нацелена.на.обеспечение.высокопроизво- дительной.системы.обмена.сообщениями,.способной.работать.со.множеством.типов.
данных.и.выдавать.в.режиме.реального.времени.очищенную.и.структурированную.
информацию.о.действиях.пользователей.и.системных.показателях.
Данные — истинный движитель всех наших начинаний.
Джефф Вейнер, генеральный директор LinkedIn
Проблема LinkedIn
Как.и.в.описанном.в.начале.этой.главы.примере,.в.LinkedIn.была.система.для.сбора.
показателей.(как.системных,.так.и.относящихся.к.приложениям),.в.которой.приме- нялись.пользовательские.средства.сбора.данных.и.утилиты.с.открытым.исходным.
кодом.для.хранения.и.внутреннего.представления.данных..Помимо.возможности.
фиксации.обычных.показателей,.например,.коэффициента.загрузки.CPU.и.бы- стродействия.приложения,.в.ней.была.продвинутая.возможность.отслеживания.
запросов,.использовавшая.систему.мониторинга.и.позволявшая.анализировать.
прохождение.запроса.пользователя.по.внутренним.приложениям..У.системы.

История создания Kafka 39
мониторинга,.однако,.было.немало.недостатков,.в.частности.сбор.показателей.на.
основе.опросов,.большие.промежутки.между.значениями.и.то,.что.владельцам.
приложений.невозможно.было.управлять.своими.показателями..Эта.система.была.
слабо.автоматизированной,.требовала.вмешательства.операторов.для.решения.
большинства.простых.задач,.была.неоднородной.(одни.и.те.же.показатели.по- разному.назывались.в.разных.подсистемах).
В.то.же.время.в.LinkedIn.существовала.система,.предназначенная.для.отслежива- ния.информации.о.действиях.пользователей..Серверы.клиентской.части.периоди- чески.подключались.к.HTTP-сервису.для.публикации.в.нем.пакетов.сообщений.
(в.формате.XML)..Эти.пакеты.затем.передавались.на.офлайн-обработку,.в.ходе.
которой.производились.синтаксический.разбор.и.объединение.файлов..Эта.система.
тоже.имела.немало.недостатков..Форматирование.XML.было.несогласованным,.
а.синтаксический.разбор.—.дорогостоящим.в.вычислительном.отношении..Смена.
типа.отслеживаемых.действий.пользователя.требовала.значительной.слаженной.
работы.клиентских.частей.и.офлайн-обработки..К.тому.же.в.системе.постоянно.
происходили.сбои.из-за.изменения.схем..Отслеживание.было.основано.на.пере- даче.пакетов.каждый.час,.так.что.использовать.его.в.режиме.реального.времени.
было.невозможно.
Системы.мониторинга.и.отслеживания.не.могли.использовать.один.и.тот.же.сервис.
прикладной.части..Сервис.мониторинга.был.слишком.неуклюжим,.формат.данных.
не.подходил.для.отслеживания.действий,.а.модель.опросов.для.мониторинга.была.
несовместима.с.моделью.проталкивания.для.отслеживания..В.то.же.время.сервис.
отслеживания.был.недостаточно.стабильным.для.использования.его.для.показа- телей,.а.модель.пакетной.обработки.не.подходила.для.мониторинга.и.оповещения.
в.режиме.реального.времени..Однако.у.данных.мониторинга.и.отслеживания.
было.много.общих.черт,.а.выявление.взаимосвязей.этой.информации.(например,.
влияния.конкретных.типов.действий.пользователя.на.производительность.прило- жения).—.крайне.желательным..Уменьшение.частоты.конкретных.видов.действий.
пользователя.могло.указывать.на.проблемы.с.обслуживающим.их.приложением,.
но.часовая.задержка.обработки.пакетов.с.действиями.пользователей.означала,.что.
реакция.на.подобные.проблемы.слишком.медленная.
Прежде.всего.были.тщательно.изучены.уже.существующие.готовые.решения.
с.открытым.исходным.кодом.с.целью.нахождения.новой.системы,.которая.бы.
обеспечивала.доступ.к.данным.в.режиме.реального.времени.и.масштабировалась.
настолько,.чтобы.справиться.с.требуемым.объемом.потока.сообщений..Были.соз- даны.экспериментальные.системы.на.основе.брокера.сообщений.ActiveMQ,.но.на.
тот.момент.он.не.был.способен.справиться.с.таким.объемом.сообщений..К.тому.же,.
когда.это.решение.работало.так,.как.требовалось.LinkedIn,.оно.было.нестабильным,.
в.ActiveMQ.обнаружилось.множество.изъянов,.приводивших.к.приостановке.бро- керов,.в.результате.чего.возникали.заторы.в.соединениях.с.клиентами.и.ограничи- вались.возможности.приложений.по.выдаче.результатов.запросов.пользователям..
Было.принято.решение.перейти.на.свою.инфраструктуру.конвейеров.данных.

40 Глава 1 • Знакомьтесь: Kafka
Рождение Kafka
Команду.разработчиков.в.LinkedIn.возглавлял.Джей.Крепс.(Jay.Kreps),.ведущий.
разработчик,.ранее.отвечавший.за.создание.и.выпуск.распределенной.системы.
хранения.данных.типа.«ключ.—.значение».Voldemort.с.открытым.исходным.ко- дом..Первоначально.в.команду.входили.также.Ния.Нархид,.а.позднее.Чжан.Рао..
Вместе.они.решили.создать.систему.обмена.сообщениями,.которая.отвечала.бы.
требованиям.как.к.мониторингу,.так.и.к.отслеживанию.и.которую.в.дальнейшем.
можно.было.бы.масштабировать..Основные.цели:
‰
‰
расцепить.производители.и.потребители.с.помощью.модели.проталкивания/
извлечения;
‰
‰
обеспечить.сохраняемость.сообщений.в.системе.обмена.сообщениями,.чтобы.
можно.было.работать.с.несколькими.потребителями;
‰
‰
оптимизировать.систему.для.обеспечения.высокой.пропускной.способности.
по.сообщениям;
‰
‰
обеспечить.горизонтальное.масштабирование.системы.по.мере.роста.потоков.
данных.
В.результате.была.создана.система.публикации.сообщений.и.подписки.на.них.с.ти- пичными.для.систем.обмена.сообщениями.интерфейсом.и.слоем.хранения,.более.
напоминающим.систему.агрегирования.журналов..В.сочетании.с.использованием.
Apache.Avro.для.сериализации.сообщений.Kafka.позволяла.эффективно.обраба- тывать.как.показатели,.так.и.информацию.о.действиях.пользователей.в.масштабе.
миллиардов.сообщений.в.день..Масштабируемость.Kafka.сыграла.свою.роль.в.том,.
что.объем.использования.LinkedIn.вырос.до.более.чем.триллиона.сообщений.
и.петабайта.потребляемых.данных.ежедневно.(по.состоянию.на.август.2015.года).
Открытый исходный код
Kafka.была.выпущена.в.виде.проекта.с.открытым.исходным.кодом.на.GitHub.
в.конце.2010.года..По.мере.того.как.сообщество.разработчиков.ПО.с.открытым.
исходным.кодом.стало.обращать.на.нее.все.больше.внимания,.было.предложено.
(и.предложение.принято).внести.Kafka.в.число.проектов.из.инкубатора.Apache.
Software.Foundation.(это.произошло.в.июле.2011.года)..В.октябре.2012-го.Apache.
Kafka.была.переведена.из.инкубатора.и.стала.полноправным.проектом..С.этого.вре- мени.сформировалось.постоянное.сообщество.участников.и.коммитеров.проекта.
Kafka.вне.компании.LinkedIn,.постоянно.работавших.над.ней..Осенью.2014.года.
Джей.Крепс,.Ния.Нархид.и.Чжан.Рао.покинули.LinkedIn.и.основали.Confluent.—.
компанию,.сосредоточившую.усилия.на.обеспечении.разработки,.коммерческой.
поддержки.и.обучения.Apache.Kafka..Эти.две.компании.продолжают.разрабатывать.
и.сопровождать.Kafka,.превращая.ее.в.оптимальное.средство.создания.больших.
конвейеров.данных..В.этом.им.помогает.сообщество.других.разработчиков.откры- того.ПО,.чей.вклад.в.работу.постоянно.растет.

Приступаем к работе с Kafka 41
Название
Часто.можно.услышать.вопрос:.почему.Kafka.получила.такое.название?.Джей.Крепс.
рассказал.следующее:.«Мне показалось, что раз уж Kafka — система, оптимизиро-
ванная для записи, имеет смысл воспользоваться именем писателя. В колледже я по-
сещал очень много литературных курсов, и мне нравился Франц Кафка. Кроме того,
такое название для проекта с открытым исходным кодом звучит очень круто».
Приступаем к работе с Kafka
Теперь,.когда.мы.знаем.все.о.платформе.Kafka.и.ее.истории,.можно.установить.ее.
и.создать.собственный.конвейер.данных..В.следующей.главе.обсудим.установку.
и.настройку.Kafka..Затронем.выбор.подходящего.для.Kafka.аппаратного.обеспече- ния.и.некоторые.нюансы,.которые.стоит.учитывать.при.переходе.к.промышленной.
эксплуатации.

2
Установка Kafka
Эта.глава.описывает.начало.работы.с.брокером.Apache.Kafka,.включая.установку.
Apache.ZooKeeper,.применяемого.платформой.для.хранения.метаданных.бро- керов..Здесь.также.рассматриваются.основные.параметры.конфигурации.для.
развертывания.Kafka.и.критерии.выбора.аппаратного.обеспечения,.подходящего.
для.работы.брокеров..Наконец,.мы.расскажем,.как.установить.несколько.брокеров.
Kafka.в.виде.единого.кластера,.и.обсудим.некоторые.нюансы.ее.промышленной.
эксплуатации.
Обо всем по порядку
Прежде.чем.использовать.Kafka,.необходимо.проделать.несколько.вещей..В.следу- ющих.разделах.расскажем.о.них.
Выбрать операционную систему
Apache.Kafka.представляет.собой.Java-приложение,.которое.может.работать.на.
множестве.операционных.систем,.в.числе.которых.Windows,.MacOS,.Linux.и.др..
В.этой.главе.мы.сосредоточимся.на.установке.Kafka.в.среде.Linux,.поскольку.
именно.на.этой.операционной.системе.платформу.устанавливают.чаще.всего..Linux.
также.является.рекомендуемой.операционной.системой.для.развертывания.Kafka.
общего.назначения..Информацию.по.установке.Kafka.на.Windows.и.MacOS.вы.
найдете.в.приложении.A.
Установить Java
Прежде.чем.установить.ZooKeeper.или.Kafka,.необходимо.установить.и.настроить.
среду.Java..Рекомендуется.использовать.Java.8,.причем.это.может.быть.версия,.как.
включенная.в.вашу.операционную.систему,.так.и.непосредственно.загруженная.

Обо всем по порядку 43
с.сайта.
java.com
..Хотя.ZooKeeper.и.Kafka.будут.работать.с.Java.Runtime.Edition,.при.
разработке.утилит.и.приложений.удобнее.использовать.полный.Java.Development.
Kit.(JDK)..Приведенные.шаги.установки.предполагают,.что.у.вас.в.каталоге.
/usr/
java/jdk1.8.0_51
.установлен.JDK.версии.8.0.51.
Установить ZooKeeper
Apache.Kafka.использует.ZooKeeper.для.хранения.метаданных.о.кластере.Kafka,.
а.также.подробностей.о.клиентах-потребителях.(рис..2.1)..Хотя.ZooKeeper.можно.
запустить.и.с.помощью.сценариев,.включенных.в.дистрибутив.Kafka,.установка.
полной.версии.хранилища.ZooKeeper.из.дистрибутива.очень.проста.
Рис. 2.1. Kafka и ZooKeeper
Kafka.была.тщательно.протестирована.со.стабильной.версией.3.4.6.хранилища.
ZooKeeper,.которую.можно.скачать.с.сайта.
apache.org
.по.адресу.
http://bit.ly/2sDWSgJ
Автономный сервер
Следующий.пример.демонстрирует.установку.ZooKeeper.с.базовыми.настройка- ми.в.каталог.
/usr/local/zookeeper
.с.сохранением.данных.в.каталоге.
/var/lib/
zookeeper
:
# tar -zxf zookeeper-3.4.6.tar.gz
# mv zookeeper-3.4.6 /usr/local/zookeeper
# mkdir -p /var/lib/zookeeper
# cat > /usr/local/zookeeper/conf/zoo.cfg << EOF
> tickTime=2000
> dataDir=/var/lib/zookeeper
> clientPort=2181
> EOF
# export JAVA_HOME=/usr/java/jdk1.8.0_51

44 Глава 2 • Установка Kafka
# /usr/local/zookeeper/bin/zkServer.sh start
JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
#
Теперь.можете.проверить,.что.ZooKeeper.как.полагается.работает.в.автономном.
режиме,.подключившись.к.порту.клиента.и.отправив.четырехбуквенную.коман- ду.
srvr
:
# telnet localhost 2181
Trying ::1...
Connected to localhost.
Escape character is '^]'.
srvr
Zookeeper version: 3.4.6-1569965, built on 02/20/2014 09:09 GMT
Latency min/avg/max: 0/0/0
Received: 1
Sent: 0
Connections: 1
Outstanding: 0
Zxid: 0x0
Mode: standalone
Node count: 4
Connection closed by foreign host.
#
Ансамбль ZooKeeper
Кластер.ZooKeeper.называется.ансамблем.(ensemble)..Из-за.особенностей.самого.
алгоритма.рекомендуется,.чтобы.ансамбль.включал.нечетное.число.серверов,.на- пример,.3,.5.и.т..д.,.поскольку.для.того,.чтобы.ZooKeeper.мог.отвечать.на.запросы,.
должно.функционировать.большинство.членов.ансамбля.(кворум)..Это.значит,.
что.ансамбль.из.трех.узлов.может.работать.и.при.одном.неработающем.узле..
Если.в.ансамбле.три.узла,.таких.может.быть.два.
1   2   3   4   5   6   7   8   9   ...   39


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