指定应用程序jar文件的主机

时间:2018-12-26 14:35:01

标签: python apache-spark kubernetes

我已经使用以下命令从目录中创建了HTTP服务器:

python -c 'import BaseHTTPServer as bhs, SimpleHTTPServer as shs; bhs.HTTPServer(("0.0.0.0", 8089), shs.SimpleHTTPRequestHandler).serve_forever()'

我使用Spark-K8s运算符执行Spark应用程序。作为主文件,我想使用存储在目录中的jar文件(从中创建http服务器)。但是,我不知道应将目录映射到哪个主机,以便在部署中运行的Spark应用程序可以使用该目录。 当我在当前主机上运行它时,出现此连接错误:

java.net.ConnectException: Connection refused

基本上,我有HTTP服务器,它引用指定的主机和端口,并且我想在K8上使用Spark运行此jar文件。如何定义此主机?

目前,应用程序定义如下:

apiVersion: sparkoperator.k8s.io/v1alpha1
kind: SparkApplication
metadata:
  name: spark-example
  namespace: default
spec:
  type: Scala
  image: gcr.io/spark-operator/spark:v2.4.0
  mainClass: org.apache.spark.examples.SparkExample
  mainApplicationFile: https://0.0.0.0:8089/spark_k8s_airflow.jar
  mode: cluster
  deps: {}
  driver:
    coreLimit: 1000m
    cores: 0.1
    labels:
      version: 2.4.0
    memory: 1024m
    serviceAccount: intended-mink-spark
  executor:
    cores: 1
    instances: 1
    labels:
      version: 2.4.0
    memory: 1024m
  imagePullPolicy: Never

1 个答案:

答案 0 :(得分:1)

  

基本上,我有HTTP服务器,它引用指定的主机和端口,并且我想在K8上使用Spark运行此jar文件。如何定义此主机?

kubernetes的方式是通过Service进行操作,默认情况下,它会以service-name.service-namespace.svc.cluster.local的形式创建DNS条目,其中service-nameservice-namespace不是这些文字,但其他3个字面上是。但是,如果您只是想玩转而创建一个Service太多的工作,则可以使用运行SimpleHTTPServer的Pod的当前IP。

  

mainApplicationFile: https://0.0.0.0:8089/spark_k8s_airflow.jar

请注意,至少在编写上面的python示例时,您不能使用https:,因为SimpleHTTPServer就是 HTTP 。可能您可以说服其中一个内置程序包提供https服务,但键入的内容会更多,并且可能不值得花大力气