Проблема с MesosSchedulerDriver с использованием PySpark - PullRequest
0 голосов
/ 06 марта 2019

У меня проблема с подключением pyspark к Mesos.Я пытаюсь запустить Jupyter в DC / OS.Я хочу подключить Jupyter к Spark, чтобы использовать ресурсы Mesos.

Работа в локальном режиме работает нормально, но как только я пытаюсь использовать Spark в Mesos, я получаю сообщение об ошибке.Эта ошибка возникает почти мгновенно, и не имеет значения, работает диспетчер Spark или нет.

Я использую Spark 2.3.2 (протестировано с 2.4.0, та же проблема).В Spark есть файлы Mesos, а также указан путь к файлу libmesos.Что я делаю не так?

Вот часть кода:

import pyspark
conf = pyspark.SparkConf()

# Enable logging
conf.set('spark.eventLog.enabled', True);
conf.set('spark.eventLog.dir', '/tmp/');

# Use all cores on all machines
conf.set('spark.num.executors', 1)
conf.set('spark.executor.memory', '4g')
conf.set('spark.executor.cores', 1)

# Set the parent
#conf.set('spark.master', 'local[8]')
conf.set('spark.master', 'mesos://leader.mesos:5050')
conf.getAll()

sc = pyspark.SparkContext(appName="ETL processor", conf = conf)
sc
from timeit import default_timer as timer

# Parallelize making all labels in Spark
start = timer()
sc.parallelize(list(range(0,N_PARTITIONS)), numSlices=3).map(lambda x: example_method(x)).collect()
sc.stop()
end = timer()

Вот полное сообщение об ошибке:

Py4JJavaError                             Traceback (most recent call last)
<ipython-input-117-56fddbf03013> in <module>
     21 conf.getAll()
     22 
---> 23 sc = pyspark.SparkContext(appName="ETL processor", conf = conf)
     24 sc
     25 from timeit import default_timer as timer

~/spark-2.3.2-bin-hadoop2.6/python/pyspark/context.py in __init__(self, master, appName, sparkHome, pyFiles, environment, batchSize, serializer, conf, gateway, jsc, profiler_cls)
    116         try:
    117             self._do_init(master, appName, sparkHome, pyFiles, environment, batchSize, serializer,
--> 118                           conf, jsc, profiler_cls)
    119         except:
    120             # If an error occurs, clean up in order to allow future SparkContext creation:

~/spark-2.3.2-bin-hadoop2.6/python/pyspark/context.py in _do_init(self, master, appName, sparkHome, pyFiles, environment, batchSize, serializer, conf, jsc, profiler_cls)
    178 
    179         # Create the Java SparkContext through Py4J
--> 180         self._jsc = jsc or self._initialize_context(self._conf._jconf)
    181         # Reset the SparkConf to the one actually used by the SparkContext in JVM.
    182         self._conf = SparkConf(_jconf=self._jsc.sc().conf())

~/spark-2.3.2-bin-hadoop2.6/python/pyspark/context.py in _initialize_context(self, jconf)
    288         Initialize SparkContext in function to allow subclass specific initialization
    289         """
--> 290         return self._jvm.JavaSparkContext(jconf)
    291 
    292     @classmethod

spark-2.3.2-bin-hadoop2.6/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py in __call__(self, *args)
   1523         answer = self._gateway_client.send_command(command)
   1524         return_value = get_return_value(
-> 1525             answer, self._gateway_client, None, self._fqn)
   1526 
   1527         for temp_arg in temp_args:

spark-2.3.2-bin-hadoop2.6/python/lib/py4j-0.10.7-src.zip/py4j/protocol.py in get_return_value(answer, gateway_client, target_id, name)
    326                 raise Py4JJavaError(
    327                     "An error occurred while calling {0}{1}{2}.\n".
--> 328                     format(target_id, ".", name), value)
    329             else:
    330                 raise Py4JError(

Py4JJavaError: An error occurred while calling None.org.apache.spark.api.java.JavaSparkContext.
: java.lang.NoClassDefFoundError: Could not initialize class org.apache.mesos.MesosSchedulerDriver
    at org.apache.spark.scheduler.cluster.mesos.MesosSchedulerUtils$class.createSchedulerDriver(MesosSchedulerUtils.scala:105)
    at org.apache.spark.scheduler.cluster.mesos.MesosCoarseGrainedSchedulerBackend.createSchedulerDriver(MesosCoarseGrainedSchedulerBackend.scala:54)
    at org.apache.spark.scheduler.cluster.mesos.MesosCoarseGrainedSchedulerBackend.start(MesosCoarseGrainedSchedulerBackend.scala:207)
    at org.apache.spark.scheduler.TaskSchedulerImpl.start(TaskSchedulerImpl.scala:164)
    at org.apache.spark.SparkContext.<init>(SparkContext.scala:500)
    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)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:247)
    at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)
    at py4j.Gateway.invoke(Gateway.java:238)
    at py4j.commands.ConstructorCommand.invokeConstructor(ConstructorCommand.java:80)
    at py4j.commands.ConstructorCommand.execute(ConstructorCommand.java:69)
    at py4j.GatewayConnection.run(GatewayConnection.java:238)
    at java.lang.Thread.run(Thread.java:748)
...