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

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


Скачать 7.59 Mb.
НазваниеApache Kafka. Потоковая обработка и анализ данныхСерия Бестселлеры OReilly
Дата21.06.2022
Размер7.59 Mb.
Формат файлаpdf
Имя файлаApache Kafka. Потоковая обработка и анализ данных.pdf
ТипДокументы
#609074
страница3 из 39
1   2   3   4   5   6   7   8   9   ...   39
14 Оглавление
Приложение..Установка.Kafka.на.других.операционных.системах.................................315
Установка.на.Windows...............................................................................................................315
Использование.Windows.Subsystem.для.Linux...........................................................315
Использование.Java.естественным.образом.................................................................316
Установка.на.MacOS...................................................................................................................318
Использование.Homebrew..................................................................................................319
Установка.вручную...............................................................................................................319

Предисловие
Сегодня.платформу.Apache.Kafka.используют.в.тысячах.компаний,.в.том.числе.
более.чем.в.трети.компаний.из.списка.Fortune.500..Kafka.входит.в.число.самых.
быстрорастущих.проектов.с.открытым.исходным.кодом.и.уже.породила.обширную.
экосистему..Она.находится.в.самом.эпицентре.управления.потоками.данных.и.их.
обработки.
Откуда.же.появился.проект.Kafka?.Почему.он.возник?.И.что.это.вообще.такое?
Начало.Kafka.положила.внутренняя.инфраструктурная.система,.которую.мы.созда- вали.в.LinkedIn..Мы.заметили.простую.вещь:.в.нашей.архитектуре.было.множество.
баз.данных.и.других.систем,.предназначенных.для.хранения.данных,.но.ничего.
не.было.для.обработки.непрерывных.потоков.данных..Прежде.чем.создать.Kafka,.
мы.перепробовали.всевозможные.готовые.решения,.начиная.от.систем.обмена.со- общениями.и.заканчивая.агрегированием.журналов.и.ETL-утилитами,.но.ни.одно.
из.них.не.подошло.
В.конце.концов.договорились.создать.нужное.решение.с.нуля..Идея.состояла.в.том,.
чтобы.не.ставить.во.главу.угла.хранение.больших.объемов.данных,.как.в.реля- ционных.базах.данных,.хранилищах.пар.«ключ/значение»,.поисковых.индексах.
или.кэшах,.а.рассматривать.данные.как.непрерывно.развивающийся.и.постоянно.
растущий.их.поток.и.проектировать.информационные.системы.—.и,.конечно,.ар- хитектуру.данных.—.на.этой.основе.
Эта.идея.нашла.даже.более.широкое.применение,.чем.мы.ожидали..Хотя.первым.
назначением.Kafka.было.обеспечение.функционирования.работающих.в.реальном.
масштабе.времени.приложений.и.потоков.данных.социальной.сети,.сейчас.она.
лежит.в.основе.самых.передовых.архитектур.во.всех.отраслях.промышленности..
Крупные.розничные.торговцы.пересматривают.свои.основные.бизнес-процессы.
с.точки.зрения.непрерывных.потоков.данных,.автомобильные.компании.собирают.
и.обрабатывают.в.режиме.реального.времени.потоки.данных,.получаемые.от.под- ключенных.к.Интернету.автомобилей,.и.также.пересматривают.свои.фундамен- тальные.процессы.и.системы.с.ориентацией.на.Kafka.и.банки.
Так.что.же.это.такое,.Kafka?.Чем.она.отличается.от.хорошо.знакомых.вам.систем,.
которые.сейчас.используются?

16 Предисловие
Мы.рассматриваем.Kafka.как.потоковую платформу.(streaming.platform).—.си- стему,.которая.дает.возможность.публикации.потоков.данных.и.подписки.на.
них,.их.хранения.и.обработки..Именно.для.этого.Apache.Kafka.и.создавалась..
Рассматривать.данные.с.этой.точки.зрения.может.оказаться.непривычно,.но.эта.
абстракция.предоставляет.исключительно.широкие.возможности.создания.при- ложений.и.архитектур..Kafka.часто.сравнивают.с.несколькими.существующими.
типами.технологий:.корпоративными.системами.обмена.сообщениями,.большими.
информационными.системами.вроде.Hadoop,.утилитами.интеграции.данных.или.
ETL..Каждое.из.этих.сравнений.в.чем-то.обоснованно,.но.не.вполне.правомерно.
Kafka.напоминает.систему.обмена.сообщениями.тем,.что.обеспечивает.возмож- ность.публикации.и.подписки.на.потоки.сообщений..В.этом.она.похожа.на.такие.
продукты,.как.ActiveMQ,.RabbitMQ,.MQSeries.компании.IBM.и.др..Но.несмотря.
на.это.сходство,.у.Kafka.есть.несколько.существенных.различий.с.традиционными.
системами.обмена.сообщениями..Вот.три.основных:.во-первых,.Kafka.ведет.себя.
как.современная.распределенная.кластерная.система,.способная.масштабировать- ся.в.пределах,.достаточных.для.всех.приложений.даже.самой.крупной.компании..
Вместо.запуска.десятков.отдельных.брокеров.сообщений,.вручную.привязывае- мых.к.различным.приложениям,.Kafka.предоставляет.централизованную.платфор- му,.гибко.масштабирующуюся.под.обработку.всех.потоков.данных.компании..
Во-вторых,.Kafka.способна.хранить.данные.столько.времени,.сколько.нужно..
Это.дает.колоссальные.преимущества.при.ее.использовании.в.качестве.соедини- тельного.слоя,.а.благодаря.реальным.гарантиям.доставки.обеспечиваются.репли- кация,.целостность.и.хранение.данных.в.течение.любого.промежутка.времени..
В-третьих,.потоковая.обработка.весьма.существенно.повышает.уровень.абстракции..
Системы.обмена.сообщениями.чаще.всего.просто.передают.сообщения..Возмож- ности.потоковой.обработки.в.Kafka.позволяют.на.основе.потоков.данных.вычис- лять.производные.потоки.и.наборы.данных.динамически,.причем.при.гораздо.
меньшем.количестве.кода..Эти.отличия.ставят.Kafka.довольно.обособленно.
Kafka.можно.также.рассматривать.как.предназначенную.для.реального.времени.
версию.Hadoop,.и.это.была.одна.из.причин,.побудивших.нас.создать.ее..С.помо- щью.Hadoop.можно.хранить.и.периодически.обрабатывать.очень.большие.объемы.
файловых.данных..С.помощью.Kafka.также.можно.в.очень.больших.масштабах.
хранить.и.непрерывно.обрабатывать.потоки.данных..С.технической.точки.зрения.
определенное.сходство.между.ними,.безусловно,.есть,.и.многие.рассматривают.раз- вивающуюся.сферу.потоковой.обработки.как.надмножество.пакетной.обработки,.
подобной.той,.которая.выполняется.с.помощью.Hadoop.и.различных.его.слоев.
обработки..Делая.такое.сравнение,.упускают.из.виду.факт,.что.сценарии.исполь- зования,.возможные.при.непрерывной,.с.низким.значением.задержки.обработке,.
сильно.отличаются.от.естественных.сценариев.для.систем.пакетной.обработки..
В.то.время.как.Hadoop.и.большие.данные.ориентированы.на.аналитические.при- ложения,.зачастую.используемые.в.сфере.складирования.данных,.присущее.Kafka.
низкое.значение.задержки.делает.ее.подходящей.для.тех.базовых.приложений,.
которые.непосредственно.обеспечивают.функционирование.бизнеса..Это.вполне.

Предисловие 17
логично:.события.в.бизнесе.происходят.непрерывно,.и.возможность.сразу.же.ре- агировать.на.них.значительно.облегчает.построение.сервисов,.непосредственно.
обеспечивающих.работу.бизнеса,.а.также.возможность.дать.ответ.на.отзывы.поль- зователей.и.т..д.
Еще.одна.категория,.с.которой.сравнивают.Kafka,.—.ETL.и.утилиты.интеграции.
данных..Эти.утилиты.занимаются.перемещением.данных,.и.Kafka.делает.то.же.са- мое..Это.в.некоторой.степени.справедливо,.но.мне.кажется,.что.коренное.отличие.
состоит.в.том,.что.Kafka.перевернула.эту.задачу.вверх.ногами..Kafka.—.не.просто.
утилита.для.извлечения.данных.из.одной.системы.и.добавления.их.в.другую,.
а.платформа,.основанная.на.концепции.потоков.событий.в.режиме.реального.вре- мени..Это.значит,.что.она.может.не.только.стыковать.стандартные.приложения.
с.информационными.системами,.но.и.обеспечивать.функционирование.пользова- тельских.приложений,.создаваемых.для.порождения.этих.самых.потоков.данных..
Нам.представляется,.что.подобная.архитектура,.в.основу.которой.положены.потоки.
событий,.—.действительно.важная.вещь..В.некотором.смысле.эти.потоки.данных.—.
центральный.аспект.современной.«цифровой».компании,.ничуть.не.менее.важный,.
чем.отражаемые.в.финансовых.ведомостях.потоки.наличных.денег.
Именно.объединение.этих.трех.сфер.—.сведение.всех.потоков.данных.воедино.во.
всех.сценариях.использования.—.делает.идею.потоковой.платформы.столь.при- тягательной.
Однако.все.несколько.отличается.от.традиционного.представления,.и.создание.
приложений,.ориентированных.на.работу.с.непрерывными.потоками.данных,.тре- бует.существенной.смены.парадигмы.мышления.разработчиков,.пришедших.из.
вселенной.приложений.в.стиле.«запрос.—.ответ».и.реляционных.баз.данных..Эта.
книга.—.однозначно.лучший.способ.выучить.Kafka.от.внутреннего.устройства.до.
API,.написанная.теми,.кто.знаком.с.ней.лучше.всего..Я.надеюсь,.что.вы.насладитесь.
ее.чтением.не.меньше,.чем.я!
Джей Крепс, соучредитель и CEO
компании Confluent

Введение
Величайший.комплимент,.который.только.могут.сделать.автору.технической.кни- ги:.«Я.захотел,.чтобы.эта.книга.была.у.меня,.как.только.познакомился.с.описанной.
в.ней.темой»..Именно.с.такой.установкой.мы.и.начали.писать..Мы.вспомнили.
опыт,.полученный.при.разработке.Kafka,.запуске.ее.в.промышленную.эксплуа- тацию.и.поддержке.множества.компаний.при.создании.на.ее.основе.архитектур.
программного.обеспечения.и.управления.их.конвейерами.данных,.и.спросили.
себя:.«Чем.по-настоящему.полезным.мы.можем.поделиться.с.нашими.читателями,.
чтобы.сделать.из.новичков.экспертов?».Эта.книга.отражает.нашу.каждодневную.
работу:.мы.запускаем.Apache.Kafka.и.помогаем.людям.использовать.ее.наилуч- шим.образом.
Мы.включили.сюда.то,.что.считаем.необходимым.для.успешной.работы.Apache.
Kafka.при.промышленной.эксплуатации.и.создании.на.ее.основе.устойчивых.
к.ошибкам.высокопроизводительных.приложений..Уделили.особое.внимание.
популярным.сценариям.использования:.шине.сообщений.для.событийно.управ- ляемых.микросервисов,.приложениям,.обрабатывающим.потоки,.а.также.широ- комасштабным.конвейерам.данных..Мы.также.постарались.сделать.книгу.доста- точно.универсальной.и.всеобъемлющей,.чтобы.она.оказалась.полезной.всем,.кто.
применяет.Kafka,.вне.зависимости.от.сценария.использования.или.архитектуры..
Мы.охватили.в.ней.практические.вопросы,.например,.установку.и.конфигурацию.
Kafka,.применение.API.Kafka,.и.уделили.определенное.внимание.принципам.по- строения.платформы.и.гарантиям.ее.надежности..Рассмотрели.также.несколько.
потрясающих.нюансов.архитектуры.Kafka:.протокол.репликации,.контроллер.
и.слой.хранения..Полагаем,.что.знание.внутреннего.устройства.Kafka.—.не.только.
интересное.чтение.для.интересующихся.распределенными.системами..Оно.чрез- вычайно.полезно.для.принятия.взвешенных.решений.при.развертывании.Kafka.
в.промышленной.эксплуатации.и.проектировании.использующих.ее.приложений..
Чем.лучше.вы.понимаете,.как.работает.Kafka,.тем.более.обоснованно.можете.вы- брать.необходимые.при.программировании.компромиссы.
Одна.из.проблем.инженерии.разработки.ПО.—.наличие.нескольких.вариантов.ре- шения.одной.задачи..Такие.платформы,.как.Apache.Kafka,.обеспечивают.большую.
гибкость,.что.замечательно.для.специалистов,.но.усложняет.обучение.новичков..
Зачастую.Apache.Kafka.показывает,.как.использовать.ту.или.иную.возможность,.
но.не.почему.следует.или.не.следует.делать.это..Мы.старались.пояснять,.какие.

Введение 19
в.конкретном.случае.существуют.варианты,.каково.соотношение.выгод.и.потерь.
и.то,.когда.следует.и.не.следует.использовать.различные.возможности.Apache.
Kafka.
Для кого предназначена эта книга
«Apache.Kafka..Потоковая.обработка.и.анализ.данных».написана.для.разработ- чиков,.использующих.в.своей.работе.API.Kafka,.а.также.инженеров-технологов.
(именуемых.также.SRE,.DevOps.или.системными.администраторами),.занима- ющихся.установкой,.конфигурацией,.настройкой.и.мониторингом.ее.работы.при.
промышленной.эксплуатации..Мы.не.забывали.также.об.архитекторах.данных.
и.инженерах-аналитиках.—.тех,.кто.отвечает.за.проектирование.и.создание.всей.
инфраструктуры.данных.компании..Некоторые.главы,.в.частности.3,.4.и.11,.ори- ентированы.на.Java-разработчиков..Для.их.усвоения.важно,.чтобы.читатель.был.
знаком.с.основами.языка.программирования.Java,.включая.такие.вопросы,.как.
обработка.исключений.и.конкурентность..В.других.главах,.особенно.2,.8,.9.и.10,.
предполагается,.что.у.читателя.есть.опыт.работы.с.Linux.и.он.знаком.с.настройкой.
сети.и.хранилищ.данных.на.Linux..В.оставшейся.части.книги.Kafka.и.архитектуры.
программного.обеспечения.обсуждаются.в.более.общих.чертах,.поэтому.каких-то.
специальных.познаний.от.читателей.не.требуется.
Еще.одна.категория.людей,.которых.может.заинтересовать.данная.книга,.—.руко- водители.и.архитекторы,.работающие.не.непосредственно.с.Kafka,.а.с.теми,.кто.
работает.с.ней..Ничуть.не.менее.важно,.чтобы.они.понимали,.каковы.предоставля- емые.платформой.гарантии.и.в.чем.могут.заключаться.компромиссы,.на.которые.
придется.идти.их.подчиненным.и.сослуживцам.при.создании.основанных.на.Kafka.
систем..Эта.книга.будет.полезна.тем.руководителям,.которые.хотели.бы.обучить.
своих.сотрудников.работе.с.Kafka.или.убедиться,.что.команда.разработчиков.вла- деет.нужной.информацией.
Условные обозначения
В.данной.книге.используются.следующие.типографские.соглашения.
Курсив
Обозначает.новые.термины.
Рубленый шрифт
Им.набраны.URL,.адреса.электронной.почты.
Моноширинный шрифт
Используется.для.листингов.программ,.а.также.внутри.абзацев.—.для.ссылки.
на.элементы.программ,.такие.как.переменные.или.имена.функций,.переменные.
окружения,.операторы.и.ключевые.слова.

20 Введение
Полужирный моноширинный шрифт
Представляет.собой.команды.или.другой.текст,.который.должен.быть.в.точ- ности.набран.пользователем.
Моноширинный курсив
Отмечает.текст,.который.необходимо.заменить.пользовательскими.значениями.
или.значениями,.определяемыми.контекстом.
Данный рисунок означает совет или указание.
Этот рисунок означает общее примечание.
Данный рисунок указывает на предупреждение или предостережение.
Использование примеров кода
Эта.книга.создана.для.того,.чтобы.помочь.вам.в.работе..В.целом.приведенные.при- меры.кода.вы.можете.использовать.в.своих.программах.и.документации..Обращать- ся.к.нам.за.разрешением.нет.необходимости,.если.только.вы.не.копируете.значи- тельную.часть.кода..Например,.написание.программы,.использующей.несколько.
фрагментов.кода.из.этой.книги,.не.требует.отдельного.разрешения..Для.продажи.
или.распространения.компакт-диска.с.примерами.из.книг.O’Reilly,.конечно,.раз- решение.нужно..Ответ.на.вопрос.путем.цитирования.этой.книги,.в.том.числе.при- меров.кода,.не.требует.разрешения..Включение.значительного.количества.кода.
примеров.из.этой.книги.в.документацию.к.вашему.продукту.может.потребовать.
разрешения.
Мы.ценим,.хотя.и.не.требуем,.ссылки.на.первоисточник..Ссылка.на.первоисточник.
включает.название,.автора,.издательство.и.ISBN..Например:.«Нархид.Н.,.Шапира.Г.,.
Палино.Т..Apache.Kafka..Потоковая.обработка.и.анализ.данных..—.СПб.:.Питер,.
2018..—.ISBN.978-1-491-93616-0».
Если.вам.кажется,.что.заимствование.примеров.кода.выходит.за.рамки.правомер- ного.использования.или.данного.ранее.разрешения,.не.стесняясь,.связывайтесь.
с.нами.по.адресу:.
permissions@oreilly.com

Введение 21
Благодарности
Мы.хотели.бы.поблагодарить.множество.людей,.вложивших.свой.труд.в.Apache.
Kafka.и.ее.экосистему..Без.их.труда.этой.книги.не.существовало.бы..Особая.бла- годарность.Джею.Крепсу.(Jay.Kreps),.Ние.Нархид.(Neha.Narkhede).и.Чжану.Рао.
(Jun.Rao),.а.также.их.коллегам.и.руководству.в.компании.LinkedIn.за.участие.в.соз- дании.Kafka.и.передаче.его.в.фонд.программного.обеспечения.Apache.(Apache.
Software.Foundation).
Множество.людей.прислали.свои.замечания.по.черновикам.книги,.и.мы.ценим.их.
знания.и.затраченное.ими.время..Это.Апурва.Мехта.(Apurva.Mehta),.Арсений.
Ташоян.(Arseniy.Tashoyan),.Дилан.Скотт.(Dylan.Scott),.Ивен.Чеслак-Постава.
(Ewen.Cheslack-Postava),.Грант.Хенке.(Grant.Henke),.Ишмаэль.Джума.(Ismael.
Juma),.Джеймс.Чен.(James.Cheng),.Джейсон.Густафсон.(Jason.Gustafson),.Jeff.
Holoman.(Джеф.Холомен),.Джоэль.Коши.(Joel.Koshy),.Джонатан.Сейдмэн.
(Jonathan.Seidman),.Матиас.Сакс.(Matthias.Sax),.Майкл.Нолл.(Michael.Noll),.
Паоло.Кастанья.(Paolo.Castagna).и.Джесси.Андерсон.(Jesse.Anderson)..Мы.также.
хотели.бы.поблагодарить.множество.читателей,.оставивших.комментарии.и.отзывы.
на.сайте.обратной.связи.черновых.версий.книги.
Многие.из.рецензентов.очень.нам.помогли.и.значительно.повысили.качество.из- дания,.так.что.вина.за.все.оставшиеся.ошибки.лежит.исключительно.на.нас.
Мы.хотели.бы.поблагодарить.редактора.издательства.O’Reilly.Шеннон.Катт.
(Shannon.Cutt).за.терпение,.поддержку.и.гораздо.лучший.по.сравнению.с.нашим.
контроль.ситуации..Работа.с.издательством.O’Reilly.—.замечательный.опыт.для.
любого.автора:.предоставляемая.ими.поддержка,.начиная.с.утилит.и.заканчивая.
автограф-сессиями,.беспрецедентна..Мы.благодарны.всем,.кто.сделал.выпуск.этой.
книги.возможным,.и.ценим.то,.что.они.захотели.с.нами.работать.
И.мы.хотели.бы.поблагодарить.свое.руководство.и.коллег.за.помощь.и.содействие,.
которые.получили.при.написании.этой.книги.
Гвен.также.хотела.бы.поблагодарить.своего.супруга,.Омера.Шапира.(Omer.Shapira),.
за.терпение.и.поддержку.на.протяжении.многих.месяцев,.потраченных.на.написа- ние.еще.одной.книги,.а.также.кошек.Люка.и.Лею.за.то,.что.они.такие.милые,.и.отца,.
Лиора.Шапира,.за.то,.что.научил.ее.всегда.хвататься.за.возможности,.какими.бы.
пугающими.они.ни.были.
Тодд.ничего.не.сделал.бы.без.своей.жены.Марси.и.дочерей.Беллы.и.Кайли,.все.
время.ободрявших.его..Их.поддержка,.не.ослабевавшая.несмотря.на.то,.что.напи- сание.книги.потребовало.дополнительного.времени,.и.долгие.часы.пробежек.для.
освежения.головы.помогали.ему.работать.

1
Знакомьтесь: Kafka
Деятельность.любого.предприятия.питается.данными..Мы.получаем.информацию,.
анализируем.ее,.выполняем.над.ней.какие-либо.действия.и.создаем.новые.данные.
в.качестве.результатов..Все.приложения.создают.данные.—.журнальные.сообщения,.
показатели,.информацию.об.операциях.пользователей,.исходящие.сообщения.или.
что-то.еще..Каждый.байт.данных.что-нибудь.да.значит.—.что-нибудь,.определя- ющее.дальнейшие.действия..А.чтобы.понять,.что.именно,.нам.нужно.переместить.
данные.из.места.создания.туда,.где.их.можно.проанализировать..Это.мы.каждый.
день.наблюдаем.на.таких.сайтах,.как.Amazon,.где.щелчки.мышью.на.интересующих.
нас.товарах.превращаются.в.демонстрируемые.нам.же.чуть.позже.рекомендации.
От.скорости.этого.процесса.зависят.адаптивность.и.быстрота.реакции.нашего.пред- приятия..Чем.меньше.усилий.мы.тратим.на.перемещение.данных,.тем.больше.мо- жем.уделить.внимания.основной.деятельности..Именно.поэтому.конвейер.—.клю- чевой.компонент.в.ориентированном.на.работу.с.данными.предприятии..Способ.
перемещения.данных.оказывается.практически.столь.же.важен,.как.и.сами.данные.
Первопричиной всякого спора ученых является нехватка данных. Постепенно мы приходим к согласию относительно того, какие данные нужны, получаем эти дан- ные, и данные решают проблему. Или я оказываюсь прав, или вы, или мы оба оши- баемся. И можно двигаться дальше.
Нил Деграсс Тайсон
Обмен сообщениями по типу «публикация/подписка»
Прежде.чем.перейти.к.обсуждению.нюансов.Apache.Kafka,.важно.разобраться.
в.обмене.сообщениями.по.типу.«публикация/подписка».и.причине,.по.которой.
оно.столь.важно..Обмен сообщениями по типу «публикация/подписка».(publish/
subscribe.messaging).—.паттерн.проектирования,.отличающийся.тем,.что.отпра- витель.(издатель).элемента.данных.(сообщения).не.направляет.его.конкретному.
потребителю..Вместо.этого.он.каким-то.образом.классифицирует.сообщения,.

Обмен сообщениями по типу «публикация/подписка»
1   2   3   4   5   6   7   8   9   ...   39


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