Spark驱动文件服务器返回401未授权

时间:2016-10-11 21:17:36

标签: file http apache-spark server authorization

使用Spark 1.6.1,驱动程序在随机端口上启动http文件服务器,工作人员应该访问这些服务器以获取jar。在我的设置中,当试图获取jar时,工作者从文件服务器获得401未授权。有关如何在驱动程序上的此文件服务器上配置授权的任何想法吗?

驱动程序代码在Scala中使用SparkConf来设置这样的jar:

val conf = new SparkConf()
.setAppName("myApp")
.setMaster(masterUrl)
.set("spark.task.maxFailures", "1")
.set("spark.executor.memory", sparkExecutorMemory)     
.set("spark.metrics.conf.driver.sink.jmx.class", "org.apache.spark.metrics.sink.JmxSink")
.set("spark.authenticate", "true")
.set("spark.authenticate.secret", secret)
.setJars(jarsInClasspath)

val sc: SparkContext = SparkContext.getOrCreate(conf)
sc.parallelize(myCollection).map (myFunc).collect

spark.authenticate配置在所有三个:master,driver和slave,具有相同的秘密

在工人身上,我看到了这两个错误:

Fetching http://11.163.0.285:51712/jars/libSetPluginTypes.jar with timestamp 1476207005509

java.net.ProtocolException: Server redirected too many  times (20)

过了一会儿,这个:

java.net.ConnectException: Cannot assign requested address

查看驱动程序上的tcpdump:

<title>Error 401 Unauthorized</title>
</head>
<body>
<h2>HTTP ERROR: 401</h2>
<p>Problem accessing /jars/libSetPluginTypes.jar. Reason:
<pre>    Unauthorized</pre></p>
<hr /><i><small>Powered by Jetty://</small></i>

请注意,如果我手动将jar放在slave的类路径上,而不是在驱动程序端执行setJars,那么这一切都有效。

任何帮助将不胜感激。谢谢!

0 个答案:

没有答案