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

2018-04-01 20:48:50 浏览数 (1)

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 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包

代码语言:txt复制
[ec2-user@ip-172-31-26-80 ~]$ rpm -qa |grep -i unixodbc

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

2.安装unixODBC依赖包

代码语言:txt复制
[ec2-user@ip-172-31-26-80 ~]$ sudo yum -y install unixODBC unixODBC-devel

3.验证是否已安装

代码语言:txt复制
[ec2-user@ip-172-31-26-80 ~]$ rpm -qa |grep unixODBC

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

代码语言:txt复制
[ec2-user@ip-172-31-26-80 ~]$ odbcinst -j

3.安装Impala ODBC驱动


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

代码语言:txt复制
[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包

代码语言:txt复制
[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

代码语言:txt复制
[ec2-user@ip-172-31-26-80 ~]$ tree /opt/cloudera/impalaodbc/

4.配置Impala ODBC


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

代码语言:txt复制
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/cloudera/impalaodbc/lib/64

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

代码语言:txt复制
[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文件末尾增加如下配置

代码语言:txt复制
[ImpalaODBC]
Description=Cloudera ODBC Driver for Impala (64-bit)
Driver=/opt/cloudera/impalaodbc/lib/64/libclouderaimpalaodbc64.so

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

代码语言:txt复制
[ec2-user@ip-172-31-26-80 ~]$ odbcinst -q -d

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

代码语言:txt复制
[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是否配置成功

代码语言:txt复制
[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

代码语言:txt复制
[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实操

0 人点赞