Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 从气流到外部火花容器提交火花作业_Docker_Apache Spark_Airflow - Fatal编程技术网

Docker 从气流到外部火花容器提交火花作业

Docker 从气流到外部火花容器提交火花作业,docker,apache-spark,airflow,Docker,Apache Spark,Airflow,我有一个火花和气流集群,它是由docker swarm构建的。气流容器不能像我预期的那样容纳spark submit 我正在使用github中存在的以下图像 Spark:big data europe/docker hadoop Spark workbench 气流:puckel/docker气流(CeleryExecutor) 我准备了一个.py文件并将其添加到dags文件夹下 from airflow import DAG from airflow.contrib.operators.sp

我有一个火花和气流集群,它是由docker swarm构建的。气流容器不能像我预期的那样容纳spark submit

我正在使用github中存在的以下图像

Spark:big data europe/docker hadoop Spark workbench

气流:puckel/docker气流(CeleryExecutor)

我准备了一个.py文件并将其添加到dags文件夹下

from airflow import DAG

from airflow.contrib.operators.spark_submit_operator import SparkSubmitOperator
from datetime import datetime, timedelta


args = {'owner': 'airflow', 'start_date': datetime(2018, 9, 24) }

dag = DAG('spark_example_new', default_args=args, schedule_interval="@once")

operator = SparkSubmitOperator(task_id='spark_submit_job', conn_id='spark_default', java_class='Main', application='/SimpleSpark.jar', name='airflow-spark-example',conf={'master':'spark://master:7077'},
        dag=dag)
我还在网站中将连接配置为以下内容:

Master是spark主容器的主机名

但它没有找到spark submit,它会产生以下错误:

[2018-09-24 08:48:14,063] {{logging_mixin.py:95}} INFO - [2018-09-24 08:48:14,062] {{spark_submit_hook.py:283}} INFO - Spark-Submit cmd: ['spark-submit', '--master', 'spark://master:7077', '--conf', 'master=spark://master:7077', '--name', 'airflow-spark-example', '--class', 'Main', '--queue', 'root.default', '/SimpleSpark.jar']

[2018-09-24 08:48:14,067] {{models.py:1736}} ERROR - [Errno 2] No such file or directory: 'spark-submit': 'spark-submit'
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/airflow/models.py", line 1633, in _run_raw_task
    result = task_copy.execute(context=context)
  File "/usr/local/lib/python3.6/site-packages/airflow/contrib/operators/spark_submit_operator.py", line 168, in execute
    self._hook.submit(self._application)
  File "/usr/local/lib/python3.6/site-packages/airflow/contrib/hooks/spark_submit_hook.py", line 330, in submit
    **kwargs)
  File "/usr/local/lib/python3.6/subprocess.py", line 709, in __init__
    restore_signals, start_new_session)
  File "/usr/local/lib/python3.6/subprocess.py", line 1344, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'spark-submit': 'spark-submit'

据我所知,
puckel/docker airflow
使用Python slimimage()。此映像不包含公共包,只包含运行python所需的最小包。因此,您需要扩展映像并在容器上安装
spark submit

编辑:Airflow确实需要容器中的spark二进制文件来运行
SparkSubmitOperator


您可以使用的另一种方法是使用
SSHOperator
在外部VM上运行
spark submit
命令,方法是将SSHing发送到远程机器。但是这里也应该提供SSH,这在Puckel Airflow中是不可用的。

您能找到spark submit吗?可能您必须将其添加到路径包含spark submit的计算机是另一个容器,我如何将spark submit添加到包含气流的容器中?您可以扩展气流Docker映像并安装spark,或者尝试仅复制/粘贴spark submit bin。我知道,但气流的目的是调度,不是吗?我想在我的spark容器中运行spark submit命令。编辑了答案。是否有包含ssh和芹菜的图像?我建议您使用Centos图像,按照文档中的说明安装气流,然后只需执行
pip安装apache气流[ssh]