Kubernetes上的Spark-通过pyspark从正在运行的pod中提交作业

时间:2018-08-29 20:45:49

标签: apache-spark pyspark kubernetes

我有一个kubernetes集群,其中部署了一个自定义的spark集群。 Spark在名称空间“ spark”中具有一个主容器和一个工作容器。主容器具有服务“ spark-master-svc”,它公开了端口7077。

我有另一个运行Python应用程序的Pod,有时我需要从其中发送数据来激发火花。吊舱提供无头服务。

该应用会像这样连接到火花

import json
from pyspark import SparkConf
from pyspark.sql import SparkSession

def get_spark(app):
    spark = (SparkSession.builder.master(f'spark://spark-master-svc.spark:7077')
             .config(conf=SparkConf())
             .config('spark.ui.showConsoleProgress', 'false')
             .config('spark.executor.extraJavaOptions',
                     '-XX:-UseGCOverheadLimit -XX:+PrintGCDetails -XX:+PrintGCTimeStamps')
             .appName(app))
    spark = spark.getOrCreate()
    spark.sparkContext.setLogLevel('WARN')

spark = get_spark('demo')

rdd = spark.sparkContext.parallelize(json.dumps([{'a':1,'b':'test'}]))  # demo purpose
df = spark.read.json(rdd)

问题在于,由于某种原因,spark无法连接回我的演示应用程序以绑定到随机端口(或我指定的任何其他端口)上。这是一个示例日志:

Exception in thread "main" java.lang.reflect.UndeclaredThrowableException
...
Caused by: org.apache.spark.rpc.RpcTimeoutException: Cannot receive any reply from demo:37493 in 120 seconds. This timeout is controlled by spark.rpc.askTimeout
...

这告诉我spark正在尝试通过随机端口连接到我的演示容器,但无法连接。 我将如何解决这个问题?

0 个答案:

没有答案