Our Community is getting an upgrade! To get everything ready for the relaunch, we’ll be placing the site in read-only mode starting September 21st.
We really appreciate your understanding while we get things set up behind the scenes. Catch up on all the exciting details about the move here.
Need help or have questions? Drop us a line at [email protected]
Created on 02-25-2014 06:17 AM - edited 09-16-2022 01:54 AM
Hi,
after enabling Kerberos security on the cluster (related guideline here) I got stuck at step 15 (Create the hdfs Super User Principal).
At the end I am not able to execute a hadoop command as user hdfs from the cmd-line, like "sudo -u hdfs hadoop dfs -ls /user". After reading some doc's and sites I verified that I have installed the Java security jar's and that the krbtgt principal doesn't have the attribute "requires_preauth".
Problem:
=======
execution of
sudo -u hdfs hadoop dfs -ls /user
fails with error:
""
root@hadoop-pg-2:~# sudo -u hdfs hadoop dfs -ls /user
DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it.
14/02/25 14:32:10 ERROR security.UserGroupInformation: PriviledgedActionException as:hdfs (auth:KERBEROS) cause:javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]
14/02/25 14:32:10 WARN ipc.Client: Exception encountered while connecting to the server : javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]
14/02/25 14:32:10 ERROR security.UserGroupInformation: PriviledgedActionException as:hdfs (auth:KERBEROS) cause:java.io.IOException: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]
ls: Failed on local exception: java.io.IOException: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]; Host Details : local host is: "hadoop-pg-2.cluster/10.147.210.2"; destination host is: "hadoop-pg-2.cluster":8020;
""
Previous steps
============
1. create hdfs principal via kadmin: addprinc hdfs@HADOOP-PG
2. obtain a tgt for user hdfs: kinit hdfs@HADOOP-PG
3. check: klist -f
root@hadoop-pg-2:~# klist -f
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: hdfs@HADOOP-PG
Valid starting Expires Service principal
02/25/14 14:30:32 02/26/14 14:30:29 krbtgt/HADOOP-PG@HADOOP-PG
renew until 03/04/14 14:30:29, Flags: FPRIA
=> thereby I assume authentication for user hdfs worked nicely, since at creation of principal and obtaining the tgt the provided password was accepted....and a tgt was created successfully
4. execute the Hadoop command mentioned above.......results in the error shown above 😞
5. try to renew the ticket: kinit -R . Execute successfully
6. repeat step 4. => same error
7. enable Kerberos debug output and try to run 4. Log:
""
root@hadoop-pg-2:~$ su - hdfs hdfs@hadoop-pg-2:~$ kinit Password for hdfs@HADOOP-PG: hdfs@hadoop-pg-2:~$ klist Ticket cache: FILE:/tmp/krb5cc_996 Default principal: hdfs@HADOOP-PG Valid starting Expires Service principal 02/25/14 14:55:26 02/26/14 14:55:26 krbtgt/HADOOP-PG@HADOOP-PG renew until 03/04/14 14:55:26 hdfs@hadoop-pg-2:~$ hadoop dfs -ls /user DEPRECATED: Use of this script to execute hdfs command is deprecated. Instead use the hdfs command for it. Config name: /etc/krb5.conf >>>KinitOptions cache name is /tmp/krb5cc_996 >>>DEBUG <CCacheInputStream> client principal is hdfs@HADOOP-PG >>>DEBUG <CCacheInputStream> server principal is krbtgt/HADOOP-PG@HADOOP-PG >>>DEBUG <CCacheInputStream> key type: 18 >>>DEBUG <CCacheInputStream> auth time: Tue Feb 25 14:55:26 CET 2014 >>>DEBUG <CCacheInputStream> start time: Tue Feb 25 14:55:26 CET 2014 >>>DEBUG <CCacheInputStream> end time: Wed Feb 26 14:55:26 CET 2014 >>>DEBUG <CCacheInputStream> renew_till time: Tue Mar 04 14:55:26 CET 2014 >>> CCacheInputStream: readFlags() FORWARDABLE; PROXIABLE; RENEWABLE; INITIAL; >>>DEBUG <CCacheInputStream> client principal is hdfs@HADOOP-PG >>>DEBUG <CCacheInputStream> server principal is X-CACHECONF:/krb5_ccache_conf_data/fast_avail/krbtgt/HADOOP-PG@HADOOP-PG >>>DEBUG <CCacheInputStream> key type: 0 >>>DEBUG <CCacheInputStream> auth time: Thu Jan 01 01:00:00 CET 1970 >>>DEBUG <CCacheInputStream> start time: Thu Jan 01 01:00:00 CET 1970 >>>DEBUG <CCacheInputStream> end time: Thu Jan 01 01:00:00 CET 1970 >>>DEBUG <CCacheInputStream> renew_till time: Thu Jan 01 01:00:00 CET 1970 >>> CCacheInputStream: readFlags() >>> unsupported key type found the default TGT: 18 14/02/25 14:55:40 ERROR security.UserGroupInformation: PriviledgedActionException as:hdfs (auth:KERBEROS) cause:javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)] 14/02/25 14:55:40 WARN ipc.Client: Exception encountered while connecting to the server : javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)] 14/02/25 14:55:40 ERROR security.UserGroupInformation: PriviledgedActionException as:hdfs (auth:KERBEROS) cause:java.io.IOException: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)] ls: Failed on local exception: java.io.IOException: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]; Host Details : local host is: "hadoop-pg-2.cluster/10.147.210.2"; destination host is: "hadoop-pg-2.cluster":8020;
""
The message unsupported key type found the default TGT: 18 makes me thinking of missing the Java strong crypto files,but I copied the jar's US_export_policy.jar and local_policy.jar into the folder /usr/lib/jvm/java-7-oracle/jre/lib/security =>
hdfs@hadoop-pg-2:/usr/lib/jvm$ ls -al /usr/lib/jvm/java-7-oracle/jre/lib/security/ total 140 drwxr-xr-x 2 root root 4096 Jan 31 10:30 . drwxr-xr-x 16 root root 4096 Jan 31 10:30 .. -rw-r--r-- 1 root root 2770 Jan 31 10:30 blacklist -rw-r--r-- 1 root root 82586 Jan 31 10:30 cacerts -rw-r--r-- 1 root root 158 Jan 31 10:30 javafx.policy -rw-r--r-- 1 root root 2593 Jan 31 10:30 java.policy -rw-r--r-- 1 root root 17838 Jan 31 10:30 java.security -rw-r--r-- 1 root root 98 Jan 31 10:30 javaws.policy -rw-r--r-- 1 root root 2500 Feb 21 15:41 local_policy.jar -rw-r--r-- 1 root root 0 Jan 31 10:30 trusted.libraries -rw-r--r-- 1 root root 2487 Feb 21 15:41 US_export_policy.jar
I have no idea what to check next, any help appreciated 🙂 (I want to avoid removing AES256 from being supported by Kerberos and thereby recreate all principals or even creating a new Kerberos db...
Created 02-26-2014 03:31 AM
STUPID ME 😉
Re-checking the installation of the JCE files brought me on the right track.
Executing the hadoop-command on the shell was using "old" Java6 and I installed the JCE files just for Java7, since I configured in CM JAVA_HOME to use Java7.
A simple "export JAVA_HOME=/usr/lib/jvm/java-7-oracle/jre" before executing "hadoop dfs ..." on the shell solved this issue.
Created on 02-26-2014 02:18 AM - edited 02-26-2014 02:22 AM
Tried a different approach, sadly resulting in the same problem/error.
I tried to use the hdfs user-principal created by ClouderaManager to submit a hdfs command on the shell, but I still get this "unsupported key type found the default TGT: 18"
Log:
===
#>su - hdfs
#>export HADOOP_OPTS="-Dsun.security.krb5.debug=true"
#>kinit -k -t /var/run/cloudera-scm-agent/process/1947-hdfs-DATANODE/hdfs.keytab hdfs/hadoop-pg-7.cluster
#>kinit -R
#>hadoop dfs -ls /user
DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it.
Config name: /etc/krb5.conf
>>>KinitOptions cache name is /tmp/krb5cc_998
>>>DEBUG <CCacheInputStream> client principal is hdfs/hadoop-pg-7.cluster@HADOOP-PG
>>>DEBUG <CCacheInputStream> server principal is krbtgt/HADOOP-PG@HADOOP-PG
>>>DEBUG <CCacheInputStream> key type: 18
>>>DEBUG <CCacheInputStream> auth time: Wed Feb 26 11:07:49 CET 2014
>>>DEBUG <CCacheInputStream> start time: Wed Feb 26 11:07:55 CET 2014
>>>DEBUG <CCacheInputStream> end time: Thu Feb 27 11:07:55 CET 2014
>>>DEBUG <CCacheInputStream> renew_till time: Wed Mar 05 11:07:49 CET 2014
>>> CCacheInputStream: readFlags() FORWARDABLE; PROXIABLE; RENEWABLE; INITIAL;
>>> unsupported key type found the default TGT: 18
14/02/26 11:08:07 ERROR security.UserGroupInformation: PriviledgedActionException as:hdfs (auth:KERBEROS) cause:javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]
14/02/26 11:08:07 WARN ipc.Client: Exception encountered while connecting to the server : javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]
14/02/26 11:08:07 ERROR security.UserGroupInformation: PriviledgedActionException as:hdfs (auth:KERBEROS) cause:java.io.IOException: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]
ls: Failed on local exception: java.io.IOException: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]; Host Details : local host is: "hadoop-pg-7.cluster/10.147.210.7"; destination host is: "hadoop-pg-2.cluster":8020;
~~~~~~~
#>klist -ef
Ticket cache: FILE:/tmp/krb5cc_998
Default principal: hdfs/hadoop-pg-7.cluster@HADOOP-PG
Valid starting Expires Service principal
02/26/14 11:08:21 02/27/14 11:08:21 krbtgt/HADOOP-PG@HADOOP-PG
renew until 03/05/14 11:07:49, Flags: FPRIT
Etype (skey, tkt): AES-256 CTS mode with 96-bit SHA-1 HMAC, AES-256 CTS mode with 96-bit SHA-1 HMAC
Now what?
Created 02-26-2014 03:31 AM
STUPID ME 😉
Re-checking the installation of the JCE files brought me on the right track.
Executing the hadoop-command on the shell was using "old" Java6 and I installed the JCE files just for Java7, since I configured in CM JAVA_HOME to use Java7.
A simple "export JAVA_HOME=/usr/lib/jvm/java-7-oracle/jre" before executing "hadoop dfs ..." on the shell solved this issue.
Created 02-12-2019 09:50 PM
Hi i am using /usr/java/jdk1.8.0_202 and i am facing issue even if i submit the
Created on 12-14-2019 11:14 PM - edited 12-14-2019 11:17 PM
Hi @Jibinjks ,
Was this issue resolved? if yes, can you update the solution.
I am stuck in a similar problem. Export did not work for me too.
Br
Sandeep