Существует 3 способа удаленной отправки заданий Spark с помощью Apache Airflow:
(1) Использование SparkSubmitOperator
: этот оператор ожидает, что на нашем сервере Airflow настроена конфигурация бинарного файла и клиента YARN с искровой отправкой. Он вызывает команду spark-submit с заданными параметрами, блокирует до завершения задания и возвращает окончательный статус. Хорошо, что он также передает логи из команды spark-submit stdout и stderr.
Вам действительно нужно только настроить файл yarn-site.xml, чтобы клиент spark-submit --master yarn --deploy-mode
работал.
После развертывания Application Master в YARN Spark запускается локально в кластер Hadoop.
Если вы действительно хотите, вы можете добавить hdfs-site.xml
и hive-site.xml
, которые также будут отправлены из Airflow (если это возможно), но в противном случае по крайней мере hdfs-site.xml
файлы должны быть выбраны из пути к классу контейнера YARN
(2) Использование SSHOperator
: Используйте этот оператор для запуска команд bash на удаленном сервере (с использованием протокола SSH через библиотеку paramiko), например spark-submit
. Преимущество этого подхода заключается в том, что вам не нужно копировать hdfs-site.xml
или поддерживать какой-либо файл.
(3) Использование SimpleHTTPOperator
с Livy : Livy - это REST-интерфейс с открытым исходным кодом для взаимодействия с Apache Spark из любого места. Вам просто нужно сделать REST звонки.
лично я предпочитаю SSHOperator :)