Используйте C / C ++ в Apache-Flink

Моя команда и я разрабатываем приложение, которое использует Flink.
Данные будут обрабатываться с использованием вычислительно-тяжелого численного алгоритма.
Чтобы максимально оптимизировать его, я хотел бы написать этот алгоритм на C / C ++, а не на Java.

Вопрос в том, возможно ли использовать код C / C ++ во Flink? Возможно, оборачивая это в библиотеку Java?

1

Решение

Я никогда не проверял этот случай в частности. В общем, вы всегда можете использовать нативный код из Java, используя JNI, родной интерфейс Java

Идея заключалась бы в том, чтобы фасад Java представлял ваш собственный код и использовал эти методы в графе вычислений, определенном с помощью Flink в Java (или других языках JVM, таких как Scala). Для этого вам нужно будет сделать доступными как Java, так и нативные библиотеки на всех задействованных узлах. Если у вас есть кластер Hadoop, вы можете использовать YARN для отправки файлов вместе с вашей работой (документы Вот, увидеть --yarn-ship Опция CLI).

Я бы посоветовал вам проверять это постепенно, с очень маленькой нативной функцией. Кроме того, не стоит недооценивать возможности Java с точки зрения производительности: благодаря хорошо продуманному программированию и использованию JIT и других оптимизаций во время выполнения, долго выполняющиеся процессы могут обладать даже лучшими характеристиками, чем аналогичный нативный код с неуправляемой памятью.

Имейте в виду, что это, конечно, использование нативного кода будет означать ограничение переносимости вашего кода на платформы, для которых вы будете компилировать свои библиотеки.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]