Не могу подключиться к docker Spark Master - PullRequest
0 голосов
/ 19 июня 2020

У меня небольшой кластер Spark 2.4.1, работающий на Docker, не могу подключиться с помощью pyspark. Мастер доступен (некоторые журналы ошибок пишутся относительно сбоя при попытке подключения).

Docker -составить файл:

  version: '3.4'
  services:
    #####################
    #       SPARK       #
    #####################

  master: #Master node for spark
    image: gettyimages/spark
    command: bin/spark-class org.apache.spark.deploy.master.Master -h master
    hostname: master
    environment:
      MASTER: spark://master:7077
      SPARK_CONF_DIR: /conf
      SPARK_PUBLIC_DNS: localhost
    expose:
      - 7001
      - 7002
      - 7003
      - 7004
      - 7005
      - 7077
      - 6066
    ports:
      - 4040:4040
      - 6066:6066
      - 7077:7077
      - 8080:8080
    volumes:
      - ./conf/master:/conf
      - ./data:/tmp/data      
      - ./win_utils:/usr/hadoop-3.0.0/bin

  worker: #Worker node for spark
    image: gettyimages/spark
    command: bin/spark-class org.apache.spark.deploy.worker.Worker spark://master:7077
    hostname: worker
    environment:
      SPARK_CONF_DIR: /conf
      SPARK_WORKER_CORES: 2
      SPARK_WORKER_MEMORY: 1g
      SPARK_WORKER_PORT: 8882
      SPARK_WORKER_WEBUI_PORT: 8082
      SPARK_PUBLIC_DNS: localhost
    links:
      - master
    expose:
      - 7012
      - 7013
      - 7014
      - 7015
      - 8881
    ports:
      - 8082:8082
    volumes:
      - ./conf/worker:/conf
      - ./data:/tmp/data
      - ./win_utils:/usr/hadoop-3.0.0/bin

У меня Pyspark 2.4.1, попробуйте подключиться к:

from pyspark import SparkContext, SparkConf 
appName = "testsparkapp" 
master = "spark://localhost:7077" 
conf = SparkConf().setAppName(appName).setMaster(master)
sc = SparkContext(conf=conf) 

Python журналы ошибок:

Py4JJavaError: An error occurred while calling None.org.apache.spark.api.java.JavaSparkContext.
: java.lang.NullPointerException
    at org.apache.spark.storage.BlockManagerMaster.registerBlockManager(BlockManagerMaster.scala:66)
    at org.apache.spark.storage.BlockManager.initialize(BlockManager.scala:464)
    at org.apache.spark.SparkContext.<init>(SparkContext.scala:579)
    at org.apache.spark.api.java.JavaSparkContext.<init>(JavaSparkContext.scala:58)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)

Docker журналы контейнеров:

2020-06-19 06:07:15,847 ERROR server.TransportRequestHandler: Error while invoking RpcHandler#receive() for one-way message.

java.io.InvalidClassException: org.apache.spark.deploy.ApplicationDescription; local class incompatible: stream classdesc serialVersionUID = 1574364215946805297, local class serialVersionUID = 6543101073799644159

at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:699)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751)

Я прочитал несоответствие

Версии Pyspark и Spark совпадают с spark-submit --version возвращает 2.4.1, так что pip зависает для pyspark.

Имеет ли значение версия Spark У меня на локальной машине (3.0.0)? Если да, то какой смысл иметь Docker?

Спасибо.

1 Ответ

0 голосов
/ 19 июня 2020

Хорошо, очевидно, да, это важно. Версии Pyspark и Spark должны совпадать, это помогло:

Может ли PySpark работать без Spark?

...