database - 如何使用 java 从安全的 kerberos 环境访问配置单元数据库

标签 database hive hadoop2


我在 kerberos 环境中使用 hadoop,我是 kerberos 的新手。我想使用 java 访问配置单元数据库,我浏览了配置单元官方网站,但他们提供了非常笼统的信息。
请有人给我具体的答案?

最佳答案

我认为 kerbrose 的实现是一个非常庞大的概念,为了一个小任务而完成它可能会很耗时。
这是快速解决您的问题的方法!
要在安全环境中访问 hive ,请考虑以下事项:

- 要访问配置单元,您需要提供特定于该配置单元版本的所有 jar,如配置单元官方网站上的列表所示。
-下一步提供配置单元版本特定的驱动程序名称,例如对于配置单元服务器 2 "org.apache.hive.jdbc.HiveDriver"
- 提供配置单元连接 URL,例如jdbc:hive2://node.addr:10000/default;principal=hive/node.addr@ABCREALM.LOCAL
我们在连接 URL 中提供连接地址和安全认证。对于 kerberos,将有身份验证字符串,这是我们在 kerberos 实现时设置的 kerberos 原则。
此字符串与我们在使用beeline 连接到配置单元服务器时提供的字符串相同,例如beeline -u "jdbc:hive2://node.addr:10000/default;principal=hive/node.addr@ABCREALM.LOCAL"
下面是一段小代码:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Date;

public class Connect {

    private static ResultSet res;

       public static void main(String[] args) throws Exception {
              Class.forName("org.apache.hive.jdbc.HiveDriver");
              System.out.println("Process started at:"+new Date());
              Connection con = DriverManager.getConnection("jdbc:hive2://node.addr:10000/default;principal=hive/node.addr@ABCREALM.LOCAL");

              Statement stmt = con.createStatement();
              stmt.execute("create table testTable (key string,col1 string)");
              System.out.println("Table Created successfully");
              con.close();
          }
    }

关于database - 如何使用 java 从安全的 kerberos 环境访问配置单元数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37453769/

相关文章:

Hadoop 安装问题

sql - 识别两列中的相同对

python - 具有重复值的 Sqlite 列

hadoop - Spark 似乎没有使用 Hive 使用的同一个仓库

hadoop - 我是否必须在所有节点中运行历史服务器才能在 Hadoop Cluster WebUI 中获取作业历史记录

java - 了解 MapReduce 代码

database - 选择然后插入sqlite表

database - 如何在 sqlite 表中查找特定主键的所有引用?

bash -/.bashrc在打开或登录用户时给出错误

hadoop - 通过多线程与使用hbase/hive之类的选项写入HDFS