Hortonworks,Eclipse和Kerberos客户端(身份验证,如何?)

时间:2017-04-05 21:45:39

标签: eclipse apache-spark yarn kerberos bigdata

大家好,我们有一个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

启动SparkUI      

17/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身份验证请求。整个过程应该是什么样的,什么是正确的方法

谢谢

0 个答案:

没有答案