2017-06-23 2 views
0

https://spark.apache.org/docs/latest/cluster-overview.htmlの画像をご覧ください。kubernetesからsparkアプリケーションを提出する方法

enter image description here

外部kubernetesを実行におけるスパーククラスタ。しかし、私はkubernetesの中にドライバプログラムを実行するつもりです。問題は、スパーククラスタにドライバプログラムがあるかどうかを知らせる方法です。

マイkubernetesのYAMLファイル:

kind: List 
apiVersion: v1 
items: 
- kind: Deployment 
    apiVersion: extensions/v1beta1 
    metadata: 
    name: counter-uat 
    spec: 
    replicas: 1 
    selector: 
     matchLabels: 
     name: spark-driver 
    template: 
     metadata: 
     labels: 
      name: spark-driver 
     spec: 
     containers: 
      - name: counter-uat 
      image: counter:0.1.0 
      command: ["/opt/spark/bin/spark-submit", "--class", "Counter", "--master", "spark://spark.uat:7077", "/usr/src/counter.jar"] 
- kind: Service 
    apiVersion: v1 
    metadata: 
    name: spark-driver 
    labels: 
     name: spark-driver 
    spec: 
    type: NodePort 
    ports: 
    - name: port 
     port: 4040 
     targetPort: 4040 
    selector: 
     name: spark-driver 

エラーは次のとおりです。

Caused by: java.io.IOException: Failed to connect to /172.17.0.8:44117 
    at org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:228) 
    at org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:179) 
    at org.apache.spark.rpc.netty.NettyRpcEnv.createClient(NettyRpcEnv.scala:197) 
    at org.apache.spark.rpc.netty.Outbox$$anon$1.call(Outbox.scala:191) 
    at org.apache.spark.rpc.netty.Outbox$$anon$1.call(Outbox.scala:187) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: io.netty.channel.AbstractChannel$AnnotatedNoRouteToHostException: Host is unreachable: /172.17.0.8:44117 

スパーククラスタは、IPは172.17.0.8であるドライバプログラムに到達しようとしています。 172.17.0.8はkubernetes内の内部ipかもしれません。

この問題を解決するにはどうすればよいですか?私のyamlファイルを修正するには? spark.driver.host =」、 "--conf"、 "spark.driver.bindAddress = 192.168.42.8"、 "--conf":ありがとう

UPDATE

は、私は、次の2つのパラメータを追加しました0.0.0.0 "となります。

しかし、ログから、まだ172.17.0.8に到達しようとしています。これはkubernetes内部ポッドipです。

UPDATE

kind: List 
apiVersion: v1 
items: 
- kind: Deployment 
    apiVersion: extensions/v1beta1 
    metadata: 
    name: counter-uat 
    spec: 
    replicas: 1 
    selector: 
     matchLabels: 
     name: counter-driver 
    template: 
     metadata: 
     labels: 
      name: counter-driver 
     spec: 
     containers: 
      - name: counter-uat 
      image: counter:0.1.0 
      command: ["/opt/spark/bin/spark-submit", "--class", "Counter", "--master", "spark://spark.uat:7077", "--conf", "spark.driver.bindAddress=192.168.42.8","/usr/src/counter.jar"] 

kind: Service 
apiVersion: v1 
metadata: 
    name: counter-driver 
    labels: 
    name: counter-driver 
spec: 
    type: NodePort 
    ports: 
    - name: driverport 
    port: 42761 
    targetPort: 42761 
    nodePort: 30002 
    selector: 
    name: counter-driver 

別のエラー:

2017-06-23T20:00:07.487656154Z Exception in thread "main" java.net.BindException: Cannot assign requested address: Service 'sparkDriver' failed after 16 retries (starting from 31319)! Consider explicitly setting the appropriate port for the service 'sparkDriver' (for example spark.ui.port for SparkUI) to an available port or increasing spark.port.maxRetries. 

答えて

0

spark.driver.hostspark.driver.bindAddress"spark.uat"または"spark-driver.uat"またはスパーク自体に実際のドライバのホストを設定してみてください。これは、マスターが接続先をクライアントに指示する、これらのタイプの分散プロジェクトでよく見られる問題です。 spark.driver.hostを指定しないと、適切なホストを単独で見つけようとしていて、見ているIPだけを使用しようとします。しかし、この場合、見えるIPは内部Kubernetes IPであり、クライアントにとって適切に機能しない可能性があります。

SPARK_PUBLIC_DNS環境変数を設定することもできます。

Hostname your Spark program will advertise to other machines.

+0

「spark.driver.bindAddress」は、spark-clusterにアプリケーションドライバがどこにあるかを通知するために使用されますか? – BAE

+0

実際、 'spark.driver.host'はより有望です。 '0.0.0.0'でバインドしたいが、それ自体をホスト名として提示する。 – kichik

+0

私の更新を見てください – BAE

関連する問題