使用Java代码通过JDBC连接只启用Sentry的Impala异常分析

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

1.问题描述


测试环境描述:

  • CM和CDH版本为5.13.1
  • 集群只启用了Sentry
  • Impala JDBC2.5.42

在使用Java代码访问只启用了Sentry的Impala集群,即集群未启用认证比如LDAP或者Kerberos,会出现获取JDBC连接hang死的现象,具体示例代码如下:

public class SentryOnlyDemo {
    private static String JDBC_DRIVER = "com.cloudera.impala.jdbc4.Driver";
    private static String CONNECTION_URL ="jdbc:impala://13.229.116.237:21050/default;AuthMech=2;UID=hive;UseSasl=0";
    static {
        try {
            Class.forName(JDBC_DRIVER);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        System.out.println("集群中只启用了Sentry服务通过JDBC访问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);
        }
    }
}

(可左右滑动)

在JDBC连接的URL中指定了AuthMech=2;UID=hive参数后在获取Connection时一直hang住无法正常获取JDBC连接。

2.解决方法


1.将Impala驱动Cloudera_ImpalaJDBC41,并加上参数PWD为空,修改JDBC URL连接为如下:

private static String JDBC_DRIVER = "com.cloudera.impala.jdbc41.Driver";
private static String CONNECTION_URL =" jdbc:impala://13.229.116.237:21050/default;AuthMech=3;UID=hive;PWD=;UseSasl=0";

(可左右滑动)

2.运行示例代码执行如下

执行成功,获取到JDBC的连接,成功查询到所有的Datebase库。

3.总结


1.在下载Impala JDBC驱动包时里面有Cloudera_ImpalaJDBC4和Cloudera_ImpalaJDBC41两个版本选择41这个版本的。

JDBC_DRIVER ="com.cloudera.impala.jdbc41.Driver"

2.修改JDBC URL为如下即可正常获取JDBC连接

jdbc:impala://13.229.116.237:21050/default;AuthMech=3;UID=hive;PWD=;UseSasl=0

关于这个JDBC连接的异常是一个bug具体可以参考如下jira描述:

https://issues.apache.org/jira/browse/IMPALA-5040

3.驱动包的下载地址为:

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

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

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

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

原文发布于微信公众号 - Hadoop实操(gh_c4c535955d0f)

原文发表时间:2018-01-29

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

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Hadoop实操

如何使用Hue创建Spark2的Oozie工作流(补充)

目前Oozie 的 SparkAction 仅支持Spark1.6, 而并不支持Spark2, 这是 CDH Spark2已知的局限性(https://www....

1.2K60
来自专栏Hadoop实操

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

在前面的文章Fayson介绍了《如何使用java代码通过JDBC连接Hive(附github源码)》和《如何使用java代码通过JDBC连接Impala(附Gi...

43350
来自专栏Hadoop实操

如何使用Oozie API接口向Kerberos环境的CDH集群提交Spark作业

在CDH集群外的节点向集群提交Spark作业的方式有多种,前面Fayson介绍了Livy相关的文章主要描述如何在集群外节点通过RESTful API接口向CDH...

48270
来自专栏大数据-Hadoop、Spark

Flume整合Kafka实时收集日志信息

27130
来自专栏知识分享

关于STM32空闲中断

有一次做一个东西,为了尽量不占用CPU的处理数据时间,所以就使用DMA接收串口的数据,但是呢问题来了.,,,,,怎么样才能确定接收到了一条完整的数据了,,我们都...

36380
来自专栏Hadoop实操

如何使用Cloudera Manager在线为集群减容

在Hadoop集群资源紧张的情况下可以在线扩容来提升集群的计算能力,具体参考Fayson前面的文章《如何在非Kerberos环境下对CDH进行扩容》,那么在集群...

1.4K70
来自专栏Hadoop实操

如何在Kerberos环境下的CDH集群部署Spark2.1的Thrift及spark-sql客户端

50540
来自专栏分布式系统和大数据处理

使用.net通过odbc访问Hive

在 写入数据到Hive表(命令行) 这篇文章中,我们通过命令行的方式和hive进行了交互。但在通常情况下,是通过编程的方式来操作Hive,Hive提供了JDBC...

51140
来自专栏Hadoop实操

如何在Kerberos的Linux上安装及配置Impala的ODBC驱动

Impala提供了多种访问方式如impala-shell、beeline、JDBC以及ODBC等方式,关于beeline、JDBC的连接方式可以参考Fayson...

49250
来自专栏Hadoop实操

如何在CDH中安装Kudu&Spark2&Kafka

在CDH的默认安装包中,是不包含Kafka,Kudu和Spark2的,需要单独下载特定的Parcel包才能安装相应服务。本文档主要描述在离线环境下,在CentO...

2.4K90

扫码关注云+社区

领取腾讯云代金券