You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@spark.apache.org by "Hyukjin Kwon (JIRA)" <ji...@apache.org> on 2019/04/25 05:50:00 UTC

[jira] [Resolved] (SPARK-27554) org.apache.hadoop.security.AccessControlException: Client cannot authenticate via:[TOKEN, KERBEROS]

     [ https://issues.apache.org/jira/browse/SPARK-27554?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Hyukjin Kwon resolved SPARK-27554.
----------------------------------
    Resolution: Invalid

No evidence that it's an issue in Spark. Probably it will be a problem about Kerberos in your env setup. check if you did {{kinit}} first.

> org.apache.hadoop.security.AccessControlException: Client cannot authenticate via:[TOKEN, KERBEROS]
> ---------------------------------------------------------------------------------------------------
>
>                 Key: SPARK-27554
>                 URL: https://issues.apache.org/jira/browse/SPARK-27554
>             Project: Spark
>          Issue Type: Bug
>          Components: Scheduler
>    Affects Versions: 2.4.0, 2.4.1
>         Environment: cdh5.16.1
> spark2.4.0
> spark2.4.1
> spark2.4.2
>            Reporter: Jepson
>            Priority: Major
>   Original Estimate: 96h
>  Remaining Estimate: 96h
>
> {code}
> #basic env 
>  JAVA_HOME=/usr/java/jdk1.8.0_181
>  HADOOP_CONF_DIR=/etc/hadoop/conf
>  export SPARK_HOME=/opt/software/spark/spark-2.4.2
> {code}
> {code}
> #project env
>  KERBEROS_USER=hdfs@HADOOP.COM
>  KERBEROS_USER_KEYTAB=/etc/kerberos/hdfs.keytab
>  PROJECT_MAIN_CLASS=com.jy.dwexercise.OrderDeliveryModel
>  PROJECT_JAR=/opt/maintain/scripts/bas-1.0-SNAPSHOT.jar
> {code}
> {code}
> #spark resource
>  DRIVER_MEMORY=4G
>  EXECUTORS_NUM=20
>  EXECUTOR_MEMORY=6G
>  EXECUTOR_VCORES=4
>  QUEQUE=idss
> {code}
> {code}
> #submit job
>  /opt/software/spark/spark-2.4.2/bin/spark-submit \
>  --master yarn \
>  --deploy-mode cluster \
>  --queue ${QUEQUE} \
>  --driver-memory ${DRIVER_MEMORY} \
>  --num-executors ${EXECUTORS_NUM} \
>  --executor-memory ${EXECUTOR_MEMORY} \
>  --executor-cores ${EXECUTOR_VCORES} \
>  --principal ${KERBEROS_USER} \
>  --keytab ${KERBEROS_USER_KEYTAB} \
>  --class ${PROJECT_MAIN_CLASS} \
>  --conf "spark.yarn.archive=hdfs://jybigdata/spark/spark-archive-20190422.zip" \
>  --conf "spark.sql.autoBroadcastJoinThreshold=20971520" \
>  ${PROJECT_JAR}
> {code}
>  
> {code}
> *ERROR log:*
> 19/04/24 13:35:07 INFO ConfiguredRMFailoverProxyProvider: Failing over to rm78
>  19/04/24 13:35:07 WARN UserGroupInformation: PriviledgedActionException as:hdfs (auth:SIMPLE) cause:org.apache.hadoop.security.AccessControlException: Client cannot authenticate via:[TOKEN, KERBEROS]
>  19/04/24 13:35:07 WARN Client: Exception encountered while connecting to the server : org.apache.hadoop.security.AccessControlException: Client cannot authenticate via:[TOKEN, KERBEROS]
>  19/04/24 13:35:07 WARN UserGroupInformation: PriviledgedActionException as:hdfs (auth:SIMPLE) cause:java.io.IOException: org.apache.hadoop.security.AccessControlException: Client cannot authenticate via:[TOKEN, KERBEROS]
>  19/04/24 13:35:07 INFO RetryInvocationHandler: Exception while invoking getClusterMetrics of class ApplicationClientProtocolPBClientImpl over rm78 after 10 fail over attempts. Trying to fail over immediately.
>  java.io.IOException: Failed on local exception: java.io.IOException: org.apache.hadoop.security.AccessControlException: Client cannot authenticate via:[TOKEN, KERBEROS]; Host Details : local host is: "hadoopnode143/192.168.209.143"; destination host is: "hadoopmanager136":8032; 
>  at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:772)
>  at org.apache.hadoop.ipc.Client.call(Client.java:1508)
>  at org.apache.hadoop.ipc.Client.call(Client.java:1441)
>  at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:231)
>  at com.sun.proxy.$Proxy25.getClusterMetrics(Unknown Source)
>  at org.apache.hadoop.yarn.api.impl.pb.client.ApplicationClientProtocolPBClientImpl.getClusterMetrics(ApplicationClientProtocolPBClientImpl.java:202)
>  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  at java.lang.reflect.Method.invoke(Method.java:498)
>  at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:258)
>  at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:104)
>  at com.sun.proxy.$Proxy26.getClusterMetrics(Unknown Source)
>  at org.apache.hadoop.yarn.client.api.impl.YarnClientImpl.getYarnClusterMetrics(YarnClientImpl.java:483)
>  at org.apache.spark.deploy.yarn.Client$$anonfun$submitApplication$1.apply(Client.scala:164)
>  at org.apache.spark.deploy.yarn.Client$$anonfun$submitApplication$1.apply(Client.scala:164)
>  at org.apache.spark.internal.Logging$class.logInfo(Logging.scala:54)
>  at org.apache.spark.deploy.yarn.Client.logInfo(Client.scala:59)
>  at org.apache.spark.deploy.yarn.Client.submitApplication(Client.scala:163)
>  at org.apache.spark.scheduler.cluster.YarnClientSchedulerBackend.start(YarnClientSchedulerBackend.scala:57)
>  at org.apache.spark.scheduler.TaskSchedulerImpl.start(TaskSchedulerImpl.scala:183)
>  at org.apache.spark.SparkContext.<init>(SparkContext.scala:501)
>  at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2520)
>  at org.apache.spark.sql.SparkSession$Builder$$anonfun$7.apply(SparkSession.scala:935)
>  at org.apache.spark.sql.SparkSession$Builder$$anonfun$7.apply(SparkSession.scala:926)
>  at scala.Option.getOrElse(Option.scala:121)
>  at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:926)
>  at com.jiuye.dwexercise.OrderDeliveryModel$.<init>(OrderDeliveryModel.scala:25)
>  at com.jiuye.dwexercise.OrderDeliveryModel$.<clinit>(OrderDeliveryModel.scala)
>  at com.jiuye.dwexercise.OrderDeliveryModel$$anonfun$5.apply(OrderDeliveryModel.scala:55)
>  at com.jiuye.dwexercise.OrderDeliveryModel$$anonfun$5.apply(OrderDeliveryModel.scala:55)
>  at org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIteratorForCodegenStage49.processNext(Unknown Source)
>  at org.apache.spark.sql.execution.BufferedRowIterator.hasNext(BufferedRowIterator.java:43)
>  at org.apache.spark.sql.execution.WholeStageCodegenExec$$anonfun$13$$anon$1.hasNext(WholeStageCodegenExec.scala:636)
>  at org.apache.spark.sql.execution.SparkPlan$$anonfun$2.apply(SparkPlan.scala:255)
>  at org.apache.spark.sql.execution.SparkPlan$$anonfun$2.apply(SparkPlan.scala:247)
>  at org.apache.spark.rdd.RDD$$anonfun$mapPartitionsInternal$1$$anonfun$apply$24.apply(RDD.scala:836)
>  at org.apache.spark.rdd.RDD$$anonfun$mapPartitionsInternal$1$$anonfun$apply$24.apply(RDD.scala:836)
>  at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)
>  at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:324)
>  at org.apache.spark.rdd.RDD.iterator(RDD.scala:288)
>  at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)
>  at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:324)
>  at org.apache.spark.rdd.RDD.iterator(RDD.scala:288)
>  at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)
>  at org.apache.spark.scheduler.Task.run(Task.scala:121)
>  at org.apache.spark.executor.Executor$TaskRunner$$anonfun$10.apply(Executor.scala:408)
>  at org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1360)
>  at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:414)
>  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>  at java.lang.Thread.run(Thread.java:748)
>  Caused by: java.io.IOException: org.apache.hadoop.security.AccessControlException: Client cannot authenticate via:[TOKEN, KERBEROS]
>  at org.apache.hadoop.ipc.Client$Connection$1.run(Client.java:718)
>  at java.security.AccessController.doPrivileged(Native Method)
>  at javax.security.auth.Subject.doAs(Subject.java:422)
>  at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1924)
>  at org.apache.hadoop.ipc.Client$Connection.handleSaslConnectionFailure(Client.java:681)
>  at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:769)
>  at org.apache.hadoop.ipc.Client$Connection.access$3000(Client.java:396)
>  at org.apache.hadoop.ipc.Client.getConnection(Client.java:1557)
>  at org.apache.hadoop.ipc.Client.call(Client.java:1480)
>  ... 50 more
>  Caused by: org.apache.hadoop.security.AccessControlException: Client cannot authenticate via:[TOKEN, KERBEROS]
>  at org.apache.hadoop.security.SaslRpcClient.selectSaslClient(SaslRpcClient.java:172)
>  at org.apache.hadoop.security.SaslRpcClient.saslConnect(SaslRpcClient.java:396)
>  at org.apache.hadoop.ipc.Client$Connection.setupSaslConnection(Client.java:594)
>  at org.apache.hadoop.ipc.Client$Connection.access$2000(Client.java:396)
>  at org.apache.hadoop.ipc.Client$Connection$2.run(Client.java:761)
>  at org.apache.hadoop.ipc.Client$Connection$2.run(Client.java:757)
>  at java.security.AccessController.doPrivileged(Native Method)
>  at javax.security.auth.Subject.doAs(Subject.java:422)
>  at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1924)
>  at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:756)
>  ... 53 more
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@spark.apache.org
For additional commands, e-mail: issues-help@spark.apache.org