Выполнение сценария или небольшой функции на всех исполнителях искры и драйвере без использования DataFrame или RDD. - PullRequest
0 голосов
/ 12 июля 2020

Я пытаюсь прочитать данные из Kafka topi c с помощью Spark Structured Streaming. Брокеры Kafka поддерживают SSL. Поэтому мне нужно установить / импортировать частный сертификат ЦС в файл TrustStore, присутствующий в драйвере искры и исполнителях.

Я не могу использовать отдельный шаг для импорта сертификата перед основной командой отправки искры, потому что скрипт искры передается динамически ( скачал с s3). Этот искровой скрипт из s3 содержит информацию о том, где находится файл частного сертификата CA (.pem) (в отдельном месте s3).

Я искал способы сделать это. Большинство решений требует создания RDD или DataFrame и вызова на нем функции Map или MapPartition (по сути, определяя раздел). Но для меня это как круговая зависимость. Ни я не могу создать Dataframe или RDD без предварительного импорта частного сертификата CA, ни я не могу импортировать сертификат ca без создания DataFrame или RDD.

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

Может ли кто-нибудь предложить лучший способ выполнить небольшую функцию на Драйвер и все исполнители без создания DataFrame или RDD?

1 Ответ

0 голосов
/ 12 июля 2020

Если вы запускаете приложение Spark на AWS EMR, то решение вашей проблемы может быть выполнено с помощью действия bootstrap в EMR .

Из официального документация bootstrap action bootstrap action , вы найдете это

. Вы можете использовать bootstrap action для установки дополнительного программного обеспечения или настройки конфигурации экземпляры кластера. Bootstrap действия - это сценарии, которые запускаются в кластерах после того, как Amazon EMR запускает экземпляр с помощью Amazon Linux Amazon Machine Image (AMI). Bootstrap действия выполняются до того, как Amazon EMR установит приложения, указанные при создании кластера, и до того, как узлы кластера начнут обрабатывать данные. Если вы добавляете узлы в работающий кластер, действия bootstrap также выполняются на этих узлах таким же образом. Вы можете создавать собственные действия bootstrap и указывать их при создании кластера.

Эти сценарии можно запускать либо на узле драйвера, либо на узле исполнителя, либо на обоих в зависимости от варианта использования. По умолчанию он запускается на всех экземплярах в EMR.

Вы можете либо разместить сценарий bootstrap на S3, либо вставить весь сценарий при создании кластера из консоли AWS. Я лично предпочитаю поместить сценарий в S3 и указать этот путь к файлу в действии bootstrap при запуске EMR.

Теперь, чтобы выполнить ваш вариант использования, вы можете поместить logi c загрузки сертификата CA в сценарий и любой другой пользовательский лог c, который вы хотите запустить на всех узлах кластера.

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