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;
}
}