大家好,我们有一个kerberized HDP(Hortonworks)集群,我们可以从Spark-Submit(CLI),Talend Big Data运行Spark作业,但不能从Eclipse运行。
我们有一台安装了Eclipse的Windows客户机,并且配置了MIT windows Kerberos Client(TGT配置)。目标是使用eclipse运行Spark作业。与Spark相关的Java代码部分可以通过CLI进行操作和测试。下面提到了这份工作代码的一部分。
private void setConfigurationProperties()
{
try{
sConfig.setAppName("abcd-name");
sConfig.setMaster("yarn-client");
sConfig.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer");
sConfig.set("spark.hadoop.yarn.resourcemanager.address", "rs.abcd.com:8032"); sConfig.set("spark.hadoop.yarn.resourcemanager.scheduler.address","rs.abcd.com:8030");
sConfig.set("spark.hadoop.mapreduce.jobhistory.address","rs.abcd.com:10020");
sConfig.set("spark.hadoop.yarn.app.mapreduce.am.staging-dir", "/dir");
sConfig.set("spark.executor.memory", "2g");
sConfig.set("spark.executor.cores", "4");
sConfig.set("spark.executor.instances", "24");
sConfig.set("spark.yarn.am.cores", "24");
sConfig.set("spark.yarn.am.memory", "16g");
sConfig.set("spark.eventLog.enabled", "true");
sConfig.set("spark.eventLog.dir", "hdfs:///spark-history");
sConfig.set("spark.shuffle.memoryFraction", "0.4");
sConfig.set("spark.hadoop." + "mapreduce.application.framework.path","/hdp/apps/version/mapreduce/mapreduce.tar.gz#mr-framework");
sConfig.set("spark.local.dir", "/tmp");
sConfig.set("spark.hadoop.yarn.resourcemanager.principal", "rm/_HOST@ABCD.COM");
sConfig.set("spark.hadoop.mapreduce.jobhistory.principal", "jhs/_HOST@ABCD.COM");
sConfig.set("spark.hadoop.dfs.namenode.kerberos.principal", "nn/_HOST@ABCD.COM");
sConfig.set("spark.hadoop.fs.defaultFS", "hdfs://hdfs.abcd.com:8020");
sConfig.set("spark.hadoop.dfs.client.use.datanode.hostname", "true"); }
}
当我们运行代码时,会弹出以下错误:
17/04/05 23:37:06 INFO Remoting:启动远程处理
17/04/05 23:37:06 INFO Remoting:Remoting开始了;收听地址:[akka.tcp://sparkDriverActorSystem@1.1.1.1:54356]
17/04/05 23:37:06 INFO Utils:成功启动服务&sparkDriverActorSystem'在54356港口。
17/04/05 23:37:06 INFO SparkEnv:注册MapOutputTracker 17/04/05 23:37:06 INFO SparkEnv:注册BlockManagerMaster
17/04/05 23:37:06 INFO DiskBlockManager:在C:\ tmp \ blockmgr-baee2441-1977-4410-b52f-4275ff35d6c1
创建本地目录17/04/05 23:37:06 INFO MemoryStore:MemoryStore的容量为2.4 GB
17/04/05 23:37:06 INFO SparkEnv:注册OutputCommitCoordinator
17/04/05 23:37:07 INFO Utils:成功开始服务' SparkUI'在4040号港口。
17/04/05 23:37:07 INFO SparkUI:在http://1.1.1.1:4040
启动SparkUI17/04/05 23:37:07 INFO RMProxy:在rs.abcd.com/1.1.1.1:8032上连接到ResourceManager
17/04/05 23:37:07错误SparkContext:初始化SparkContext时出错。
org.apache.hadoop.security.AccessControlException:未启用SIMPLE身份验证。可用:[TOKEN,KERBEROS]
引起:org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException):未启用SIMPLE身份验证。可用:[TOKEN,KERBEROS]
17/04/05 23:37:07 INFO SparkUI:在http://1.1.1.1:4040
停止Spark Web UI
请指导我们如何在java代码中指定Kerberos身份验证方法而不是SIMPLE。或者如何指示客户端进行Kerberos身份验证请求。整个过程应该是什么样的,什么是正确的方法
谢谢