import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.security.UserGroupInformation;import java.io.IOException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class Kerberos { private static String driverName = "org.apache.hive.jdbc.HiveDriver";// jdbcÇý¶¯Â·¾¶ private static String url = "jdbc:hive2://node01.bigdata.hadoop:10000/default;principal=hive/node01.bigdata.hadoop@HADOOP.COM";// hive¿âµØÖ·+¿âÃû static { // ÉèÖÃjvmÆô¶¯Ê±krb5µÄ¶Áȡ·¾¶²ÎÊý System.setProperty("java.security.krb5.conf", "krb5.conf"); // ÅäÖÃkerberosÈÏÖ¤ Configuration conf = new Configuration(); conf.setBoolean("hadoop.security.authorization", true); conf.set("hadoop.security.authentication", "kerberos"); UserGroupInformation.setConfiguration(conf); try { UserGroupInformation.loginUserFromKeytab("hive/node01.bigdata.hadoop@HADOOP.COM", "hive.keytab"); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { Connection conn = null; Statement stmt = null; try { conn = getConn(); stmt = conn.createStatement(); String sql = "show databases"; ResultSet res = stmt.executeQuery(sql); System.out.println("ËùÓпâ: "); while (res.next()) { System.out.println(res.getString(1)); } } catch (ClassNotFoundException e) { e.printStackTrace(); System.exit(1); } catch (SQLException e) { e.printStackTrace(); System.exit(1); } finally { try { if (stmt != null) { stmt.close(); stmt = null; } if (conn != null) { conn.close(); conn = null; } } catch (SQLException e) { e.printStackTrace(); } } } private static Connection getConn() throws ClassNotFoundException, SQLException { Class.forName(driverName); Connection conn = DriverManager.getConnection(url); return conn; }}