Общие вопросы

Вопрос: Что такое Amazon Kinesis Data Analytics?
Amazon Kinesis Data Analytics предоставляет самый простой способ анализа потоковых данных, извлечения полезной аналитической информации и реагирования на потребности компании и клиентов в режиме реального времени. Сервис Amazon Kinesis Data Analytics упрощает создание приложений потоковой передачи данных, управление ими и интеграцию таких приложений с другими сервисами AWS. Используя встроенные шаблоны и операторы для стандартных функций обработки, которые позволяют упорядочивать, преобразовывать, объединять и анализировать данные в любом масштабе, можно быстро создавать SQL‑запросы и сложные приложения на Java.
 
Amazon Kinesis Data Analytics обеспечивает все необходимое для непрерывной работы приложений в режиме реального времени и выполняет автоматическое масштабирование в зависимости от объема и скорости поступления входных данных. При работе с Amazon Kinesis Data Analytics плата начисляется только за ресурсы, которые используются приложениями потоковой передачи данных. Плата за настройку и минимальные платежи отсутствуют.
 
Вопрос: Что представляет собой обработка потоков в режиме реального времени и где ее можно использовать?
Из‑за стремительного роста количества источников данных, генерирующих информацию в режиме реального времени, данные появляются с огромной скоростью. Это могут быть данные журналов из мобильных и интернет‑приложений, данные о покупках из интернет‑магазинов или показания датчиков устройств IoT. Все эти данные содержат информацию, которая способна помочь компаниям изучить поведение своих клиентов и узнать, что происходит в их организации или в отрасли в данный момент. Возможность анализировать такие данные по мере поступления позволяет контролировать свой бизнес в режиме реального времени и быстро использовать новые возможности для компании. Например, можно формировать рекламные предложения для клиентов на основе информации об их местоположении в определенное время или наблюдать за изменением их настроения и откликами в социальных сетях, чтобы выявлять и реализовывать новые возможности.
 
Для использования этих преимуществ требуется набор аналитических инструментов для сбора и анализа потоковых данных в режиме реального времени, отличный от традиционных инструментов для обработки хранимых статических данных. Традиционные методы аналитики предполагают, что пользователь собирает информацию, накапливает ее в базе данных и анализирует спустя несколько часов, дней или недель. Анализ данных в режиме реального времени требует другого подхода, других инструментов и других сервисов. Вместо выполнения запросов к сохраненным данным сервисы потокового анализа непрерывно обрабатывают данные еще до записи в хранилище. Потоковые данных поступают с невероятной скоростью, которая может постоянно меняться, увеличиваясь или уменьшаясь. Сервисы потокового анализа должны обрабатывать эти данные сразу при поступлении, зачастую со скоростью нескольких миллионов событий в час.
 
Вопрос: Для чего предназначен сервис Kinesis Data Analytics?
Сервис Kinesis Data Analytics Можно применять в различных примерах использования для непрерывной обработки данных и получения аналитической информации за считаные секунды или минуты, без ожидания длиной несколько дней или недель. Kinesis Data Analytics позволяет быстро создавать комплексные приложения потоковой обработки данных для анализа журналов или навигации по сайту, Интернета вещей (IoT), рекламных технологий, игр и многого другого. Три наиболее распространенных примера использования: извлечение, преобразование и загрузка потоковых данных (ETL), непрерывная генерация метрик и создание аналитических систем с быстрым откликом.
 
Извлечение, преобразование и загрузка потоковых данных (ETL)
Приложения извлечения, преобразования и загрузки потокового данных (ETL) позволяют в режиме реального времени очищать, обогащать, систематизировать и преобразовывать необработанные данные перед их загрузкой в озеро данных или хранилище данных, сокращая или устраняя этапы пакетной ETL‑обработки. Эти приложения могут объединять небольшие записи в файлы большего размера перед их доставкой и выполнять сложные операции объединения потоков и таблиц. Например, можно создать приложение, которое будет непрерывно считывать данные датчика IoT, сохраняемые в потоках данных Amazon Kinesis, упорядочивать эти данные по типу датчика, удалять дубликаты данных, приводить данные в соответствие с заданной схемой, а затем доставлять эти данные в Amazon S3.
 
Непрерывная генерация метрик
Приложения для непрерывной генерации метрик позволяют отслеживать и понимать тенденции изменения данных с течением времени. Такие приложения могут объединять потоковые данные в блоки критически важной информации и эффективно интегрировать ее с базами отчетных данных и сервисами мониторинга для обслуживания приложений и пользователей в режиме реального времени. Используя Kinesis Data Analytics, можно написать SQL‑запрос или код на Java, который будет непрерывно проводить анализ временных рядов за указанные интервалы времени. Например, можно создать обновляемую в режиме реального времени турнирную таблицу для мобильной игры, вычисляя лучших игроков каждую минуту, а затем отправляя эти данные в Amazon DynamoDB. Или можно отслеживать входящий трафик веб‑сайта, подсчитывая количество уникальных посетителей сайта каждые пять минут и отправляя обработанные результаты в Amazon RedShift.
 
Аналитические системы с быстрым откликом, работающие в режиме реального времени
Аналитические приложения с быстрым откликом, работающие в режиме реального времени, отправляют оповещения и предупреждения в режиме реального времени, когда определенные показатели достигают заданных пороговых значений или (в более сложных случаях) когда приложение обнаруживает некие аномалии с помощью алгоритмов машинного обучения. Такие приложения позволяют в режиме реального времени мгновенно реагировать на изменения в бизнесе, например прогнозировать отказ пользователя от мобильного приложения и выявлять системы, работа которых ухудшается. К примеру, приложение может вычислять доступность API или коэффициент успешного использования API клиентами с течением времени, а затем отправлять результаты в Amazon CloudWatch. Можно также создать другое приложение для поиска событий, отвечающих определенным критериям, а затем автоматически отправлять оповещения соответствующим клиентам с помощью Amazon Kinesis Data Streams и Amazon Simple Notification Service (SNS).
 
Вопрос: Как начать работу с Java‑приложениями для Kinesis Data Analytics?
Войдите в консоль Amazon Kinesis Data Analytics и создайте новое приложение потоковой обработки. Можно также использовать интерфейс командной строки AWS или наборы AWS SDK. После создания приложения перейдите в свою привычную интегрированную среду разработки, подключитесь к AWS и установите библиотеки Java с открытым исходным кодом. Библиотеки с открытым исходным кодом созданы на основе Apache Flink, платформы с открытым исходным кодом и сервиса обработки потоков данных, а также AWS SDK. Расширяемые библиотеки включают в себя более 25 предварительно созданных операторов потоковой обработки, таких как операторы оконного анализа и агрегаторы, а также интеграцию с сервисами AWS, например с Amazon Kinesis Data Streams и Amazon Kinesis Data Firehose. После создания кода его нужно загрузить в Amazon Kinesis Data Analytics, после чего сервис обеспечит все необходимое для непрерывной работы приложений в режиме реального времени, включая автоматическое масштабирование в зависимости от объема и скорости поступления входящих данных.
 
Вопрос: Как начать работу с SQL‑приложениями для Kinesis Data Analytics?
Войдите в консоль Amazon Kinesis Data Analytics и создайте новое приложение потоковой обработки. Можно также использовать интерфейс командной строки AWS или наборы AWS SDK. Комплексное приложение можно создать за три простых шага: 1) настроить входящие потоковые данные; 2) написать SQL-запросы; 3) указать, куда следует отправлять результаты. Kinesis Data Analytics распознает стандартные форматы данных, такие как JSON, CSV и TSV, и автоматически создает базовую схему. Эту схему можно изменить, а если ваши данные являются неструктурированными, можно определить новую схему, используя интуитивно понятный редактор схем. Затем сервис применит эту схему ко входящему потоку и преобразует его к виду SQL-таблицы, данные в которой постоянно обновляются, что позволит использовать стандартные SQL-запросы для обращения к ней. Для создания запросов пользователи используют наш SQL-редактор.
 
SQL-редактор поставляется со всеми дополнительными возможностями, включая проверку синтаксиса и тестирование на данных, которые поступают в режиме реального времени. Мы предоставляем шаблоны SQL-кода для решения всевозможных задач: от простого фильтра потоковых данных до продвинутого обнаружения аномалий и аналитики «top-K». Kinesis Data Analytics также предоставляет всю инфраструктуру, необходимую для обработки потока данных любой пропускной способности, и обеспечивает ее эластичное масштабирование. Пользователю не приходится заботиться о планировании и выделении инфраструктуры или брать на себя обязанности по управлению.
 
Вопрос: Какие лимиты действуют для Kinesis Data Analytics?
Kinesis Data Analytics эластично масштабирует приложение, чтобы его ресурсы соответствовали скорости поступления данных потока‑источника и уровню сложности запросов для большинства сценариев. Подробную информацию о лимитах сервиса см. в разделе Limits руководства по Kinesis Data Analytics для SQL‑разработчиков. Подробную информацию о лимитах сервиса для Java‑приложений см. в разделе Limits руководства по Kinesis Data Analytics для Java‑разработчиков.

Основные понятия

Вопрос: Что такое приложение Kinesis Data Analytics?
Приложением называется единица сервиса Kinesis Data Analytics, с которой ведется работа. Приложения Kinesis Data Analytics непрерывно считывают и обрабатывают потоковые данные в режиме реального времени. Используя язык SQL или Java, можно создать код приложения для обработки входящих потоковых данных и получения результатов. После этого сервис Kinesis Data Analytics будет записывать результаты обработки в указанный целевой объект.
 
Каждое приложение состоит из трех основных компонентов.
 
Входящие данные – источник потоковых данных для приложения. При настройке источника данных необходимо связать источник потоковых данных с одним или несколькими потоками данных внутри приложения. Данные поступают из одного или нескольких источников данных в потоки данных внутри приложения. Данные из этих потоков обрабатываются внутри приложения с помощью программного кода, а обработанные данные передаются в последующие потоки данных внутри приложения или в целевые объекты. Добавление входящих данных происходит в коде приложения для Java‑приложений и с помощью API для SQL‑приложений.
 
Код приложения – последовательность операторов Java или SQL, которые обрабатывают входящие данные и формируют исходящие данные. В простейшем виде код приложения может состоять из одного оператора Java или SQL, который считывает данные из потока данных внутри приложения, связанного с источником потоковой передачи, и записывает в поток данных внутри приложения, связанный с исходящими данными. Можно написать код на Java или SQL, который будет разделять исходный поток данных внутри приложения на несколько потоков и применять к этим отдельным потокам дополнительные алгоритмы.
 
Исходящие данные. Внутри приложения можно создать один или несколько потоков данных для хранения промежуточных результатов. После этого можно дополнительно настроить сохранение результатов обработки отдельного потока на внешнем целевом объекте. Добавление исходящих данных происходит в коде приложения для Java‑приложений и с помощью API для SQL‑приложений.
 
Вопрос: Что такое поток данных внутри приложения?
Поток данных внутри приложения – это сущность, которая непрерывно сохраняет данные в приложении для выполнения последующей обработки. Приложения непрерывно считывают данные из потоков данных внутри приложения и выполняют запись в них. В Java‑приложениях взаимодействие с потоком происходит внутри приложения, данные обрабатываются с помощью операторов потока. Операторы преобразуют один или несколько потоков данных в новый поток данных. В SQL‑приложениях взаимодействие с потоком внутри приложения происходит так же, как и с SQL‑таблицей, с помощью операторы SQL. Операторы SQL применяются к одному или нескольким потокам данных, а результаты попадают в новый поток данных.
 
Вопрос: Какой код приложений поддерживает сервис?
Для Java‑приложений сервис Kinesis Data Analytics поддерживает Java‑приложения, созданные с использованием Apache Flink и пакетов AWS SDK. Для SQL‑приложений сервис Kinesis Data Analytics поддерживает SQL стандарта ANSI с некоторыми расширениями стандартного языка SQL, которые упрощают работу с потоковыми данными.

Управление приложениями

Вопрос: Как отслеживать выполнение операций и производительность приложений Kinesis Data Analytics?
AWS предоставляет различные инструменты, которые можно использовать для мониторинга работы приложений Kinesis Data Analytics. Некоторые из этих инструментов можно настроить так, чтобы они осуществляли мониторинг автоматически. Подробнее о мониторинге приложений см. в следующих источниках:
 
Вопрос: Как управлять доступом к приложениям Kinesis Data Analytics и контролировать его?
Сервису Kinesis Data Analytics требуются разрешения на чтение записей из источников потоковых данных, которые определены для приложения. Кроме того, сервису Kinesis Data Analytics необходимы разрешения на запись исходящих данных приложения в целевые объекты, которые указаны в настройках исходящих данных приложения. Эти разрешения предоставляются путем создания ролей IAM, которые может принять сервис Kinesis Data Analytics. Разрешения, которые предоставлены для конкретной роли, определяют, что именно сервис Kinesis Data Analytics может делать, когда он принимает эту роль. Подробнее см. в следующих источниках:
  • раздел Granting Permissions руководства по Amazon Kinesis Data Analytics для Java‑разработчиков;
  • раздел Granting Permissions руководства по Amazon Kinesis Data Analytics для SQL‑разработчиков.
 
Вопрос: Как Kinesis Data Analytics масштабирует приложение?
Kinesis Data Analytics эластично масштабирует приложение, чтобы оно соответствовало скорости передачи данных потока‑источника и уровню сложности запросов для большинства сценариев. Сервис Kinesis Data Analytics выделяет ресурсы в виде блоков обработки Amazon Kinesis (KPU). Один KPU предоставляет 1 виртуальный ЦПУ и 4 ГБ памяти.
 
Для Java‑приложений сервис Kinesis Data Analytics выделяет 50 ГБ хранилища на каждый KPU работающего приложения. Это хранилище используется приложением для создания контрольных точек, при этом доступ к нему можно получить с помощью временного диска. Контрольная точка представляет собой актуальную резервную копию работающего приложения, которая используется для немедленного восстановления в случае сбоя приложения. Контролировать параллельное выполнение задач приложения Kinesis Data Analytics для Java (таких как чтение из источника данных или выполнение оператора) также можно с помощью параметров Parallelism и ParallelismPerKPU в API. Параметр Parallelism определяет число одновременно работающих инстансов задачи. У всех работающих операторов, источников и получателей данных параметр Parallelism по умолчанию имеет значение 1. Параметр ParallelismPerKPU определяет число параллельных задач, которые могут быть запланированы для каждого блока обработки Kinesis (KPU) того или иного приложения; значение по умолчанию равно 1. Дополнительные сведения см. в разделе Scaling руководства по Amazon Kinesis Data Analytics для Java‑разработчиков.
 
Для SQL‑приложений каждый источник потоковых данных связывается с соответствующим потоком внутри приложения. Хотя это и не является обязательным для большинства клиентов, более эффективно использовать KPU можно за счет увеличения количества подпотоков внутри приложения, которым сопоставляется источник, путем указания параметра, называемого входным параллелизмом. Сервис Kinesis Data Analytics равномерно распределяет разделы источника потоковых данных, то есть сегменты потока данных Amazon Kinesis, в соответствии с указанным числом подпотоков внутри приложения. Например, если используется поток данных Amazon Kinesis из 10 сегментов в качестве источника потоковых данных и для входного параллелизма указано значение 2, сервис Kinesis Data Analytics присвоит по пять сегментов Amazon Kinesis двум подпотокам внутри приложения с названиями «SOURCE_SQL_STREAM_001» и «SOURCE_SQL_STREAM_002». Дополнительную информацию см. в разделе Configuring Application Input руководства по Amazon Kinesis Data Analytics для SQL‑разработчиков.
 
Вопрос: Какие существуют рекомендации по созданию приложений Kinesis Data Analytics и управлению ими?
Информацию о рекомендациях для SQL см. в разделе Best Practices руководства по Amazon Kinesis Data Analytics для SQL‑разработчиков. Данный раздел охватывает вопросы управления приложениями, определения схемы входящих данных, подключения к исходящим данным, а также создания кода приложения.

Цены и оплата

Вопрос: Сколько стоит использование Kinesis Data Analytics?
При работе с Amazon Kinesis Data Analytics вы платите только за то, что реально используете. При использовании Amazon Kinesis Data Analytics не требуется выделять ресурсы или вносить авансовые платежи.
 
Оплата начисляется на почасовой основе, исходя из числа блоков обработки Amazon Kinesis (KPU), использованных при работе приложения потоковой передачи. KPU представляет собой единицу ресурса потоковой обработки, которая включает 1 виртуальный ЦПУ и 4 ГБ оперативной памяти. Amazon Kinesis Data Analytics автоматически масштабирует количество KPU, необходимых приложению для обработки потока данных, по мере того как требования к памяти и вычислительной мощности изменяются в зависимости от сложности обработки и пропускной способности обрабатываемых потоковых данных.
 
Для Java‑приложений взимается плата за один дополнительный KPU на каждое приложение; этот KPU используется для оркестрации приложения. При использовании Java‑приложений также взимается плата за хранилище работающего приложения и за постоянные резервные копии приложения. Хранилище работающего приложения обеспечивает возможность обработки данных в Amazon Kinesis Data Analytics с фиксацией состояния и оплачивается по количеству гигабайтов в месяц. Создание постоянных резервных копий предоставляется в качестве дополнительной возможности и позволяет выполнять для приложений восстановление на момент времени. Данная возможность оплачивается по количеству гигабайтов в месяц.
 
Дополнительную информацию о ценах см. на странице цен на Amazon Kinesis Data Analytics.
 
Вопрос: Доступен ли сервис Kinesis Data Analytics на уровне бесплатного пользования AWS?
Нет. В настоящее время сервис Kinesis Data Analytics недоступен на уровне бесплатного пользования AWS. Уровень бесплатного пользования AWS – это программа, в рамках которой предлагается бесплатно воспользоваться пробной версией ряда сервисов AWS.
 
Вопрос: Будет ли взиматься плата за приложение Kinesis Data Analytics, которое запущено, но не обрабатывает какие‑либо данные из источника?
Когда приложение Kinesis Data Analytics работает, для SQL‑приложений плата начисляется минимум за один KPU. Для работающих Java‑приложений в Kinesis Data Analytics плата начисляется минимум за два KPU и 50 ГБ хранилища приложений.
 
Вопрос: Какие другие расходы, помимо непосредственной платы за сервис, может повлечь использование Kinesis Data Analytics?
Kinesis Data Analytics – это полностью управляемое решение потоковой обработки данных, которое не зависит от источников потоковых данных, откуда оно считывает данные, и целевых объектов, куда оно записывает обработанные данные. Отдельная плата будет начисляться за сервисы, из которых приложение считывает данные и в которые оно записывает данные.

Разработка Java‑приложений

Создание кода Java‑приложений

Вопрос: Что такое Apache Flink?
Apache Flink – это платформа с открытым исходным кодом и сервис потоковой и пакетной обработки данных. Она упрощает создание приложений потоковой передачи, поскольку предоставляет мощные операторы и очень хорошо решает основные проблемы потоковой передачи, такие как обработка дубликатов. Apache Flink обеспечивает распределение данных, обмен данными и отказоустойчивость для выполнения распределенных вычислений над потокам данных.
 
Вопрос: Как начать разрабатывать приложения?
Начать можно с загрузки библиотек с открытым исходным кодом, которые включают в себя AWS SDK, Apache Flink и коннекторы для сервисов AWS. Инструкции по загрузке библиотек и созданию своего первого приложения см. в руководстве для разработчиков по Kinesis Data Analytics для Java.
 
Вопрос: Как выглядит код приложения?
В программном коде Java используются потоки данных и операторы потоков. Потоки данных приложения – это структура данных, обработка которых выполняется с помощью кода на Java. Данные непрерывно поступают из источников в потоки данных приложения. Для определения процедуры обработки потоков данных приложения, включающей преобразование, разделение, объединение, присоединение и определение интервала, используется один или несколько операторов потока. Потоки данных и операторы могут быть объединены в последовательные и параллельные цепочки. Небольшой пример использования псевдокода показан ниже.
DataStream <GameEvent> rawEvents = env.addSource(
	New KinesisStreamSource(“input_events”));
DataStream <UserPerLevel> gameStream =
	rawEvents.map(event - > new UserPerLevel(event.gameMetadata.gameId, 
			event.gameMetadata.levelId,event.userId));
gameStream.keyBy(event -> event.gameId)
            .keyBy(1)
            .window(TumblingProcessingTimeWindows.of(Time.minutes(1)))
            .apply(...) - > {...};
gameStream.addSink(new KinesisStreamSink("myGameStateStream"));
Вопрос: Как использовать операторы?
Операторы принимают поток данных приложения в качестве входных данных и отправляют обработанные данные в поток данных приложения в качестве выходных данных. Операторы можно объединять для создания приложений с несколькими этапами обработки, при этом для их внедрения и работы не требуются глубокие знания распределенных систем.
 
Вопрос: Какие операторы поддерживаются?
Kinesis Data Analytics для Java включает в себя более 25 операторов из Apache Flink, включая Map, KeyBy, Aggregations, Window Join и Window, которые можно применять для решения задач в разнообразных примерах использования. Оператор Map позволяет выполнять произвольную обработку, беря один элемент из входящего потока данных и создавая другой элемент. Оператор KeyBy логически упорядочивает данные, используя заданный ключ, позволяющий обрабатывать одинаковые точки данных вместе. Оператор Aggregations выполняет обработку по нескольким ключам, таким как сумма, мин. и макс. Оператор Window Join объединяет два потока данных по заданному ключу и интервалу. Оператор Window группирует данные, используя ключ и, как правило, операции с ограничением по времени, например подсчет количества уникальных элементов за 5‑минутный период времени.
 
Если этих операторов недостаточно для приложения, можно создать собственные операторы. Другие примеры можно найти в разделе «Operators» руководства по Amazon Kinesis Data Analytics для Java‑разработчиков. Полный список операторов Apache Flink можно найти в разделе Operators документации Apache Flink.
 
Вопрос: Интеграция с какими сервисами и системами поддерживается в Java‑приложениях сервиса Kinesis Data Analytics?
Интеграцию можно настроить с минимальным объемом кода. Библиотеки с открытым исходным кодом на основе Apache Flink поддерживают потоковые источники и целевые объекты (потребители) для доставки обработанных данных. Это также подразумевает поддержку дополнения данных через асинхронные коннекторы ввода/вывода. Список коннекторов AWS, включенных в библиотеки с открытым исходным кодом, приведен ниже.
  • Источники потоковых данных: Amazon Kinesis Data Streams.
  • Целевые объекты или получатели данных: Amazon Kinesis Data Streams, Amazon Kinesis Data Firehose, Amazon DynamoDB и Amazon S3 (посредством интеграции итоговых данных в файлы).
 
Apache Flink также включает другие коннекторы, в том числе для Apache Kafka, Apache Cassandra, Elasticsearch и других систем.
 
Вопрос: Поддерживается ли возможность настраиваемой интеграции?
Добавить источник или целевой объект в свое приложение можно с помощью набора примитивов, которые позволяют осуществлять чтение из файлов, каталогов, сокетов и прочих источников, к которым можно получить доступ через Интернет, а также запись в них. Apache Flink предоставляет такие примитивы для источников данных и получателей данных. Примитивы поставляются с конфигурациями, которые позволяют осуществлять непрерывное или однократное чтение и запись данных в асинхронном или синхронном режиме, а также многое другое. Например, можно настроить приложение для непрерывного чтения данных из Amazon S3, расширив существующую интеграцию с источником на основе файлов.
 
Вопрос: Какую модель доставки обеспечивает сервис Kinesis Data Analytics для Java‑приложений?
Java‑приложения в Kinesis Data Analytics используют модель доставки «строго однократно», если приложение построено с использованием идемпотентных операторов, включая операторы источников и получателей. Это означает, что обработанные данные окажут влияние на последующие результаты один и только один раз. Контрольные точки сохраняют текущее состояние приложения и позволяют приложениям Kinesis Data Analytics для Java восстанавливать работу с прерванного места для обеспечения той же семантики, что и при бесперебойном выполнении. Контрольные точки для Java‑приложений предоставляются с использованием функциональных возможностей создания контрольных точек Apache Flink. По умолчанию для Java‑приложений сервис Kinesis Data Analytics использует семантику Apache Flink. Приложение будет поддерживать семантику обработки «строго однократно», если это приложение создано с использованием источников, операторов и получателей данных, использующих семантику Apache Flink «строго однократно».
 
Вопрос: Можно ли получить доступ к локальному хранилищу из хранилища приложения?
Да. Kinesis Data Analytics предоставляет для работающих Java‑приложений 50 ГБ хранилища на каждый блок обработки Kinesis (KPU). Хранилище в Kinesis Data Analytics масштабируется вместе с приложением. Хранилище работающего приложения используется для сохранения состояния приложения с помощью контрольных точек. Оно также доступно для использования кодом приложения в качестве временного диска для кэширования данных или для любых других целей. Kinesis Data Analytics может в любое время удалить из хранилища работающего приложения данные, которые не были сохранены с помощью контрольных точек (например, операторы, источники, получатели данных). Все данные, хранящиеся в хранилище работающих приложений, шифруются при хранении.
 
Вопрос: Как Kinesis Data Analytics для Java автоматически создает резервные копии моего приложения?
Kinesis Data Analytics автоматически создает резервную копию состояния работающего приложения с помощью контрольных точек и снимков состояния. Контрольные точки сохраняют текущее состояние приложения и позволяют приложениям Kinesis Data Analytics для Java восстанавливать работу с прерванного места для обеспечения той же семантики, что и при бесперебойном выполнении. Контрольные точки используют хранилище работающего приложения. Снимки состояния сохраняют точку восстановления, позволяющую выполнять для приложений восстановление на момент времени. Снимки состояния используют постоянные резервные копии приложения.
 
Вопрос: Что такое снимки состояния приложения?
Снимки состояния позволяют создавать точку восстановления и восстанавливать приложение на момент времени в прошлом. Это позволяет сохранять предыдущее состояние приложения и выполнять откат приложения к этому состоянию в любое время. Сервис позволяет настроить, сколько снимков состояния (от нуля до тысяч штук) требуется хранить в любой конкретный момент времени. Для снимков состояния используются постоянные резервные копии приложения, при этом Kinesis Data Analytics взимает плату в зависимости от их размера. Kinesis Data Analytics по умолчанию шифрует данные, сохраненные в снимках состояния. Можно удалить отдельные снимки состояния с помощью API или все снимки состояния, удалив приложение.
 
Вопрос: Какие версии Apache Flink поддерживаются?
Amazon Kinesis Data Analytics для Java‑приложений поддерживает Apache Flink 1.6 и Java версии 8.

Разработка SQL‑приложений

Настройка входных данных для SQL‑приложений

Вопрос: Какие источники входных данных поддерживаются в SQL‑приложениях Kinesis Data Analytics?
SQL‑приложения в Kinesis Data Analytics поддерживают два типа источников входных данных: источники потоковых данных и источники ссылочных данных. Источник потоковых данных непрерывно генерирует данные, которые поступают в приложение для обработки. Источник ссылочных данных предоставляет статичные данные, которые используются приложением в качестве дополнения к данным, поступающим из источников потоковых данных. В каждом приложении можно использовать не более одного источника потоковых данных и не более одного источника ссылочных данных. Приложение непрерывно считывает и обрабатывает новые данные из источников потоковых данных, включая Amazon Kinesis Data Streams и Amazon Kinesis Data Firehose. Приложение считывает данные из источника ссылочных данных, включая Amazon S3, в полном объеме для дополнения данных из источника потоковых данных с помощью SQL-оператора JOIN.
 
Вопрос: Что такое источник ссылочных данных?
Источник ссылочных данных предоставляет статичные данные, которые используются приложением в качестве дополнения к данным, поступающим из источников потоковых данных. Ссылочные данные хранятся в виде объектов в корзине S3. При запуске SQL‑приложения Kinesis Data Analytics считывает объект S3 и создает внутри приложения SQL‑таблицу для хранения ссылочных данных. После этого код приложения может объединить ее с потоком внутри приложения. Обновить данные в этой таблице SQL можно с помощью вызова UpdateApplication API.
 
Вопрос: Как настроить источник потоковых данных в SQL‑приложении?
Источником потоковых данных может быть поток данных Amazon Kinesis или поток доставки Amazon Kinesis Data Firehose. SQL‑приложение Kinesis Data Analytics в режиме реального времени непрерывно считывает новые данные из источников потоковых данных по мере их поступления. Доступ к данным в коде SQL обеспечивается через потоки данных внутри приложения. Поток данных в приложении функционирует как таблица SQL, поскольку данные можно создавать, вставлять в поток и выбирать из него. Разница состоит в том, что данные в потоке внутри приложения постоянно дополняются новыми из источника потоковых данных.
 
Для добавления источника потоковых данных можно использовать Консоль управления AWS. Дополнительную информацию об источниках см. в разделе Configuring Application Input руководства по Kinesis Data Analytics для SQL‑разработчиков.
 
Вопрос: Как настроить источник ссылочных данных в SQL‑приложении?
Источником ссылочных данных может быть объект Amazon S3. При запуске SQL‑приложение Kinesis Data Analytics целиком считывает данные объекта S3. Доступ к данным в коде SQL обеспечивается через таблицу. Наиболее распространенный способ использования источника ссылочных данных – дополнение данных, поступающих из источника потоковых данных, с помощью команды SQL JOIN.
 
С помощью интерфейса командной строки AWS можно добавить источник ссылочных данных, указав корзину S3, объект, роль IAM и связанную схему. Kinesis Data Analytics загружает эти данные при запуске приложения и повторно загружает их при каждом вызове API Update.
 
Вопрос: Какие форматы данных поддерживаются для SQL‑приложений?
SQL‑приложения в Kinesis Data Analytics могут определять схему и автоматически анализировать записи JSON и CSV, использующие кодировку UTF‑8, с помощью API DiscoverInputSchema. Эта схема применяется для данных, считанных из потока для последующей вставки в поток внутри приложения.
 
Для других данных, использующих кодировку UTF‑8 и не использующих разделитель, применяется разделитель, отличный от такового в CSV. Если с помощью API определения схему не удалось определить полностью, можно сделать это с помощью интерактивного редактора схемы или воспользоваться возможностями работы со строками для структурирования данных. Дополнительную информацию см. в разделе Using the Schema Discovery Feature and Related Editing руководства по Amazon Kinesis Data Analytics для SQL‑разработчиков.
 
Вопрос: Как обеспечивается доступ SQL‑кода к входящему потоку данных?
Kinesis Data Analytics для SQL применяет указанную схему и передает данные в один или несколько потоков внутри приложения для источников потоковых данных, а также в одну таблицу SQL для источников ссылочных данных. По умолчанию количество потоков в приложении равно одному, что в большинстве случаев отвечает потребностям пользователей. Если приложение не успевает обрабатывать данные из источника потока, как это определено в метрике MillisBehindLatest сервиса CloudWatch, это значение следует увеличить. Необходимое число подпотоков в приложении определяется как производительностью источника потока, так и сложностью запросов. Параметр, используемый для указания количества подпотоков в приложении, которые сопоставляются с источником потоковых данных, называется входным параллелизмом.

Создание кода SQL‑приложений

Вопрос: Как выглядит код SQL‑приложения?
Код приложения – последовательность операторов языка SQL, которые обрабатывают входящие и формируют исходящие данные. Эти операторы SQL работают с потоками внутри приложения и таблицами ссылочных данных. Поток данных внутри приложения напоминает постоянно обновляемые таблицы, для которых можно выполнять SQL-операции SELECT и INSERT. Доступ к целевым объектам из кода SQL и сконфигурированным источникам данных обеспечивается с помощью потоков внутри приложения. Можно также создавать дополнительные подпотоки внутри приложения для сохранения промежуточных результатов запроса.
 
Для работы с потоками внутри приложения можно использовать следующий шаблон.
  • Всегда используйте оператор SELECT в контексте оператора INSERT. При выборе строки вставляйте результаты в другой поток внутри приложения.
  • Используйте оператор INSERT в контексте «закачки» данных. «Закачка» данных используется, чтобы сделать непрерывными работу оператора INSERT и запись данных в поток внутри приложения.
  • «Закачка» данных применяется, когда нужно связать подпотоки внутри приложения, выбирая данные из одного подпотока внутри приложения и вставляя в другой.
 
Приведенный ниже SQL‑код обеспечивает работу простого приложения.
CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" (
    ticker_symbol VARCHAR(4),
    change DOUBLE,
    price DOUBLE);

CREATE OR REPLACE PUMP "STREAM_PUMP" AS 
  INSERT INTO "DESTINATION_SQL_STREAM"    
    SELECT STREAM ticker_symbol, change, price    
    FROM "SOURCE_SQL_STREAM_001";
Дополнительную информацию см. в разделе Application Code руководства по Amazon Kinesis Data Analytics для SQL‑разработчиков.
 
Вопрос: Какую помощь в написании SQL‑кода предлагает Kinesis Data Analytics?
В Kinesis Data Analytics входит библиотека аналитических шаблонов для стандартных вариантов использования, включающих фильтры потоковых данных, обработку временных интервалов и обнаружение аномалий. Эти шаблоны доступны в редакторе SQL в Консоли управления AWS. После создания приложения и перехода к редактору SQL шаблоны будут доступны в верхнем левом углу консоли.
 
Вопрос: Как в Kinesis Data Analytics выполнить обнаружение аномалий в режиме реального времени?
Kinesis Data Analytics содержит встроенные SQL‑функции для нескольких продвинутых аналитических методов, в том числе для обнаружения аномалий. Для обнаружения аномалий в режиме реального времени нужно просто включить вызов этой функции в свой SQL‑код. Для реализации обнаружения аномалий Kinesis Data Analytics использует алгоритм Random Cut Forest. Дополнительная информация по алгоритмам Random Cut Forest приведена в техническом описании «Обнаружение аномалий в потоковых данных».

Настройка целевых объектов в SQL‑приложениях

Вопрос: Какие целевые объекты поддерживает сервис?
Kinesis Data Analytics для SQL поддерживает до четырех целевых объектов на каждое приложение. Сохранять результаты SQL‑запросов можно в Amazon S3, Amazon RedShift, Amazon Elasticsearch Service (через Amazon Kinesis Data Firehose) и Amazon Kinesis Data Streams. Можно записывать данные в целевой объект, не поддерживаемый непосредственно Kinesis Data Analytics, передавая результаты SQL‑запросов в Amazon Kinesis Data Streams и используя его интеграцию с AWS Lambda для отправки данных в выбранный целевой объект.
 
Вопрос: Как настроить целевой объект?
В коде приложения нужно указать вывод результатов операторов SQL в один или несколько потоков внутри приложения. Можно добавить в приложение дополнительную конфигурацию вывода данных, которая позволит сохранять все данные, записанные в потоки приложения, не более чем в четыре внешних целевых объекта. Этими внешними целевыми объектами могут быть корзина Amazon S3, таблица Amazon RedShift, домен Amazon Elasticsearch Service (через Amazon Kinesis Data Firehose) и поток данных Amazon Kinesis. Каждое приложение может поддерживать до четырех целевых объектов, при этом можно использовать любое сочетание перечисленных вариантов. Дополнительную информацию см. в разделе Configuring Output Streams руководства по Amazon Kinesis Data Analytics для SQL‑разработчиков.
 
Вопрос: Мой целевой объект напрямую не поддерживается. Как я могу отправить в него результаты SQL-запросов?
Для записи данных в целевой объект, который не поддерживается напрямую, можно использовать сервис AWS Lambda. Мы рекомендуем записывать результаты в поток данных Amazon Kinesis, а затем использовать AWS Lambda для чтения результатов обработки и отправки их в выбранный целевой объект. Дополнительную информацию см. в разделе Example: AWS Lambda Integration руководства по Amazon Kinesis Data Analytics для SQL‑разработчиков. В качестве альтернативы можно использовать поток доставки Kinesis Data Firehose для загрузки данных в Amazon S3, а затем вызвать функцию AWS Lambda для чтения и отправки этих данных в выбранный целевой объект. Дополнительную информацию см. в разделе Using AWS Lambda with Amazon S3 руководства для разработчиков по AWS Lambda.
 
Вопрос: Какую модель доставки обеспечивает сервис Kinesis Data Analytics?
SQL‑приложения в Kinesis Data Analytics для вывода данных приложения в настроенные целевые объекты используют модель доставки «не менее одного раза». Приложения Kinesis Data Analytics используют внутренние контрольные точки, являющиеся моментами времени, когда исходящие записи были доставлены в целевые объекты и при этом потери данных отсутствовали. Сервис использует контрольные точки по мере необходимости, чтобы убедиться, что исходящие данные приложения доставлены в определенные целевые объекты не менее одного раза. Дополнительную информацию о модели доставки см. в разделе Configuring Application Output руководства по Amazon Kinesis Data Analytics для SQL‑разработчиков.

Сравнение с другими решениями для обработки потоковых данных

Вопрос: Чем использование Amazon Kinesis Data Analytics отличается от запуска собственного приложения с помощью клиентской библиотеки Amazon Kinesis?
Клиентская библиотека Amazon Kinesis (KCL) – это встроенная библиотека, позволяющая создавать пользовательские приложения для считывания и обработки данных из потока данных Amazon Kinesis. Она берет на себя такие сложные задачи, как адаптация к изменениям объема потока данных, балансировка нагрузки потоковых данных, координация распределенных сервисов и отказоустойчивая обработка данных. KCL позволяет разработчику сосредоточить внимание на бизнес‑логике создаваемого приложения.
 
С помощью Kinesis Data Analytics можно обрабатывать потоковые данные в режиме реального времени и выполнять запросы к ним. Amazon Kinesis Analytics позволяет использовать стандартный язык SQL для обработки потоков данных без необходимости изучать новые языки программирования. Просто укажите Kinesis Data Analytics на входящий поток данных, напишите SQL‑запросы и уточните, куда следует записать результаты обработки. Сервис Kinesis Data Analytics использует библиотеку KCL для чтения данных из источников потоковых данных в качестве одной из составляющих основного приложения. Он позволяет абстрагироваться от этого, а также от многих других, более сложных понятий, связанных с использованием библиотеки KCL, таких как применение контрольных точек.
 
Когда требуется полностью управляемое решение и возможность использовать SQL для обработки данных из потока, следует выбрать Kinesis Data Analytics. Библиотеку KCL стоит использовать, когда требуется создать специализированное решение для обработки данных, требования к которому не соответствуют настройкам Kinesis Data Analytics, и при этом есть возможность самостоятельно управлять созданным пользовательским приложением.

Соглашение об уровне обслуживания

Вопрос: Что гарантирует соглашение об уровне обслуживания Amazon Kinesis Data Analytics?

Соглашение об уровне обслуживания (SLA) Amazon Kinesis Data Analytics гарантирует бесперебойную ежемесячную работу сервиса Amazon Kinesis Data Analytics на уровне не менее 99,9 %.

Вопрос: Как узнать, могу ли я претендовать на компенсацию по соглашению об уровне обслуживания?

Компенсация по соглашению об уровне обслуживания Amazon Kinesis Data Analytics по условиям нашего соглашения об уровне обслуживания в отношении Amazon Kinesis Data Analytics предоставляется, если бесперебойная ежемесячная работа сервиса в рамках одного региона в нескольких зонах доступности, в которых запущено задание, составила менее 99,9 % в течение любого оплачиваемого месяца.

С условиями и положениями соглашения об уровне обслуживания, а также подробностями оформления заявки на компенсацию можно ознакомиться на странице сведений об SLA в отношении Amazon Kinesis.

Начать работу с Amazon Kinesis Data Analytics

Product-Page_Standard-Icons_01_Product-Features_SqInk
Расчет стоимости

Перейти на страницу цен

Подробнее 
Product-Page_Standard-Icons_01_Product-Features_SqInk
Ознакомиться с руководством по началу работы

Данное пошаговое руководство поможет понять, как использовать Amazon Kinesis Data Analytics.

Product-Page_Standard-Icons_03_Start-Building_SqInk
Разработка приложений потоковой передачи

Создайте свое первое приложение потоковой передачи в консоли Amazon Kinesis Data Analytics.