Mesos with Spark - Невозможно зарегистрировать приложение с внешним сервисом случайного воспроизведения. - PullRequest
0 голосов
/ 22 мая 2018

Я использую отдельную Spark с Mesos.Когда я запускаю серию операторов SQL в контексте SparkSQL, оператор успешно выполняется, но меня раздражает WARN, например:

 WARN MesosExternalShuffleClient: Unable to register app b55184f5-e851-4e71-8c37-398ef30f71da-0000 with external shuffle service. Please manually remove shuffle data after driver exit. Error: java.lang.RuntimeException: java.lang.UnsupportedOperationException: Unexpected message: org.apache.spark.network.shuffle.protocol.mesos.RegisterDriver@7186de48
        at org.apache.spark.network.shuffle.ExternalShuffleBlockHandler.handleMessage(ExternalShuffleBlockHandler.java:120)
        at org.apache.spark.network.shuffle.ExternalShuffleBlockHandler.receive(ExternalShuffleBlockHandler.java:81)
        at org.apache.spark.network.server.TransportRequestHandler.processRpcRequest(TransportRequestHandler.java:187)
        at org.apache.spark.network.server.TransportRequestHandler.handle(TransportRequestHandler.java:111)
        at org.apache.spark.network.server.TransportChannelHandler.channelRead(TransportChannelHandler.java:118)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
        at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
        at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
        at org.apache.spark.network.util.TransportFrameDecoder.channelRead(TransportFrameDecoder.java:85)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
        at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1359)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
        at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:935)
        at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:138)
        at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:645)
        at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:580)
        at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:497)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:459)
        at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
        at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:138)
        at java.lang.Thread.run(Thread.java:748)

Я не смог найти решение этой проблемы.

Мои соответствующие значения по умолчанию:

spark.mesos.coarse                                              true
spark.dynamicAllocation.enabled                                 true
spark.shuffle.service.enabled                                   true
spark.network.timeout                                           3600s
spark.shuffle.io.connectionTimeout                              3600s
spark.dynamicAllocation.minExecutors                            0
spark.dynamicAllocation.maxExecutors                            3
spark.dynamicAllocation.initialExecutors                        0
spark.dynamicAllocation.executorIdleTimeout                     60s
spark.dynamicAllocation.schedulerBacklogTimeout                 5s
spark.dynamicAllocation.sustainedSchedulerBacklogTimeout        5s

start-start-mesos-shuffle-service.sh:

exec "${SPARK_HOME}/sbin"/spark-daemon.sh start org.apache.spark.deploy.mesos.MesosExternalShuffleService 1

Оцените любые указатели.

1 Ответ

0 голосов
/ 23 мая 2018

kirylm,

Если вы используете версию Apache Mesos (DC / OS) для Mesosphere, у меня есть учебник, который включает в себя пример запуска службы Spark External Shuffle на Mesos и включает в себя пример задания Sparkкоторый использует службу внешнего перемешивания.

Имейте в виду, что при запуске службы внешнего перемешивания Spark на Mesos по умолчанию будет использоваться только хранилище, доступное через изолированную программную среду Mesos (которая может быть слишком маленькой).Если вы хотите, чтобы служба shuffle использовала временное хранилище (тома Mesos MOUNT), вам необходимо запустить службу Spark shuffle с такими параметрами:

"container": {"type":" DOCKER "," volume ": [{" persistent ": {" size ": 99500," type ":" mount "}," mode ":" RW "," containerPath ":" spark_local_dir "}],

Учебное пособие по стеку SMACK можно найти здесь:

https://github.com/gregpalmr/smack-stack-tutorial

Основной сценарий оболочки BASH, который запускает диспетчер Spark, Spark ExternalСервис Shuffles и сервер истории Spark расположены здесь:

https://github.com/gregpalmr/smack-stack-tutorial/blob/master/scripts/start-smackstack.sh

Пример отправки Spark, использующей службу внешнего перемешивания Spark, находится здесь:

https://github.com/gregpalmr/smack-stack-tutorial/blob/master/scripts/run-sample-spark-hdfs-job.sh

Надеюсь, это поможет,

Грег Палмер, Мезосфера

...