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

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

1.文档编写目的


Impala提供了多种访问方式如impala-shell、beeline、JDBC以及ODBC等方式,关于beeline、JDBC的连接方式可以参考Fayson前面的文章《如何使用java代码通过JDBC连接Impala(附Github源码)》和《如何使用Beeline连接Impala》,本篇文章主要介绍如何在Linux上安装及配置Impala ODBC驱动。学习本章知识前你还需要知道《如何使用HAProxy实现Kerberos环境下的Impala负载均衡》和《如何使用HAProxy实现Impala的负载均衡》。

  • 内容概述

1.安装依赖包

2.安装Impala ODBC包

3.配置ODBC

4.isql验证ODBC

  • 测试环境

1.CM和CDH版本为5.11.2

2.Impala ODBC版本2.5.41

  • 前置条件

1.Impala集群已启用HAProxy

2.集群已启用Kerberos

2.安装unixODBC依赖包


1.检查是否安装unixODBC包

[ec2-user@ip-172-31-26-80 ~]$ rpm -qa |grep -i unixodbc

如上截图说明没有安装unixODBC依赖包

2.安装unixODBC依赖包

[ec2-user@ip-172-31-26-80 ~]$ sudo yum -y install unixODBC unixODBC-devel

3.验证是否已安装

[ec2-user@ip-172-31-26-80 ~]$ rpm -qa |grep unixODBC

4.使用如下命令查看unixODBC配置文件路径

[ec2-user@ip-172-31-26-80 ~]$ odbcinst -j

3.安装Impala ODBC驱动


1.从Cloudera官网下载Impala ODBC驱动

[ec2-user@ip-172-31-26-80 ~]$ wget  https://downloads.cloudera.com/connectors/impala_odbc_2.5.41.1029/Linux/EL7/ClouderaImpalaODBC-2.5.41.1029-1.el7.x86_64.rpm

2.使用如下命令安装Impala ODBC的RPM包

[ec2-user@ip-172-31-26-80 ~]$ sudo yum -y localinstall ClouderaImpalaODBC-2.5.41.1029-1.el7.x86_64.rpm 

3.Impala的安装目录在/opt/cloudera/impalaodbc

[ec2-user@ip-172-31-26-80 ~]$ tree /opt/cloudera/impalaodbc/

4.配置Impala ODBC


1.设置驱动环境变量,在/etc/profile文件的末尾增加如下配置

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/cloudera/impalaodbc/lib/64

执行source命令使环境变量立即生效

[ec2-user@ip-172-31-26-80 ~]$ source /etc/profile
[ec2-user@ip-172-31-26-80 ~]$ echo $LD_LIBRARY_PATH
:/opt/cloudera/impalaodbc/lib/64
[ec2-user@ip-172-31-26-80 ~]$ 

2.配置Impala ODBC驱动,在/etc/odbcinst.ini文件末尾增加如下配置

[ImpalaODBC]
Description=Cloudera ODBC Driver for Impala (64-bit)
Driver=/opt/cloudera/impalaodbc/lib/64/libclouderaimpalaodbc64.so

如上截图的标注部分可以通过/opt/cloudera/impalaodbc/Setup目录下的odbcinst.ini配置文件获取,根据操作系统版本复制相应的配置信息。执行如下命令查看是否配置成功

[ec2-user@ip-172-31-26-80 ~]$ odbcinst -q -d

3.配置ODBC DataSource,修改/home/ec2-user/.odbc.ini配置,在配置文件中增加如下内容,提示:代码块部分可以左右滑动查看噢

[ODBC Data Sources]
ImpalaDataSource=Cloudera ODBC Driver for Impala 64-bit
[ImpalaDataSource]
# Description: DSN Description.
# This key is not necessary and is only to give a description of the data source.
Description=Cloudera ODBC Driver for Impala (64-bit) DSN
# Driver: The location where the ODBC driver is installed to.
Driver=/opt/cloudera/impalaodbc/lib/64/libclouderaimpalaodbc64.so
# The DriverUnicodeEncoding setting is only used for SimbaDM
# When set to 1, SimbaDM runs in UTF-16 mode.
# When set to 2, SimbaDM runs in UTF-8 mode.
#DriverUnicodeEncoding=2
# Values for HOST, PORT, KrbFQDN, and KrbServiceName should be set here.
# They can also be specified on the connection string.
HOST=ip-172-31-22-86.ap-southeast-1.compute.internal
PORT=25004
Schema=default
# The authentication mechanism.
# 0 - No authentication (NOSASL)
# 1 - Kerberos authentication (SASL)
# 2 - Username authentication (SASL)
# 3 - Username/password authentication (NOSASL or SASL depending on UseSASL configuration)
AuthMech=1
# Set to 1 to use SASL for authentication.
# Set to 0 to not use SASL.
# When using Kerberos authentication (SASL) or Username authentication (SASL) SASL is always used
# and this configuration is ignored. SASL is always not used for No authentication (NOSASL).
UseSASL=0
# Kerberos related settings.
KrbFQDN=ip-172-31-22-86.ap-southeast-1.compute.internal
KrbRealm=CLOUDERA.COM
KrbServiceName=impala
# Username/password authentication with SASL settings.
UID=
PWD=
# Set to 0 to disable SSL.
# Set to 1 to enable SSL.
SSL=0
CAIssuedCertNamesMismatch=1
TrustedCerts=/opt/cloudera/impalaodbc/lib/64/cacerts.pem
# General settings
TSaslTransportBufSize=1000
RowsFetchedPerBlock=10000
SocketTimeout=0
StringColumnLength=32767
UseNativeQuery=0

上述配置信息可通过/opt/cloudera/impalaodbc/Setup/目录下的odbc.ini中获取,根据操作系统的不同选择复制相应的配置到自己的配置文件中,这里我们使用的是64位的操作系统,所以只需要拷贝64位Data Source配置,注意黄底标注部分,ImpalaDataSource命名不要有空格,否则使用isql访问是会报错。

使用如下命令验证DataSource是否配置成功

[ec2-user@ip-172-31-26-80 ~]$ odbcinst -q -s
[ImpalaDataSource]
[ec2-user@ip-172-31-26-80 ~]$

5.验证Impala ODBC连接


1.初始化Kerberos信息

由于集群启用Kerberos,所以在访问前需要获取令牌

2.使用isql命令访问DataSource

[ec2-user@ip-172-31-26-80 ~]$ isql -v ImpalaDataSource
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> 

出现如上信息则表示配置成功,执行SQL操作

6.总结


  • 配置Impala ODBC驱动,需要将Impala的ODBC Driver加载到系统环境变量LD_LIBRARY_PATH
  • 在配置Impala DataSource时,需要注意DataSource名称不要有空格否则访问时会报错
  • Impala使用了HAProxy做负载均衡,所以在配置DataSource时需要指向HAProxy配置的Impala JDBC端口。

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

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

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

本文分享自微信公众号 - Hadoop实操(gh_c4c535955d0f)

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

原始发表时间:2017-12-29

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

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Hadoop实操

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

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

36070
来自专栏Ryan Miao

idea 自动提示生成 serialVersionUID

from: http://tonycody.blog.51cto.com/8421818/1401422 Intellij IDEA 默认没启用这个功能。 Se...

28480
来自专栏Hadoop实操

如何在CDH中使用HPLSQL实现存储过程

目前版本的Hive中没有提供类似存储过程的功能,使用Hive做数据应用开发时候,一般有以下两种方法:

1.8K70
来自专栏牛肉圆粉不加葱

Spark Streaming + Kakfa 编程指北

本文简述如何结合 Spark Streaming 和 Kakfa 来做实时计算。截止目前(2016-03-27)有两种方式:

11740
来自专栏Hadoop实操

如何在Kerberos环境的CDH集群部署Livy

在前面的文章Fayson介绍了《Livy,基于Apache Spark的开源REST服务,加入Cloudera Labs》、《如何编译Livy并在非Kerber...

1.2K40
来自专栏Hadoop实操

如何通过Tableau连接Kerberos的Hive/Impala

昨天Fayson写了一篇《如何安装Tableau并连接CDH的Hive/Impala》,后台关注人数当天增加了40人,有点大大超过Fayson的预期,首先还是谢...

2.6K110
来自专栏Hadoop实操

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

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

50540
来自专栏Hadoop实操

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

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

49970
来自专栏Hadoop实操

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

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

1.5K70
来自专栏Hadoop实操

如何使用CDSW在CDH中分布式运行所有R代码

无需额外花费过多的学习成本,sparklyr(https://spark.rstudio.com)可以让R用户很方便的利用Apache Spark的分布式计算能...

56260

扫码关注云+社区

领取腾讯云代金券