专栏首页Hadoop实操如何使用Java访问集成OpenLDAP并启用Sentry的Impala和Hive

如何使用Java访问集成OpenLDAP并启用Sentry的Impala和Hive

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢

1.文档编写目的


在前面的文章Fayson介绍了《如何使用java代码通过JDBC连接Hive(附github源码)》和《如何使用java代码通过JDBC连接Impala(附Github源码)》,本篇文章主要介绍在集群集成了OpenLDAP和启用了Sentry后使用Java通过JDBC访问的区别以及在beeline命令行如何访问。

  • 内容概述

1.环境准备

2.示例代码编写及说明

3.代码测试

  • 测试环境

1.CM和CDH版本为5.13.1

2.CentOS6.5

3.Impala JDBC驱动版本2.5.41.1061

  • 前置条件

1.集群未启用Kerberos

2.Impala已集成OpenLDAP

3.集群已启用Sentry

2.环境准备


1.下载Impala JDBC驱动包

https://downloads.cloudera.com/connectors/impala_jdbc_2.5.41.1061.zip

(可左右滑动)

2.创建Java工程jdbcdemo

创建工程时注意加入Hadoop的依赖包

<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-client</artifactId>
    <version>2.6.5</version>
</dependency>

(可左右滑动)

将下载的Impala驱动包添加到jdbcdemo工程lib目录下,并加载到环境变量

3.示例访问代码


1.Impala示例代码

package com.cloudera.impalajdbc;
import com.cloudera.utils.JDBCUtils;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
/**
 * package: com.cloudera.impalajdbc
 * describe: 访问已集成LDAP和Sentry的Impala示例
 * creat_user: Fayson
 * email: htechinfo@163.com
 * creat_date: 2018/1/12
 * creat_time: 下午3:39
 * 公众号:Hadoop实操
 */
public class SentryLDAPDemo {
    private static String JDBC_DRIVER = "com.cloudera.impala.jdbc41.Driver";
    private static String CONNECTION_URL ="jdbc:impala://ip-172-31-5-190.fayson.com:21050/;AuthMech=3;UID=hive;PWD=123456";
    static {
        try {
            Class.forName(JDBC_DRIVER);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        System.out.println("通过JDBC连接非Kerberos环境下的Impala");
        Connection connection = null;
        ResultSet rs = null;
        PreparedStatement ps = null;
        try {
            connection = DriverManager.getConnection(CONNECTION_URL);
            ps = connection.prepareStatement("show databases");
            rs = ps.executeQuery();
            while (rs.next()) {
                System.out.println(rs.getString(1));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.disconnect(connection, rs, ps);
        }
    }
}

(可左右滑动)

由于集群已集成了OpenLDAP并启用了Sentry,所以在访问Impala时需要在JDBC URL连接串中指定AuthMech=3;UID=hive;PWD=123456参数。

AuthMech:认证类型,需要认证用户名和密码。

UID:在指定AuthMech为3时为必填字段

PWD:在指定AuthMech为3时为必填字段

2.Hive示例代码

package com.cloudera.hivejdbc;
import com.cloudera.utils.JDBCUtils;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
/**
 * package: com.cloudera.hivejdbc
 * describe: 访问已集成LDAP和Sentry的Hive示例
 * creat_user: Fayson
 * email: htechinfo@163.com
 * creat_date: 2018/1/12
 * creat_time: 下午4:51
 * 公众号:Hadoop实操
 */
public class SentryLDAPDemo {
    private static String JDBC_DRIVER = "org.apache.hive.jdbc.HiveDriver";
    private static String CONNECTION_URL ="jdbc:hive2://13.250.122.111:10000/";
    private static String username = "";
    private static String password = "";
    static {
        try {
            Class.forName(JDBC_DRIVER);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        System.out.println("访问已集成LDAP和Sentry的Hive示例");
        Connection connection = null;
        ResultSet rs = null;
        PreparedStatement ps = null;
        try {
            connection = DriverManager.getConnection(CONNECTION_URL, username, password);
            ps = connection.prepareStatement("select * from test_table");
            rs = ps.executeQuery();
            while (rs.next()) {
                System.out.println(rs.getInt(1) + "-------" + rs.getString(2));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.disconnect(connection, rs, ps);
        }
    }
}

(可左右滑动)

在访问集成OpenLDAP的HiveServer2时需要在获取Connection连接时需要输入LDAP的用户名和密码DriverManager.getConnection(URL,username,password)。

4.代码测试


1.Impala测试

在Intellij下直接运行代码,执行结果如下

指定一个权限低的用户faysontest进行查询

如果指定一个错误的用户或者密码

2.Hive测试

使用hive用户测试,hive用户拥有Hive库的所有权限,所以可以看到Hive下面所有的库。

使用faysontest用户测试,faysontest用户只拥有Hive库下的default库操作权限,所以我们可以看到只能获取到default库信息

输入错误的用户密码测试,是否能够正常访问

5.Beeline命令行测试


关于Beeline命令行访问Impala,Fayson在前面的文章也介绍过《如何使用Beeline连接Impala》,这里就不再重复说明。

1.Beeline访问Hive

2.Beeline访问Impala

[root@ip-172-31-6-148 ~]# beeline -d "com.cloudera.impala.jdbc41.Driver" -u "jdbc:impala://ip-172-31-5-190.fayson.com:21050;AuthMech=3;UID=faysontest;PWD=123456" -n faysontest -p 123456

(可左右滑动)

这里需要注意,在使用Beeline连接Impala的时候,除了JDBC URL中增加AuthMech=3;UID=faysontest;PWD=123456参数还需要在 Beeline 命令行增加 –n faysontest –p 123456参数。

GitHub源码地址:

https://github.com/javaxsky/cdhproject/jdbcdemo

提示:代码块部分可以左右滑动查看噢 为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操

本文分享自微信公众号 - Hadoop实操(gh_c4c535955d0f),作者:Fayson

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-01-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何安装SAS并配置连接Hive/Impala

    SAS提供了从基本统计数的计算到各种试验设计的方差分析,相关回归分析以及多变数分析的多种统计分析过程,几乎囊括了所有最新分析方法,其分析技术先进,可靠。分析方法...

    Fayson
  • 如何安装Tableau并连接CDH的Hive/Impala

    Tableau是桌面系统中的商业智能工具软件,可以基于不同的数据源生成漂亮的图表。Cloudera与Tableau是互相认证的合作伙伴,在Tableau的数据源...

    Fayson
  • 如何在Hue中使用Sentry

    3.集群已安装Sentry服务,已和HDFS/Hive/Impala/Hue服务集成

    Fayson
  • android实现一个图片验证码倒计时功能

    最后在代码中,声明TimeCount并实例化,在button的点击事件中调用.start()方法启动定时器。

    砸漏
  • R语言自带的数据文件

    R语言有大量的样本数据可以直接用来作为数据分析和挖掘案例,可以收藏着以后用! R:datasets >install.packages("datasets")...

    学到老
  • R语言系列:探索R自带数据包

    向量 euro #欧元汇率,长度为11,每个元素都有命名 landmasses #48个陆地的面积,每个都有命名 precip #长度为70的...

    生信技能树
  • R语言自带的数据文件

    R语言有大量的样本数据可以直接用来作为数据分析和挖掘案例,可以收藏着以后用! R:datasets >install.packages("datasets")...

    学到老
  • 利用JQuery操作form表单,例如:text,radis,checkbox,file等等之类的

    今天给大家总结一下form表单中一些常用的操作,例如:获取值,隐藏控件,设置控件不可修改,设置值等等之类的。 下面看具体的例子: <!DOCTYPE html ...

    林老师带你学编程
  • Adam那么棒,为什么还对SGD念念不忘(1)

    “说到优化算法,入门级必从 SGD 学起,老司机则会告诉你更好的还有AdaGrad / AdaDelta,或者直接无脑用 Adam。可是看看学术界的最新 pap...

    企鹅号小编
  • 教程 | 手把手教你可视化交叉验证代码,提高模型预测能力

    选自KDNuggets 机器之心编译 参与:刘晓坤、路雪 本文介绍了如何使用K折交叉验证提高模型预测能力,并对代码进行了可视化。 我们试着利用代码可视化来提高模...

    机器之心

扫码关注云+社区

领取腾讯云代金券