Hello , I met this very weird issue, while easy to reproduce, and stuck me for more than 1 day .I suspect this may be an issue/bug related to the class loader. Can you help confirm the root cause ?
I want to specify a customized Hadoop configuration set instead of those on the class path(we have a few hadoop clusters and all have Kerberos security and I want to support different configuration). Code/error like below. The work around I found is to place a core-site.xml on the class path with below 2 properties will work. By checking the rpc code under org.apache.hadoop.ipc.RPC, I suspect the RPC code may not see the UGI class in the same classloader. So UGI is initialized with default value on the classpth which is simple authentication. core-site.xml with the security setup on the classpath: <configuration> <property> <name>hadoop.security.authentication</name> <value>kerberos</value> </property> <property> <name>hadoop.security.authorization</name> <value>true</value> </property> </configuration> ------------error------------------ 2673 [main] DEBUG org.apache.hadoop.hdfs.protocol.datatransfer.sasl.DataTransferSaslUtil - DataTransferProtocol using SaslPropertiesResolver, configured QOP dfs.data.transfer.protection = privacy, configured class dfs.data.transfer.saslproperties.resolver.class = class org.apache.hadoop.security.WhitelistBasedResolver 2696 [main] DEBUG org.apache.hadoop.service.AbstractService - Service: org.apache.hadoop.yarn.client.api.impl.YarnClientImpl entered state INITED 2744 [main] DEBUG org.apache.hadoop.security.UserGroupInformation - PrivilegedAction as:xxxxx@xxxxxxxCOM (auth:KERBEROS) from:org.apache.hadoop.yarn.client.RMProxy.getProxy(RMProxy.java:136) // 2746 [main] DEBUG org.apache.hadoop.yarn.ipc.YarnRPC - Creating YarnRPC for org.apache.hadoop.yarn.ipc.HadoopYarnProtoRPC 2746 [main] DEBUG org.apache.hadoop.yarn.ipc.HadoopYarnProtoRPC - Creating a HadoopYarnProtoRpc proxy for protocol interface org.apache.hadoop.yarn.api.ApplicationClientProtocol 2801 [main] DEBUG org.apache.hadoop.ipc.Client - getting client out of cache: org.apache.hadoop.ipc.Client@748fe51d 2981 [main] DEBUG org.apache.hadoop.service.AbstractService - Service org.apache.hadoop.yarn.client.api.impl.YarnClientImpl is started 3004 [main] DEBUG org.apache.hadoop.ipc.Client - The ping interval is 60000 ms. 3005 [main] DEBUG org.apache.hadoop.ipc.Client - Connecting to yarn-rm-1/xxxxx:8032 3019 [IPC Client (2012095985) connection to yarn-rm-1/xxxxx:8032 from xxxxx@xxxxxx] DEBUG org.apache.hadoop.ipc.Client - IPC Client (2012095985) connection to yarn-rm-1/xxxxx:8032 from xxxxx@xxxxxx: starting, having connections 1 3020 [IPC Parameter Sending Thread #0] DEBUG org.apache.hadoop.ipc.Client - IPC Client (2012095985) connection to yarn-rm-1/xxxxx:8032 from xxxxx@xxxxxx sending #0 3025 [IPC Client (2012095985) connection to yarn-rm-1/xxxxx:8032 from xxxxx@xxxxxx] DEBUG org.apache.hadoop.ipc.Client - IPC Client (2012095985) connection to yarn-rm-1/xxxxx:8032 from xxxxx@xxxxxx got value #-1 3026 [IPC Client (2012095985) connection to yarn-rm-1/xxxxx:8032 from xxxxx@xxxxxx] DEBUG org.apache.hadoop.ipc.Client - closing ipc connection to yarn-rm-1/xxxxx:8032: SIMPLE authentication is not enabled. Available:[TOKEN, KERBEROS] org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): SIMPLE authentication is not enabled. Available:[TOKEN, KERBEROS] at org.apache.hadoop.ipc.Client$Connection.receiveRpcResponse(Client.java:1131) at org.apache.hadoop.ipc.Client$Connection.run(Client.java:979) ---------------code------------------- Configuration hc = new Configuration(false); hc.addResource("myconf /yarn-site.xml"); hc.addResource("myconf/core-site.xml"); hc.addResource("myconf/hdfs-site.xml"); hc.addResource("myconf/hive-site.xml"); SparkConf sc = new SparkConf(true); // add config in spark conf as no xml in the classpath except those “default.xml” from Hadoop jars. hc.forEach(entry-> { if(entry.getKey().startsWith("hive")) { sc.set(entry.getKey(), entry.getValue()); }else { sc.set("spark.hadoop."+entry.getKey(), entry.getValue()); } }); UserGroupInformation.setConfiguration(hc); UserGroupInformation.loginUserFromKeytab(Principal, Keytab); System.out.println("####spark-conf######"); System.out.println(sc.toDebugString()); SparkSession sparkSessesion= SparkSession .builder() .master("yarn-client") //"yarn-client", "local" .config(sc) .appName(SparkEAZDebug.class.getName()) .enableHiveSupport() .getOrCreate(); Thanks very much. Keith