Как сохранить контрольную точку в удаленном RocksDB в Apache Flink - PullRequest
1 голос
/ 07 мая 2020
• 1000 контрольные точки в RocksDB. У меня есть несколько вопросов по RocksDBStateBackend.

Насколько я понимаю, механизм RocksDBStateBackend встроен в Apache Flink. RockDB - это своего рода база данных "ключ-значение". Итак, если я прав, это означает, что Flink сохранит все контрольные точки во встроенной RockDB, которая использует локальный диск.

Если это так, я думаю, что в некоторых случаях диск мог быть исчерпан из-за сохраненных контрольных точек в камниDB. Теперь я думаю, можно ли настроить удаленную RockDB для хранения этих контрольных точек? Если это возможно, стоит ли беспокоиться о сбое удаленного RocksDB? Если удаленный RocksDB выйдет из строя, задания Flink не смогут продолжать работать, верно?

Ответы [ 2 ]

2 голосов
/ 07 мая 2020

Нет возможности использовать внешний или удаленный RocksDB с Apache Flink. RocksDB - это встроенное хранилище ключей и значений с локальным экземпляром в каждом диспетчере задач.

Несколько моментов:

  • Flink четко различает рабочее состояние, которое является всегда локальный (для хорошей производительности), и снимки состояния (контрольные точки и точки сохранения), которые не являются локальными (для надежности они должны храниться в распределенной файловой системе).

  • RocksDBStateBackend использует локальный диск для рабочего состояния. Два других серверных модуля состояния сохраняют свое рабочее состояние в куче Java.

  • Координатор контрольной точки организует сбор всех этих срезов данных, разбросанных по всем диспетчерам задач, вместе в полные контрольные точки, которые хранятся в другом месте. В случае MemoryStateBackend эти контрольные точки хранятся в куче JobManager; для двух других они находятся в распределенной файловой системе.

Вы хотите настроить RocksDB на использование самой быстрой доступной локальной файловой системы. Попробуйте использовать локально подключенные твердотельные накопители и избегайте сетевых хранилищ (например, EBS). Не пытайтесь использовать распределенную файловую систему, такую ​​как S3, в качестве локального хранилища RocksDB.

state.backend.rocksdb.localdir контролирует, где каждый локальный RocksDB хранит свое рабочее состояние.

Параметр конструктора RocksDBStateBackend определяет, где контрольные точки сохранены. Например, использование S3 в соответствии с рекомендациями @ezequiel - очевидный выбор для AWS.

0 голосов
/ 07 мая 2020

RocksDB может работать с любой поддерживаемой файловой системой с помощью Flink https://ci.apache.org/projects/flink/flink-docs-stable/ops/filesystems/

Если вы используете Flink, вероятно, вы хотите выполнить контрольную точку и возобновить работу с них.

I будет выводить хранилище за пределы узла. Если вы используете облачного провайдера, например AWS, тогда S3 - правильный вариант.

Поэтому вам, вероятно, следует написать что-то вроде: new RocksDBStateBackend("s3://my-bucket", true); и назначить его своей среде выполнения.

Пожалуйста, проверьте приведенную выше документацию, чтобы правильно настроить файловую систему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...