Linux ODBC 连接 Inceptor

  其他常见问题
内容纲要

概要描述


本文记录 linux 环境下,安装 odbc 驱动,配置 odbc 数据源,以及如何用 odbc 驱动连接 Inceptor 的步骤;

详细说明


1、安装并配置 Driver Manager

由于Linux系统没有提供ODBC Driver Manager,需要自行下载:

wget ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.12.tar.gz

下载完成后,编译并安装 driver manager,运行如下命令:

tar -xvzf unixODBC-2.3.12.tar.gz
cd unixODBC-2.3.12/
./configure --sysconfdir=/etc
make
make install

配置环境变量PATH和LD_LIBRARY_PATH,运行如下命令:

export PATH=/usr/local/bin:${PATH}
export LD_LIBRARY_PATH=/usr/local/lib/:${LD_LIBRARY_PATH}

测试driver manager是否安装成功,运行odbcinst -j,输出样例如下:

# odbcinst -j
unixODBC 2.3.12
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

此处要确保:
DRIVERS 的值为 /etc/odbcinst.ini
SYSTEM DATA SOURCES 的值为 /etc/odbc.ini

2、安装并配置ODBC驱动

下载并安装驱动

1.下载Linux ODBC驱动程序,manager 的 inceptor 服务页面,如下图。选择对应平台的安装包,其中 Centos 6 和 Centos 7 均可使用 inceptor-connector-odbc-x.x.x-1.el6.x86_64
file
file

2.安装驱动,以CentOS 6 64位为例,安装rpm包:

rpm -ivh inceptor-connector-odbc-*.x86_64.rpm --nodeps

3.拷贝配置文件,Inceptor ODBC 相关的配置文件包括三个,安装rpm包后,配置文件会被放置在/usr/local/inceptor/下:

  • /usr/local/inceptor/log4cplus.properties
  • /usr/local/inceptor/odbc.ini
  • /usr/local/inceptor/odbcinst.ini

请将这三个文件拷贝到 /etc/ 目录下覆盖原有的配置文件。这三个文件的作用分别如下:

odbcinst.ini 描述了 ODBC 驱动名字和驱动程序的关系:

  • [ODBC] 指定Driver Manager信息:Trace = Yes 表明当前状态打开 Driver Manager 的日志,日志的位置为 /tmp/odbc-driver-manager.log。这里我们建议修改为No,否则后期有可能因为 /tmp/odbc-driver-manager.log 文件过大占用根目录。
    Trace 值修改之后,需要重启应用才能生效(因为每次连接数据库时,应用程序会重新加载ODBC的配置信息。)。
  • [Transwarp Inceptor ODBC Driver] 标签下的 Driver 字段指向 ODBC 的驱动位置 /usr/local/lib64/libODBC4HiveServer2.so

odbc.ini 文件描述了 DSN 的配置信息

log4cplus.properties 为 ODBC log 配置文件:

3、配置Inceptor ODBC

在使用 ODBC 驱动连接 Inceptor 数据库之前,你需要配置 ODBC 数据源名称(DSN),DSN定义了连接数据库所需的各种配置参数,用户可以在应用中使用DSN与数据库交互,避免了在应用中单独定义各个参数。DSN分为用户DSN、系统DSN、文件DSN,用户可以根据操作系统和ODBC驱动选择不同的方式。

ODBC数据源名称概览

DSN定义了连接数据库所需的各种配置参数,通常有如下参数:

  • Data Source Name:DSN的名称,使用过程中根据名字指定某一个具体的DSN。
  • Description:DSN的描述信息。
  • Host:数据库的IP地址。
  • Port: 端口号,默认使用10000。
  • Database:连接的数据库名字,默认连接default数据库。
  • Inceptor Server Type:指定 Inceptor Server 类型,从TDH 4.7版本开始,仅支持 Inceptor Server 2。
  • Mechanism:允许三种认证方式,NONE、LDAP 和 Kerberos。

这边以 LDAP 连接举例配置 DSN,其他方式可以参考 ODBC 连接手册

[transwarp-hs2-ldap]
Description = LDAP test
Driver = Transwarp Inceptor ODBC Driver
Server = tdh522-183
Hive = Hive Server 2
Host = 192.168.31.183
Port = 10000
Database = default
User = hive
Password = 123456
Mech = LDAP
[transwarp-hs2-kerberos]
[transwarp-hs1]
[mysql]

PS[transwarp-hs2-ldap] 标签下配置使用 LDAP 模式下的 Inceptor Server 2 的 DSN。

4、验证

执行如下命令测试ODBC驱动是否正确安装和配置:

# 命令连接格式 isql {DSN名称} {用户名} {密码}
isql transwarp-hs2-ldap hive 123456

连接成功结果如下图所示:

file

5、常见错误解决方法

  1. 如果连接错误,请参考 ODBC 连接 inceptor 配置过程常见问题 尝试修复。

  2. kerberos认证下报错SASL Other: GSSAPI Error: Unspecified GSS failure. Minor code may provide more information (No Kerberos credentials available (default cache: FILE:/tmp/krb5cc_0))

    需要在yum install krb5-libs krb5-workstation krb5-server之后,尝试 kinit 任意租户,生成一个/tmp/krb5cc_0文件,不可以通过 touch /tmp/krb5cc_0 进行构造,会报 Bad format in credentials cache (filename: /tmp/krb5cc_0)) 的错误。

  3. 其他错误和异常可以通过 log4j 中配置的日志路径进行分析,比如/ tmp/odbc-driver-manager.log以及/tmp/odbc.log

6、具体使用案例

Python

使用 Python:

import pyodbc
cnxn = pyodbc.connect("DRIVER={Transwarp Inceptor ODBC Driver};DSN=transwarp-hs2-ldapp")
cursor = cnxn.cursor()
result = cursor.execute("show databases").fetchall()
print(result)

file

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。