Выпуск воздушного потока "run_as_user" - PullRequest
0 голосов
/ 09 января 2020

При запуске Airflow на Oracle linux 7, run_as_user сбой. Есть ли способ исправить или обойти это.

Журнал ошибок:

[2020-01-09 17:47:46,529] {base_task_runner.py:113} INFO - Job 2: Subtask main_trigger sudo: 
Illegal option -E
[2020-01-09 17:47:46,529] {base_task_runner.py:113} INFO - Job 2: Subtask main_trigger usage: 
sudo -V | -h | -L | -l | -v | -k | -K | [-H] [-P] [-S] [-b] [-p prompt]
[2020-01-09 17:47:46,530] {base_task_runner.py:113} INFO - Job 2: Subtask main_trigger             
[-u username/#uid] -s | <command>
[2020-01-09 17:47:55,892] {logging_mixin.py:112} INFO - [2020-01-09 17:47:55,892] 
{local_task_job.py:103} INFO - Task exited with return code 1
[2020-01-09 18:01:47,724] {taskinstance.py:655} INFO - Dependencies all met for 
<TaskInstance: 
airflow_rest_v01.main_trigger 2020-01-01T00:00:00+00:00 [queued]>
[2020-01-09 18:01:47,733] {taskinstance.py:655} INFO - Dependencies all met for 
<TaskInstance: airflow_rest_v01.main_trigger 2020-01-01T00:00:00+00:00 [queued]>

Я передаю команду в аргументах по умолчанию как:

default_args = {
        'owner': 'me',
        'start_date': dt.datetime(2020, 1, 1),
        'retries': 1,
        'retry_delay': dt.timedelta(seconds=5),
        'provide_context': True,
        'run_as_user': 'bot'
    }
with DAG('airflow_rest_v01',
         default_args=default_args,
         schedule_interval='@once',
         ) as dag:

    spark_path = '/user/spark/bin/spark-submit'

    main_trigger_job = BashOperator(task_id='main_trigger',
                                    bash_command=spark_path+' --master  yarn –-num-executors 4 --executor-cores 4 --executor-memory 15g trigger.py')

бот часть группы пользователей в системе. Похоже, что Airflow пытается запустить команду с параметром -E, но она не поддерживается. Любой другой путь?

Редактировать:

Единственное решение, которое я нашел, было редактировать исходный код airflow / airflow / task / task_runner / base_task_runner.py

В функции _ init _ класса BaseTaskRunner удаление -E из этой конкретной строки решило проблему.

popen_prepend = ['sudo', '-E', '-H', '-u', self.run_as_user]

Тем не менее, я думаю, что следует быть лучшим способом справиться с этим.

...