Kafka Graphs Framework расширяет потоки Kafka


Новая структура обработки графов для Apache Kafka расширяет потоки Kafka, чтобы предоставлять аналитику распределенных графов, основанную только на том, что уже предоставляется слоями Kafka. Kafka Graphs — это клиентский уровень для распределенной обработки графиков.

Kafka Graphs предоставляет библиотеку для преобразований графов наряду с распределенной платформой для выполнения алгоритмов графов. Разработчики говорят, что он был вдохновлен другими платформами для графической аналитики, такими как Apache Flink Gelly, Apache Spark GraphX и Apache Giraph, но в отличие от этих других фреймворков он не требует ничего, кроме того, что уже предоставлено воронкой абстракции Kafka.

Туннель абстракции Kafka — это имя, данное разработчиком Kafka Graphs Робертом Йокотой четырем уровням экосистемы Kafka — KSQL Confluent, DSL Kafka Streams, API процессора Kafka Streams и API Producer-Consumer. Они образуют иерархию абстракций, которые обрабатывают различные части обрабатываемого потока, причем большинство случаев обрабатывается KSQL, а последующие уровни обрабатывают меньшие объемы для формирования «воронки».

Графы в Kafka Graphs представлены двумя таблицами из Kafka Streams, одна для вершин и одна для ребер. Таблица вершин состоит из идентификатора и значения вершины, а таблица кромок состоит из идентификатора источника, идентификатора цели и значения кромки. После создания графа на нем можно выполнять преобразования.

Kafka Graphs предоставляет ряд алгоритмов графов, основанных на подходе, принятом Pregel, системой для крупномасштабной обработки графов. Алгоритмы в Graphs включают поиск в ширину, коэффициент локальной кластеризации, кратчайший путь с одним и несколькими источниками, слабосвязанные компоненты и рейтинг страниц. Пользовательские алгоритмы графа на основе Pregel также могут быть добавлены путем реализации интерфейса ComputeFunction.

Поскольку Kafka Graphs построен поверх Kafka Streams, он может использовать базовую схему разделения потоков Kafka для поддержки обработки распределенных графов. Когда несколько экземпляров приложения REST запускаются на разных хостах, они автоматически работают вместе, чтобы разделить набор вершин при выполнении алгоритма графа.

Разработчики говорят, что Kafka Graphs все еще находится на начальной стадии, но его можно попробовать на GitHub.


Добавить комментарий