Невозможно добиться высокой загрузки ЦП с помощью Flink и Gelly.

Я некоторое время экспериментировал с потоковой передачей Flink, используя такие тесты, как тест потоковой передачи Yahoo: https://github.com/yahoo/streaming-benchmarks, которые должны нагружать систему, но я так и не добился удовлетворительной загрузки ЦП — на самом деле она составляла всего ~ 25% при использовании всех доступных ядер системы (параллелизм = узлы * ядра) и один слот TaskManager на ядро.

Недавно я начал работать с Gelly, Flink Graph API, используя некоторые из предоставленных примеров алгоритмов (например, PageRank), наборы данных пакетной обработки, варьирующиеся от десятков тысяч до сотен миллионов вершин.

Я занимаю четыре TaskManager'а по 32 ядра в каждом, и как подсказывает документация, ставлю taskmanager.numberOfTaskSlots: 32 и parallelism.default: 128.

Даже если я увеличу эти значения, средняя загрузка процессора никогда не превысит 40%. Следовательно, я получаю низкую производительность, поскольку мои ресурсы используются не полностью.

Я также хочу отметить тот факт, что в некоторых случаях я заметил более высокую производительность при более низких уровнях параллелизма (и загрузки ЦП).

Что мне не хватает?


person rawrintheclouds    schedule 18.01.2018    source источник


Ответы (1)


Чем больше данных в источнике с большим количеством уникальных ключей и больше операторов агрегации, тем выше уровень вашего ЦП. Например, у меня 250 тыс. сообщений в kafka в секунду (флинк-источник читает столько же в секунду), с почти 170 тыс. уникальных ключей, 5-минутным переворачивающимся окном и 15 агрегациями на сообщение. У меня есть 3-узловой, 16-ядерный кластер Flink с параллелизмом источника 15, параллелизмом агрегации 48 и параллелизмом приемника 3. Использование моего ЦП постоянно составляет около 85-90% в каждом узле.

Вы можете просто загрузить больше сообщений и продублировать логику агрегации, чтобы выполнять больше операций над каждым сообщением. Постарайтесь получить больше уникальных ключей из каждого сообщения.

person Josh    schedule 15.01.2019