【问题解决】python任务提交到spark集群报错,提交本机没问题:requirement failed: Can only call getServletHandlers on a runni

原创 2018年04月17日 19:41:58

在Pycharm里执行python程序提交到spark集群一直报错:requirement failed: Can only call getServletHandlers on a running MetricsSystem

本地提交到本机Spark没问题。

代码片段如下,用的spark官网的例子(点击打开链接):

logFile = "/home/ubutnu/spark_2_2_1/README.md"
sc = SparkContext("local","Simple App")
# sc = SparkContext(master="spark://192.168.3.207:7077",appName="Simple_App")
错误:
2018-04-17 17:11:09 ERROR StandaloneSchedulerBackend:70 - Application has been killed. Reason: All masters are unresponsive! Giving up.
2018-04-17 17:11:09 WARN  StandaloneSchedulerBackend:66 - Application ID is not initialized yet.
2018-04-17 17:11:09 WARN  StandaloneAppClient$ClientEndpoint:66 - Drop UnregisterApplication(null) because has not yet connected to master
2018-04-17 17:11:10 ERROR SparkContext:91 - Error initializing SparkContext.
java.lang.IllegalArgumentException: requirement failed: Can only call getServletHandlers on a running MetricsSystem

at scala.Predef$.require(Predef.scala:224)
at org.apache.spark.metrics.MetricsSystem.getServletHandlers(MetricsSystem.scala:91)
at org.apache.spark.SparkContext.<init>(SparkContext.scala:515)
at org.apache.spark.api.java.JavaSparkContext.<init>(JavaSparkContext.scala:58)

……

查看集群master节点log,发现收到请求了但报错:

18/04/17 17:18:57 ERROR TransportRequestHandler: Error while invoking RpcHandler#receive() for one-way message.
java.io.InvalidClassException: org.apache.spark.rpc.RpcEndpointRef; local class incompatible: stream classdesc serialVersionUID = -1329125091869941550, local class serialVersionUID = 18358321

37613908542
        at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:687)
        at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1876)
        at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1745)

        at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1876)

……

定位问题:
1)将python文件放到master机器进行submit,单机或集群方式,都正常执行,说明程序没有问题,集群也没有问题:
spark-submit --master local  ~/test.py
spark-submit --master spark://192.168.3.207:7077  ~/test.py
2)将python文件放到本机,调用Spark目录下的/spark-submit提交任务,报同样的错误:
cd C:\spark-2.3.0-bin-hadoop2.7\bin
spark-submit --master spark://192.168.3.207:7077 ..\examples\src\main\python\pi.py

错误信息同上。

结合上面的master错误,是收到了请求但处理消息有问题。像是对象序列化后的id值不一致,感觉应该是两边jdk、或者spark版本不一致导致的。查看java -version,都是1.8,排除。spark版本,集群是2.2.1,我本机是2.3.0,比集群版本高。

解决办法:统一Spark版本。将本机也改为2.2.1版本,并修改环境变量,重启电脑。即可以正常提交任务。

不过在提交任务时,又遇到新问题:WARN TaskSchedulerImpl: Initial job has not accepted any resources。这个在另外一篇博文里解决->点击打开链接


SparkContext的初始化(季篇)——测量系统、ContextCleaner等组件介绍

Spark按照Instance的不同,区分为Master、Worker、Application、Driver和Executor。Spark目前提供的Sink有ConsoleSink、CsvSink、J...
  • beliefer
  • beliefer
  • 2016-03-08 09:11:51
  • 11143

Spark测量系统 MetricsSystem

Spark测量系统,由指定的instance创建,由source、sink组成,周期性地从source获取指标然后发送到sink,其中instance、source、sink的概念如下: Insta...
  • u013597009
  • u013597009
  • 2016-12-30 17:26:30
  • 1388

spark on yarn 的那些坑

在公司6个节点的测试集群运行得好好的,结果也很正常,然后放上60个节点的预生产环境,我勒个擦,搞了我两天,主要是生产环境的那些家伙不配合,一个问题搞得拖啊拖 ,首先是安全认证问题,截取一两个有意义的吧...
  • fjr_huoniao
  • fjr_huoniao
  • 2016-06-08 19:44:20
  • 24724

【问题解决】python任务提交到spark集群报错,提交本机没问题:requirement failed: Can only call getServletHandlers on a runni

在Pycharm里执行python程序提交到spark集群一直报错:requirement failed: Can only call getServletHandlers on a running ...
  • nazhidao
  • nazhidao
  • 2018-04-17 19:41:58
  • 24

Daemon Tool Is A Rootkit ? - The Unknown Driver

rootkit is hot today, everybody wanna write a rootkit, if you often browse USENET, youre gonna see m...
  • iiprogram
  • iiprogram
  • 2006-04-20 10:16:00
  • 2378

spark学习-44-Spark的测量系统MetricsSystem

1。 MetricsSystem介绍监控是一个大系统完成后最重要的一部分。MetricsSystem 比较好理解,一般是为了衡量系统的各种指标的度量系统。算是一个key-value形态的东西。举个比...
  • qq_21383435
  • qq_21383435
  • 2017-11-28 21:21:30
  • 323

spark-core_10: org.apache.spark.deploy.master.Master源码解析2--Master这个RpcEndPoint是如何初始化Master

承接上文/**   * RpcEndpoint的生命周期又是: onStart -&amp;gt; receive(receiveAndReply)* -&amp;gt; onStop   * 这个M...
  • luyllyl
  • luyllyl
  • 2018-03-26 21:27:32
  • 13

SAE+Servlet+JSP实现微信公众平台OAuth2.0网页授权的使用

本帖最后由 王绪超丶 于 2014-5-23 08:36 编辑 一、微信公众号的申请    略。(本篇为高级接口,连微信公众号都不会申请,那看这个也没用) 二、SAE平台创建应用    其他帖子里有...
  • CSDNones
  • CSDNones
  • 2015-12-16 17:34:08
  • 1371

INFO: TLD skipped. URI: http://java.sun.com/jstl/core_rt is already defined

五月 04, 2017 12:29:23 上午 org.apache.catalina.startup.TaglibUriRule body 信息: TLD skipped. URI: http://...
  • echo_oy
  • echo_oy
  • 2017-05-04 00:34:11
  • 575

Spark提交任务到集群

提交Spark程序到集群与提交MapReduce程序到集群一样,首先要将写好的Spark程序打成jar包,再在Spark-submit下通过命令提交。 Step1:打包程序         通说I...
  • caiandyong
  • caiandyong
  • 2016-07-05 14:54:36
  • 2772
收藏助手
不良信息举报
您举报文章:【问题解决】python任务提交到spark集群报错,提交本机没问题:requirement failed: Can only call getServletHandlers on a runni
举报原因:
原因补充:

(最多只允许输入30个字)