我尝试将 spark 应用程序部署到由 YARN 控制的 kerberized hadoop 集群。 Spark版本为1.5.0-cdh5.5.2。
在超过 10 秒的空闲时间后停止 SparkContext 并初始化一个新的时,我遇到了一个奇怪的异常。
我尝试做一些类似于 this 的事情开发人员,并明确指定了 hdfs 名称节点地址,但没有帮助。
更令人困惑的是,如果我根本不重置 SparkContext 或在此 spark 上下文中执行最后一个命令后不到 10 秒内重置它,一切都会正常工作。
我该如何解决?
这是遇到问题的最小化情况:
package demo;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaSparkContext;
public class App
{
public static void main( String[] args ) throws Exception {
SparkConf sparkConf = new SparkConf();
sparkConf.setAppName("demo");
sparkConf.set("spark.yarn.access.namenodes", "hdfs://hdp:8020");
JavaSparkContext jsc = new JavaSparkContext(sparkConf);
int waiting_time = 10;
System.out.println("Waiting time: " + Integer.toString(waiting_time));
Thread.sleep(waiting_time * 1000);
jsc.stop();
jsc = new JavaSparkContext(sparkConf); // "Delegation token ..." exception here
}
}
引发异常时的堆栈跟踪: https://gist.github.com/anonymous/18e15010010069b119aa0934d6f42726
spark 提交命令:
spark-submit --principal mp@LAGOON --keytab mp.keytab --master yarn-client --class demo.App demo.jar
最佳答案
问题是由这个问题引起的:https://issues.apache.org/jira/browse/SPARK-15754
在 Spark 1.6.2 中它被修复了。
关于hadoop - "Delegation Token can be issued only with kerberos or web authentication"空闲后重启 spark context,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40834482/