Начните работу с Apache Flink, фреймворком с открытым исходным кодом, на котором основаны многие крупнейшие в мире системы обработки потоковых данных. В данной книге вы изучите фундаментальные понятия параллельной потоковой обработки и узнаете, чем эта технология отличается от традиционной пакетной обработки данных.
Ф. Уэске и В. Калаври, занятые в проекте Apache Flink с первых дней, покажут вам, как создавать масштабируемые потоковые приложения с помощью API Flink DataStream, а также непрерывно выполнять и поддерживать эти приложения в операционных средах.
Потоковая обработка идеально подходит для многих задач: подготовки данных с малой задержкой, потоковой аналитики и информационных панелей в реальном времени, раннего оповещения и обнаружения мошенничества. Вы можете обрабатывать потоковые данные любого типа, включая взаимодействия с пользователем, финансовые транзакции и данные интернета вещей, немедленно после получения.
Author(s): Фабиан Уэске, Василики Калаври
Edition: 1
Publisher: ДМК Пресс
Year: 2021
Language: Russian
Commentary: Vector PDF
Pages: 298
City: М.
Tags: Stream Processing; Apache Flink; High Availability; Application Development; DataStream
Переплет
Титульный лист
Предисловие
От издательства
Благодарности
Об авторах
Колофон
Глава 1. Введение в потоковую обработку с учетом состояния
1.1. Традиционные инфраструктуры данных
1.1.1. Транзакционная обработка
1.1.2. Аналитическая обработка
1.2. Обработка потоков с учетом состояния
1.2.1. Событийно-ориентированные приложения
1.2.2. Конвейеры данных
1.2.3. Потоковая аналитика
1.3. Эволюция потоковой обработки с открытым исходным кодом
1.3.1. Немного истории
1.4. Обзорное знакомство с Flink
1.4.1. Запуск вашего первого приложения Flink
1.5. Заключение
Глава 2. Основы потоковой обработки
2.1. Введение в потоковое программирование
2.1.1. Графы потока данных
2.1.2. Параллелизм данных и параллелизм задач
2.1.3. Стратегии обмена данными
2.2. Параллельная обработка потоков
2.2.1. Задержка и пропускная способность
2.2.2. Операции с потоками данных
2.3. Семантика времени
2.3.1. Что означает одна минута в потоковой обработке?
2.3.2. Время обработки
2.3.3. Время события
2.3.4. Водяные знаки
2.3.5. Время обработки по сравнению со временем события
2.4. Модели состояния и согласованности
2.4.1. Сбои заданий
2.4.2. Гарантии результата
2.5. Заключение
Глава 3. Архитектура Apache Flink
3.1. Архитектура системы
3.1.1. Компоненты набора Flink
3.1.2. Развертывание приложений
3.1.3. Выполнение задачи
3.1.4. Высокодоступная конфигурация
3.2. Передача данных во Flink
3.2.1. Кредитное управление потоком
3.2.2. Цепочка задач
3.3. Обработка на основе времени события
3.3.1. Метки времени
3.3.2. Водяные знаки
3.3.3. Распространение водяного знака и время события
3.3.4. Назначение метки времени и создание водяных знаков
3.4. Управление состоянием
3.4.1. Состояние оператора
3.4.2. Состояние с ключевым доступом
3.4.3. Бэкенд состояния
3.4.4. Масштабирование операторов с учетом состояния
3.5. Контрольные точки, точки сохранения и восстановление состояния
3.5.1. Согласованные контрольные точки
3.5.2. Восстановление из сохраняющей контрольной точки
3.5.3. Алгоритм создания контрольной точки Flink
3.5.4. Значение контрольных точек для производительности
3.5.5. Точки сохранения
3.6. Заключение
Глава 4. Настройка рабочей среды для Apache Flink
4.1. Необходимое ПО
4.2. Запуск и отладка приложений Flink в среде IDE
4.2.1. Импорт примеров книги в IDE
4.2.2. Запуск приложений Flink в среде IDE
4.2.3. Отладка приложений Flink в среде IDE
4.3. Развертывание проект Flink для сборщика Maven
4.4. Заключение
Глава 5. API DataStream (v1.7)
5.1. Hello, Flink!
5.1.1. Настройка среды выполнения
5.1.2. Чтение входного потока
5.1.3. Применение преобразований
5.1.4. Вывод результата
5.1.5. Выполнение
5.2. Преобразования
5.2.1. Основные преобразования
5.2.2. Преобразования KeyedStream
5.2.3. Многопоточные преобразования
5.2.4. Преобразования распределения
5.3. Настройка параллельной обработки
5.4. Типы
5.4.1. Поддерживаемые типы данных
5.4.2. Создание информации о типах для типов данных
5.4.3. Явное предоставление информации о типе
5.5. Определение ключей и полей ссылок
5.5.1. Позиции поля
5.5.2. Выражения поля
5.5.3. Ключевые селекторы
5.6. Реализация функций
5.6.1. Функциональные классы
5.6.2. Лямбда-функции
5.6.3. Расширенные функции
5.7. Добавление внешних и Flink-зависимостей
5.8. Заключение
Глава 6. Операторы на основе времени и оконные операторы
6.1. Настройка показателей времени
6.1.1. Назначение меток времени и создание водяных знаков
6.1.2. Водяные знаки, задержка и полнота
6.2. Функции процесса
6.2.1. TimerService и таймеры
6.2.2. Передача потоков на боковые выходы
6.2.3. CoProcessFunction
6.3. Оконные операторы
6.3.1. Определение оконных операторов
6.3.2. Встроенные средства назначения окон
6.3.3. Применение функций в окнах
6.3.4. Настройка оконных операторов
6.4. Объединение потоков по времени
6.4.1. Интервальное объединение
6.4.2. Оконное объединение
6.5. Обработка опоздавших данных
6.5.1. Отбрасывание опоздавших событий
6.5.2. Перенаправление опоздавших событий
6.5.3. Обновление результатов путем включения опоздавших событий
6.6. Заключение
Глава 7. Операторы и приложения с учетом состояния
7.1. Реализация функций с сохранением состояния
7.1.1. Объявление ключевого состояния в RuntimeContext
7.1.2. Реализация списочного состояния с помощью интерфейса ListCheckpointed
7.1.3. Использование широковещательного состояния
7.1.4. Использование интерфейса CheckpointedFunction
7.1.5. Получение уведомлений о пройденных контрольных точках
7.2. Включение восстановления после сбоя для приложений с учетом состояния
7.3. Обеспечение работоспособности приложений с учетом состояния
7.3.1. Указание уникальных идентификаторов оператора
7.3.2. Определение максимального параллелизма операторов ключевого состояния
7.4. Производительность и надежность приложений с учетом состояния
7.4.1. Выбор бэкенда состояния
7.4.2. Выбор примитива состояния
7.4.3. Предотвращение утечки состояния
7.5. Развитие приложений с учетом состояния
7.5.1. Обновление приложения без изменения существующего состояния
7.5.2. Удаление состояния из приложения
7.5.3. Изменение состояния оператора
7.6. Запрашиваемое состояние
7.6.1. Архитектура и обслуживание запросов состояния
7.6.2. Отображение состояния запроса
7.6.3. Запрос состояния из внешних приложений
7.7. Заключение
Глава 8. Чтение и запись при работе с внешними системами
8.1. Гарантии согласованности приложений
8.1.1. Идемпотентные записи
8.1.2. Транзакционные записи
8.2. Соединители Apache Flink
8.2.1. Соединитель источника Apache Kafka
8.2.2. Соединитель приемника Apache Kafka
8.2.3. Соединитель файлового источника
8.2.4. Соединитель файлового приемника
8.2.5. Соединитель приемника Apache Cassandra
8.3. Реализация пользовательской исходной функции
8.3.1. Сбрасываемые функции источника
8.3.2. Функции источника, метки времени и водяные знаки
8.4. Реализация пользовательской функции приемника
8.4.1. Идемпотентные соединители приемника
8.4.2. Соединители транзакционных приемников
8.5. Асинхронный доступ к внешним системам
8.6. Заключение
Глава 9. Настройка Flink для потоковых приложений
9.1. Режимы развертывания
9.1.1. Автономный кластер
9.1.2. Docker
9.1.3. Apache Hadoop YARN
9.1.4. Kubernetes
9.2. Режим высокой доступности
9.2.1. Высокая доступность в автономном режиме
9.2.2. Высокодоступная конфигурация YARN
9.2.3. Высокодоступная конфигурация Kubernetes
9.3. Интеграция с компонентами Hadoop
9.4. Конфигурация файловой системы
9.5. Конфигурация системы
9.5.1. Java и загрузка классов
9.5.2. Процессор
9.5.3. Основная память и сетевые буферы
9.5.4. Дисковое хранилище
9.5.5. Контрольные точки и бэкенды состояния
9.5.6. Безопасность
9.6. Заключение
Глава 10. Работа с Flink и потоковыми приложениями
10.1. Запуск и управление потоковыми приложениями
10.1.1. Точки сохранения
10.1.2. Управление приложениями с помощью клиента командной строки
10.1.3. Управление приложениями с помощью REST API
10.1.4. Объединение и развертывание приложений в контейнерах
10.2. Управление планированием задач
10.2.1. Управление цепочкой задач
10.2.2. Определение групп совместного использования слотов
10.3. Настройка контрольных точек и восстановления
10.3.1. Настройка контрольных точек
10.3.2. Настройка бэкендов состояния
10.3.3. Настройка восстановления
10.4. Мониторинг кластеров и приложений Flink
10.4.1. Веб-интерфейс Flink
10.4.2. Система метрик
10.4.3. Мониторинг задержки
10.5. Настройка журналирования
10.6. Заключение
Глава 11. Что дальше?
11.1. Остальная часть экосистемы Flink
11.1.1. API DataSet для пакетной обработки
11.1.2. Table API и SQL для реляционного анализа
11.1.3. FlinkCEP для обработки сложных событий и сопоставления с образцом
11.1.4. Gelly для обработки графов
11.2. Присоединяйтесь к сообществу Flink
Предметный указатель