Я работаю с моими искрами в режиме «клиент» во время разработки. Я использую «--file» для обмена конфигурационными файлами с исполнителями. Драйвер читал файлы конфигурации локально. Теперь я хочу развернуть это задание в режиме «кластера». У меня возникли трудности с совместным использованием файлов конфигурации с драйвером.Поделиться конфигурационными файлами с помощью функции «исправить-отправить» в режиме кластера
Ex, я передаю имя файла конфигурации как extraJavaOptions как для драйвера, так и для исполнителей. Я читаю этот файл с помощью SparkFiles.get()
val configFile = org.apache.spark.SparkFiles.get(System.getProperty("config.file.name"))
Это хорошо работает на исполнителях, но терпит неудачу на водителе. Я думаю, что файлы разделяются только с исполнителями, а не с контейнером, в котором работает драйвер. Одним из вариантов является сохранение файлов конфигурации в S3. Я хотел проверить, может ли это быть достигнуто с помощью spark-submit.
> spark-submit --deploy-mode cluster --master yarn --driver-cores 2
> --driver-memory 4g --num-executors 4 --executor-cores 4 --executor-memory 10g \
> --files /home/hadoop/Streaming.conf,/home/hadoop/log4j.properties \
> --conf **spark.driver.extraJavaOptions**="-Dlog4j.configuration=log4j.properties
> -Dconfig.file.name=Streaming.conf" \
> --conf **spark.executor.extraJavaOptions**="-Dlog4j.configuration=log4j.properties
> -Dconfig.file.name=Streaming.conf" \
> --class ....
Благодарим за отзыв! У меня уже есть файл конфигурации в другом формате (typafe config). Существует несколько преимуществ для сохранения конфигураций, а не для размещения их в виде пары KV в файле. Не может быть, чтобы мой файл конфигурации был совместно с драйвером? – Cheeko
@Cheeko: Что вы имеете в виду, делясь файлами conf с драйвером? что есть в конфиде? также, если вы можете читать у исполнителя, почему вы не читали его в драйвере? прочитайте то же самое в драйвере и передайте его исполнителю в качестве широковещательной переменной .. поэтому вы можете использовать его в обоих местах .. – Shankar
Конфигурационный файл не находится в местоположении, доступном для всех узлов. Поэтому я использую spark-submit с файлами -files, чтобы передать файл всем исполнителям. Похоже, что -файлы не передают файл драйверу, который запускает другой узел в режиме «кластера». – Cheeko