Есть новая версия Apache Samza, которая добавляет Samza SQL, а также Azure EventHubs и AWS Kinesis. Samza — это фреймворк с открытым исходным кодом, первоначально разработанный вместе с Kafka компанией LinkedIn, прежде чем он был сделан с открытым исходным кодом и передан Apache Software Foundation.
Идея Samza состоит в том, чтобы предоставить простой способ разработки и выполнения заданий потоковой обработки, которые могут использоваться как непрограммистами, так и разработчиками. Samza использует Apache Kafka для обмена сообщениями и Apache Hadoop YARN для обеспечения отказоустойчивости, изоляции процессора, безопасности и управления ресурсами. Он поддерживает локальное состояние через хранилище RocksDB, что позволяет приложению с отслеживанием состояния масштабироваться до 1,1 миллиона событий в секунду на одной машине с SSD.
Samza имеет простой API «сообщений процесса» на основе обратных вызовов, сравнимый с MapReduce. Он поддерживает управляемое состояние посредством создания снимков и восстановления состояния потокового процессора. Когда процессор перезагружается, Samza восстанавливает его состояние до согласованного снимка. Он также обеспечивает отказоустойчивость, работая с YARN для прозрачного переноса задач на другую машину в случае сбоя активной машины в кластере. Kafka используется для обработки сообщений в том порядке, в котором они были записаны в раздел, поэтому сообщения никогда не теряются.
Самза разделена и распределена на всех уровнях. У него есть подключаемый API, что означает, что его можно запускать с другими системами обмена сообщениями и в других средах выполнения, хотя он разработан для работы сразу с Kafka и YARN. Самза написан на Scala и Java.
В новом выпуске Samza добавлены три основные новые функции. Первый — это Samza SQL. Это API высокого уровня, предназначенный для расширения целевой аудитории потоковой обработки, чтобы сделать ее доступной для всех, кто умеет писать SQL. Разработчики говорят, что Samza SQL можно использовать для быстрого получения аналитических данных в реальном времени и для быстрого создания приложений потоковой обработки.
Samza SQL основан на Apache Calcite, языковой среде SQL с открытым исходным кодом, используемой в нескольких проектах Apache. Samza SQL работает так, что вы пишете обычный SQL-запрос, а API занимается созданием, настройкой и управлением конвейером.
Второе улучшение — это производитель, потребитель и поставщик контрольных точек Azure EventHubs. Также был добавлен потребитель AWS Kinesis. Другие улучшения включают устойчивое состояние в высокоуровневом API, стабильность развертывания на основе Zookeeper и многоступенчатую пакетную обработку.