ThR*_*R37 6 docker apache-spark apache-zeppelin
我目前正在使用Apache Zeppelin + Spark 2.x内部的普通发行版构建自定义docker容器.
我的Spark作业将在远程集群中运行,我将yarn-client用作主人.
当我运行笔记本并尝试打印时sc.version,程序卡住了.如果我转到远程资源管理器,已经创建并接受了一个应用程序,但在日志中我可以阅读:
INFO yarn.ApplicationMaster: Waiting for Spark driver to be reachable
我对情况的理解是集群无法与容器中的驱动程序通信,但我不知道如何解决这个问题.
我目前正在使用以下配置:
spark.driver.port设置为PORT1和选项-p PORT1:PORT1传递给容器spark.driver.host设置为172.17.0.2(容器的IP)SPARK_LOCAL_IP设置为172.17.0.2(容器的IP)spark.ui.port设置为PORT2和选项-p PORT2:PORT2传递给容器我觉得我应该将SPARK_LOCAL_IP更改为主机ip,但如果我这样做,SparkUI无法启动,阻止该过程前一步.
提前感谢任何想法/建议!
小智 4
好问题!首先,正如您所知,Apache Zeppelin在单独的进程中运行解释器。
在您的情况下,Spark 解释器 JVM 进程托管 aSparkContext并充当部署模式SparkDriver的实例yarn-client。根据Apache Spark 文档,容器内的此进程需要能够与 YARN ApplicationMaster 和集群中的所有 SparkWorkers 机器来回通信。
这意味着您必须打开多个端口并在容器和主机之间手动转发。以下是ZEPL 的一个项目示例,该项目执行类似的工作,其中我们使用了7 个端口才能完成工作。
另一种方法可以在主机模式下运行 Docker 网络(尽管由于最近的错误,它显然不适用于 os x )
| 归档时间: |
|
| 查看次数: |
1226 次 |
| 最近记录: |