Я использую автономный Apache Airflow для отправки заданий Spark с помощью SSHExecutorOperator
для подключения к пограничному узлу и отправки заданий с помощью простого BashCommand
.
В основном это работает хорошо, но иногда некоторые случайные задачи выполняются неопределенно.
Моя работа выполнена успешно, но все еще выполняется в соответствии с Airflow.
Когда я проверяю журналы, создается впечатление, что поток воздуха прекратился после задания, как если бы он не получил возвращаемое значение.
Почему это могло случиться? Некоторые задания выполняются в течение 10 часов +, и Airflow успешно их просматривает, а другие не выполняются.
У меня есть только журналы Spark (на уровне INFO
), на которых ничего не печатается драйвером задания.
Это не зависит от режима развертывания. Я использовал client
и cluster
, и это, похоже, не зависит от этого. Иногда Airflow не может посмотреть какой-нибудь простой скрипт на Python.
Чтобы решить эту проблему, мне было интересно, может ли установка этот плагин работать.
РЕДАКТИРОВАТЬ:
Я использую Airflow 1.8.
Я не установил SparkSubmitOperator, потому что:
«Исполнители должны иметь доступ к команде spark-submit в локальной оболочке командной строки. Должны быть установлены библиотеки Spark.».
Мой поток - просто виртуальная машина без двоичных файлов hadoop. Воздушный поток делает некоторое SSH-соединение, затем отправляется на пограничный узел.
Когда я просматриваю документацию SparkSubmitOperator, я не думаю, что могу подключиться к пограничному узлу для отправки. Отсутствует параметр "conn_id" или SSH.
PS2: Этим утром работа выполнялась всю ночь напролет (даже если он должен был бежать через 30 минут ...). Я использую netstat, чтобы проверить, не подключился ли мой пользователь приложения воздушного потока к SSH и ... ничего, соединение SSH прервалось.
Та же задача, тот же DAG, другой RUN:
ОК:
[2018-07-05 10: 48: 55,509] {base_task_runner.py:95} INFO - подзадача: [2018-07-05 10: 48: 55,509] {ssh_execute_operator.py:146} INFO - 18/07 / 05 10:48:55 INFO datasources.FileFormatWriter: задание пустое.
[2018-07-05 10: 48: 55,510] {base_task_runner.py:95} INFO - подзадача: [2018-07-05 10: 48: 55,510] {ssh_execute_operator.py:146} INFO - 18/07/05 10 : 48: 55 INFO datasources.FileFormatWriter: статистика завершенной обработки задания нулевая.
[2018-07-05 10: 49: 08,407] {jobs.py:2083} INFO - Задание завершено с кодом возврата 0
FAIL:
[2018-07-04 18: 52: 12,849] {base_task_runner.py:95} INFO - подзадача: [2018-07-04 18: 52: 12,849] {ssh_execute_operator.py:146} INFO - 18/07 / 04 18:52:12 INFO scheduler. DAGScheduler: задание 5 выполнено: json at CleaningTweets.scala: 249, заняло 8,411721 с
[2018-07-04 18: 52: 13 530] {base_task_runner.py:95} INFO - подзадача: [2018-07-04 18: 52: 13 530] {ssh_execute_operator.py:146} INFO - 18/07/04 18 : 52: 13 INFO datasources.FileFormatWriter: задание пустое.
[2018-07-04 18: 52: 13 531] {base_task_runner.py:95} INFO - подзадача: [2018-07-04 18: 52: 13 530] {ssh_execute_operator.py:146} INFO - 18/07/04 18 : 52: 13 INFO datasources.FileFormatWriter: статистика завершенной обработки задания нулевая.
Мисс возврат ...
ПОСЛЕДНИЕ РЕДАКТИРОВАТЬ: я удалил все журналы (печать / показ) из всех заданий, и, кажется, работает.