本文档仅供参考,其中列出的永洪BI的提示信息会因不同的客户环境而有所差异。
一、永洪BI使用Kerberos连接大数据平台数据库流程
1.1 流程简述
► 客户向永洪BI提供用于Kerberos认证的 principal 、 keytab及连接数据库的url等信息配置数据源,永洪BI使用数据源配置的认证信息建立和KDC的通信。KDC对永洪BI认证通过后,会提供访问数据库的ticket给永洪BI。在这个过程中,必须保证永洪BI所在的主机能够ping通KDC主机,并且两个主机的时间一致。
► 永洪BI使用ticket和url(hbase除外)中提供的认证信息(包含连接数据库的principal等)连接数据库。
注意:永洪BI使用Kerberos连接数据库时需要两个principal,一个用于连接KDC主机,另外一个用于连接数据库。
1.2 其他信息
KDC:Key Distribution Center,**分发中心,详细介绍参考:https://baike.baidu.com/item/%E5%AF%86%E9%92%A5%E5%88%86%E5%8F%91%E4%B8%AD%E5%BF%83/7983348?fr=aladdin
Kerberos真实认证机制比较复杂,详细介绍参考:
https://blog.****.net/Scythe666/article/details/53429819
二、永洪BI Kerberos连接需要的配置信息
2.1 页面配置信息
以下信息需要由客户提供,否则永洪BI无法连接指定数据库。
1、**文件路径:必填项,相当于是password,是一个keytab结尾的文件,由客户使用KDC主机生成并提供给永洪BI,用于永洪BI和KDC主机通信。
2、Krb5文件路径:非必填项,krb5文件配置了默认Realm、KDC主机信息等,由客户提供给永洪BI,用于永洪BI和KDC主机通信。
如果该项没有填写,永洪BI会检查{JDK/JRE安装目录}/lib/security/krb5.conf 文件是否存在。如果存在,永洪BI会使用该文件。
如果上面的文件没找到,永洪BI会检查操作系统目录下的krb5配置文件,不同的操作系统文件路径不同(以下路径供参考)。
Linux /etc/krb5.conf 文件
Windows C:\windows\system32\krb5.ini
如果文件存在,永洪BI会使用该文件。如果文件不存在,永洪BI会提示 Cannot locate default realm。
3、Jaas文件路径:非必填项,建议填写。永洪BI会根据该文件的配置信息从KDC主机获取用于和Server通信的TGT。
具体操作,在服务器新建文件jaas.conf,并输入以下内容。最后将文件路径填写到数据源“Jaas文件路径”项。
Client {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/opt/impala.keytab" --同**文件路径
storeKey=true
useTicketCache=false
principal=“[email protected]”; --同用户名
};
如果该项没有填写,永洪BI会使用操作系统缓存的ticket和server 进行通信,如果系统没有缓存,永洪BI会提示Unable to obtain Principal Name for authentication。
注意:如果需要连接zookeeper,该项为必填项,否则永洪BI会提示:
Hive: 无法连接数据库,具体原因:“org.apache.hive.jdbc.ZooKeeperHiveClientException: Unable to read HiveServer2 configs from ZooKeeper”。KeeperErrorCode = ConnectionLoss for /hiveserver2 。
HBase: 无法连接数据库,具体原因:“org.apache.hadoop.hbase.client.RetriesExhaustedException: Can’t get the location for replica 0”。
注意:连接Hbase、Impala时,受其驱动限制,该项为必填项。
4、用户名:必填项,用于永洪BI和KDC主机通信,Kerberos的principal,格式为:service/[email protected](或者[email protected])。如果在krb5文件中指定了default_realm,此处可以省略realm,例如 [email protected] 可以写为yonghong。
注意:
1、以上的配置项仅用于永洪BI和KDC主机进行通讯,以获取和数据库主机通信的ticket,永洪BI拿到ticket后才可以与数据库主机通信,与数据库通信的信息一般写在url中(HBase除外)。
2、如果永洪BI所在的主机和KDC主机的时间(包含时区)不一致,在测试连接时,永洪BI会提示Cannot locate default realm。时区修改后需要重启永洪BI。
三、Hive 连接说明
3.1 驱动
org.apache.hive.jdbc.HiveDriver,受驱动版本限制可能有所不同。
驱动相关的jar文件建议由客户提供,以免出现版本不对应或者缺少jar文件的问题。
3.2 数据库连接URL
灰色字体的信息需要根据客户环境自行配置,各项配置以 ; 隔开。连接zookeeper与直连hive数据库的区别,zookeeper提供了高可用的数据库环境,当一台数据库故障后,zookeeper可以使用其他正常的数据库继续提供服务。
连接zookeeper:
jdbc:hive2://YH01:24002,YH02:24002,YH03:24002/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2;saslQop=auth-conf;auth=KERBEROS;principal=hive/[email protected]
直连hive数据库:
jdbc:hive2://YH01:21066/default;saslQop=auth-conf;principal=hive/[email protected]
3.3 URL各项说明
►YH01:24002,YH02:24002,YH03:24002
连接zookeeper
zookeeper集群各节点的域名或IP,注意是 ip:port,ip:port,ip:port,端口号是zookeeper服务监听的端口号,与hive-site.xml中hive.zookeeper.client.port的值保持一致。
直连hive数据库
hive数据库所在的主机的ip,与hive-site.xml中hive.server2.thrift.bind.host的值保持一致。端口号是hive数据库监听的端口号,与hive-site.xml中hive.server2.thrift.port的值保持一致。
►serviceDiscoveryMode=zooKeeper 固定项,代表连接是zookeeper。
►auth=KERBEROS 固定项,代表使用Kerberos进行用户认证。
►sasl.qop=auth-conf 永洪BI和Hive数据库通信时的加密信息,与hive-site.xml中hive.server2.thrift.sasl.qop的值保持一致。
►zooKeeperNamespace=hiveserver2 与 hive-site.xml中hive.server2.zookeeper.namespace的值保持一致。
►principal=hive/[email protected] 连接hive数据库的Kerberos principal,与hive-site.xml中hive.server2.authentication.kerberos.principal的值保持一致。
3.4 注意事项
1、默认情况下Hive数据库服务器中 hive.server2.thrift.sasl.qop属性默认值是auth(CDH 安装的Hive使用的是默认值)。永洪BI在连接hive数据库时,发现如果url上没有附带saslQop(sasl.qop),会自动添加sasl.qop=auth-conf(驱动默认), 这就造成了永洪BI和Hive数据库服务器加密不一致。此时永洪BI会提示 No common protection layer between client and server,所以需要将sasl.qop和hive.server2.thrift.sasl.qop 保持一致。
2、连接zookeeper时,数据源“Jaas文件路径”项为必填项。下图为Hive数据库连接示例。
四、Phoenix HBase 连接说明
4.1驱动
org.apache.phoenix.jdbc.PhoenixDriver,受驱动版本限制可能有所不同。
驱动相关的jar文件建议由客户提供,以免出现版本不对应或者缺少jar文件的问题。
4.2 数据库连接URL
灰色字体的信息需要根据客户环境自行配置,各项配置以 : 隔开。
连接zookeeper
jdbc:phoenix:YH01,YH02,YH03:24002:/hbase:[email protected]:/opt/yh/user.keytab
4.3 URL各项说明
►YH01,YH02,YH03 zookeeper集群各节点的域名或IP 与hbase-site.xml 中的 hbase.zookeeper.quorum 的值保持一致。如果连接的不是zookeeper集群,queryserver.domain:8765 是queryserver的ip地址:端口号
►24002 端口号与hbase-site.xml中hbase.zookeeper.property.clientPort的值保持一致。
►/hbase 与hbase-site.xml中的 zookeeper.znode.parent 的值保持一致。
►[email protected] 永洪BI连接KDC主机的Kerveros principal,因为在数据源配置了 用户名 此处可以省略。
►/opt/yh/user.keytab 永洪BI连接KDC主机的**文件,因为在数据源中配置了**文件路径 此处可以省略。
Hbase JDBC连接参数参考以下连接,请参考:
http://phoenix.apache.org/faq.html#What_is_the_Phoenix_JDBC_URL_syntax
4.4 注意事项
1、连接HBase数据库时,需要将hbase-site.xml文件拷贝到永洪BI安装目录/Yonghong/lib下面。否则产品会提示(仅供参考)
java.lang.NoClassDefFoundError: com/ctc/wstx/io/InputBootstrapper
g5.util.RTWrappedException: java.lang.NoClassDefFoundError: com/ctc/wstx/io/InputBootstrapper
或
java.lang.NoClassDefFoundError: Could not initialize class org.apache.phoenix.jdbc.PhoenixDriver
2、连接zookeeper时,数据源“Jaas文件路径”项为必填项。
下图为HBase数据库连接示例。
五、Spark连接说明(附加)
5.1 驱动
org.apache.hive.jdbc.HiveDriver,受驱动版本限制可能有所不同。
驱动相关的jar文件建议由客户提供,以免出现版本不对应或者缺少jar文件的问题。
5.2 数据库连接URL
灰色字体的信息需要根据客户环境自行配置,各项配置以 ; 隔开。
连接zookeeper
spark:jdbc:hive2://YH01:24002,YH02:24002,YH03:24002/default;principal=spark/[email protected];saslQop=auth-conf;serviceDiscoveryMode=zooKeeper;auth=KERBEROS;zooKeeperNamespace=sparkthriftserver
spark2x:
jdbc:hive2://YH01:24002,YH02:24002,YH03:24002/default;principal=spark2x/[email protected];saslQop=auth-conf;serviceDiscoveryMode=zooKeeper;auth=KERBEROS;zooKeeperNamespace=sparkthriftserver2x
5.3 URL各项说明(以Spark为例)
►YH01:24002,YH02:24002,YH03:24002
连接zookeeper
集群各节点的域名或IP,注意是 ip:port,ip:port,ip:port,与spark-defaults.conf中spark.deploy.zookeeper.url 保持一致。
► default 默认数据库。
►principal= spark/[email protected] 连接hive数据库的Kerberos principal,与spark-defaults.conf中spark.beeline.principal的值保持一致。
► saslQop=auth-conf 永洪BI和Spark通信时的加密信息,与hive-site.xml中hive.server2.thrift.sasl.qop的值保持一致。
► serviceDiscoveryMode=zooKeeper 固定项,代表连接是zookeep。
► auth=KERBEROS 固定项,代表使用Kerberos进行用户认证。
►zooKeeperNamespace=hiveserver2 与 spark-defaults.conf中spark.thriftserver.zookeeper.namespace的值保持一致。
5.4 注意事项
1、同hive的saslQop
2、连接zookeeper时,数据源“Jaas文件路径”项为必填项。下图为Spark数据库连接示例。
六、IMPALA 连接说明
6.1 驱动
com.cloudera.impala.jdbc41.Driver,受驱动版本限制可能有所不同。
驱动相关的jar文件建议由客户提供,以免出现版本不对应或者缺少jar文件的问题。如何找驱动参见8.1 节。
6.2 数据库连接URL
直连impala数据库
jdbc:impala://192.168.1.232:21050;AuthMech=1;KrbRealm=HADOOP.COM;KrbHostFQDN=cdh-1-232;KrbServiceName=impala
6.3 URL各项说明
相当于把principal各项拆分,service/[email protected],impala/[email protected]
KrbRealm:realm
KrbHostFQDN:host
KrbServiceName:service
impala数据库的端口由于没找到配置文件不确定和那个属性对应,但是在管理界面可以找到。如下图:
Impala JDBC连接参数参考以下链接:https://www.simba.com/products/Hive/doc/JDBC_InstallGuide/content/jdbc/hi/options/intro-auth.htm
6.4 注意事项
1、数据源“Jaas文件路径”项为必填项。
2、url中需要附加AuthMech =1,如果url中没有AuthMech,产品提示[Simba]ImpalaJDBCDriver Error setting/closing session: {0}.
下图为Impala 数据库连接示例。