HBase连接问题

<< Click to Display Table of Contents >>

当前位置:  数据准备 > 数据源 > SQL数据源 > 常见问题 

HBase连接问题

复制链接

前提: 连接Hbase前必须开启pheonix。

1.驱动

1.1 主要使用的驱动:

(目前驱动对应JDK最低为1.7)

org.apache.phoenix.queryserver.client.Driver

表示thin driver,  connects via Phoenix Query Server. 目前产品集成了thin driver的驱动。 推荐使用这种方式, 因为这种驱动依赖少, 与产品的其余驱动可以很好的兼容。

org.apache.phoenix.jdbc.PhoenixDriver

表示 thick driver, connects directly to Phoenix. 产品没有集成驱动, 这种驱动自身集成了很多第三方的jar, 与产品的很多驱动会有冲突。

驱动更换和配置调整方式参考(Linux环境):

永洪安装目录下的lib/jdbcdriver下,把3hadoop,4hive,5impala  文件夹备份到vividime下(注意不能放在lib下),删除这3个文件夹。

把phoinex下的lib文件夹下的所有驱动复制到永洪的lib/jdbcdriver下。把phoinex下和lib同级目录的jar复制到永洪的lib/jdbcdriver下(最好是在lib/jdbcdriver下创建个文件夹,放入文件夹)。

到永洪安装目录下的和tomcat文件夹同级目录下创建一个文件夹,例如hbaseconf文件夹

安装hbase会有4个配置文件(core-site.xml;hbase-site.xml;hdfs-site.xml;hive-site.xml),例如测试环境是在24节点的etc/conf/hbase/下。复制到刚创建好的文件夹下。到永洪安装目录下的tomcat/bin下,vi进入setclasspath.sh文件。最后一句最后添加上,刚创建的文件夹的目录。

1.2 常见报错

注意:永洪7.5.2版本中对驱动进行的了整理, 因为驱动在setClassPath中先加载的会生效,  所以需要对使用了hadoop驱动的几个数据库进行排序。目前的驱动一般可以适配1.x版本的hive, 如果在使用过程中出现问题, 可以先明确当前的hive所使用的驱动是什么版本的, 如果是高于2.x版本的驱动, 需要将hive文件夹中更换为用户所使用的驱动。

驱动找不到:java.lang.NoClassDefFoundError: Could not initialize class …….

参考解决方案:更换为7.5.2后的驱动。

驱动冲突:java.lang.NoSuchMethodError: …..

参考解决方案:这种情况一般是新增加了一些驱动, 与产品自带的驱动版本不一致, 有冲突。可以联系运维进行处理。

2.URL

2.1 Thick Driver

Phoenix (Thick) Driver JDBC URL 语法如下(方括号中的元素是可选的):

jdbc:phoenix:[comma-separated ZooKeeper Quorum [:port [:hbase root znode [:kerberos_principal [:path to kerberos keytab] ] ] ]

最简URL如下:

jdbc:phoenix:localhost

最复杂的URL如下:

jdbc:phoenix:zookeeper1.domain,zookeeper2.domain,zookeeper3.domain:2181:/hbase-1:phoenix@EXAMPLE.COM:/etc/security/keytabs/phoenix.keytab

Please note that each optional element in the URL requires all previous optional elements. For example, to specify the HBase root ZNode, the ZooKeeper port must also be specified.

2.2 Thin Driver

Phoenix Thin Driver(与 Phoenix Query Server 一起使用)JDBC URL 语法如下:

jdbc:phoenix:thin:[key=value[;key=value...]]

There are a number of keys exposed for client-use. The most commonly-used keys are: url and serialization. The url key is required to interact with the Phoenix Query Server.

最简URL如下:

jdbc:phoenix:thin:url=http://localhost:8765

最复杂的URL如下:

jdbc:phoenix:thin:url=http://queryserver.domain:8765;serialization=PROTOBUF;authentication=SPENGO;principal=phoenix@EXAMPLE.COM;keytab=/etc/security/keytabs/phoenix.keytab

3.用户名密码

3.1 无Kerberos认证

用户名密码和普通数据库一样.

3.2 开启Kerberos认证

用户:  用户所对应的Kerberos Principal Name.

密钥文件路径:  KeyTab文件的路径.  比如  /opt/xxx/user.keytab

Krb5文件路径: Krb5.conf文件的路径. 比如  /opt/xxx/krb5.conf.  Windows环境下面名字需要改成Krb5.ini.

注意:Krb5文件一般会放到一个默认的地方, 这样就不需要去配置该项. 如果客户不提供这个文件, 可能他们已经在默认位置放了这个文件. 一般来说, Windows的默认位置是C:\Windows\Krb5.ini或者C:\winnt\Krb5.ini,  Linux的默认位置/etc/Krb5.conf或者 /etc/krb5/krb5.conf

Jaas文件路径:  Jaas文件的路径. 比如 /opt/xxx/jaas.conf. 该配置文件一般是用于Zookeeper安全认证的. 具体信息如下:

 Client {

com.sun.security.auth.module.Krb5LoginModule required

useKeyTab=true

keyTab="D:\\workspace\\jdbc-examples\\conf\\user.keytab"

principal="xxx@HADOOP.COM"

useTicketCache=false

storeKey=true

debug=true;

 };

4.出错排查

4.1 排查驱动问题和URL端口是否连通

如上文驱动里面所说的信息, 一般需要明确用户数据库的版本和驱动版本.如果用户所使用的产品是7.5.2之前, 需要将jdbcDriver整理成7.5.2中的样子. 同时还需要将setClassPath文件中的setClasspath改成7.5.2中样子;

查看url指定的ip和端口是否可以ping通。

4.2 排查kerberos问题

如果用户使用了kerberos认证, 需要确认以下几点问题:

各个服务器, 即永洪服务器与数据库服务器时间是否相差5分钟之内。这个值也是客户可以调整的, 最好设置时间一致。

永洪服务器上是否安装了kerberos客户端, 执行kinit命令:

  kinit –k -t /opt/xx/user.keytab user.principal

  如果不报错,并且执行klist可以看到类似如下的信息,就说明kinit成功。

hbase_kinit

krb5.conf文件中有kdc, admin_server和default_domain三项配置,  这三项也是IP:PORT形式的值, 需要保证能够ping通。

4.3 第三方工具SQuirrel SQL排查

注:

如果用户启动的是kerberos环境, 第三方工具使用的先决条件是先执行kinit命令成功,  klist可以看到kerberos认证信息才可以。

该工具需要基于JDK, 使用前需要先确保安装了JDK, 3.8.1的Squirrel需要至少1.8版本的JDK。

排查步骤:

运行SQuirrel Sql Client 程序,增加 Hbase driver,如图。

sqltool1

在弹出对话框中的参数配置如下图.

sqltool2

Example URL: jdbc:phoenix:thin:url=http://localhost:8765;serialization=PROTOBUF

Class Name:  org.apache.phoenix.queryserver.client.Driver

Extra Class Path:  同产品的setClassPath, 把产品驱动下面的hadoop、hbase文件夹中的驱动都选中.

安装完驱动后,切换至上面的Aliases页,配置连接信息,如图

sqltool3