
0. ENV

0. ENV
0.1 基础环境
CentOS 7.6;
FineBI 5.1.26;
com.fr.plugin.decision.config.visual.v11-1.9.9.zip;
Cloudera_ImpalaJDBC_2.6.29.1035.zip(ImpalaJDBC41.jar/ImpalaJDBC42.jar);
CDP 7.1.6(Impala 3.4.0.7.1.6.0-297/kudu 1.13.0.7.1.6.0-297);
CDH 5.13.0(Impala 2.10.0+cdh5.13.0+0)。
0.2 数据连接前的准备工作
1) 下载环境上的配置文件krb5.conf、XXX.keytab、principal 。
2) principal为注册过KDC的客户端名称。格式通常为:用户名/部门@公司。
3) XXX.keytab为密钥表文件,需要在提供Kerberos服务的应用服务器上找到该文件的对应位置。在不同服务器上keytab的文件名称可能不一样,这里用XXX代替;
4) 集群环境配置 kerberos 认证, keytab 文件需要放在各个节点。
本次使用FineBI连接两套环境impala,分别为CDP 7.1.6、CDH 5.13.0。
提前准备信息如下:
连接CDP 7.1.6的ac07用户:ac07.keytab、 krb5.conf、ac07@RUNDBA.NET;
连接CDH 5.13.0的impala用户:impala.keytab、krb5.conf、impala/quickstart.cloudera@CLOUDERA。

1. 参数设置
默认情况下,FineBI安装完成后,创建“数据连接”时,需要相应类型的驱动,如连接到cloudera imapala时,需要相应的JDBC驱动,默认情况下不允许通过驱动管理上传驱动,此时就需要安装“fine_conf_entity可视化配置插件”,通过插件修改数据库中SystemConfig.driverUpload参数,以允许上传驱动。
1.1 插件下载
在官方https://help.fanruan.com/finebi/doc-view-1235.html页面,点击“fine_conf_entity可视化配置插件”下载插件。
目前FineBI页面会跳转到FineReport插件页面,当前使用FineBI 5.1.26(当前最新版),下载适配版本FineReport 11.0的插件V1.9.9。
下载后文件com.fr.plugin.decision.config.visual.v11-1.9.9.zip,大小100K。
1.2 插件安装
系统管理 > 插件管理 > 从本地安装,选择之前下载的本地文件“com.fr.plugin.decision.config.visual.v11-1.9.9.zip”,点击打开,提示上传成功,点击确定关闭窗口。


[root@finebi plugins]# pwd/opt/FineBI5.1/webapps/webroot/WEB-INF/plugins[root@finebi plugins]# ls -ld *1.9.9drwxr-xr-x. 3 root root 4096 Sep 26 21:48 plugin-com.fr.plugin.decision.config.visual.v11-1.9.9
有关插件更多操作,请参考官方文档:
https://help.fanruan.com/finereport/doc-view-2220.html
https://help.fanruan.com/finereport/doc-view-2471.html?source=0&from=plug
1.3 设置参数允许上传jar包
管理系统 > 系统工具 > fine_conf_entity配置:
配置方式:√选择参数配置 自定义参数配置
系统参数名 (key):从下拉菜单中选择“SystemConfig.driverUpload”,或输入字符串匹配
系统参数值 (value):将false更改为true,即允许上传驱动jar包

“您修改的参数将在重启后生效,请重启服务器”。
经测试,未重启FineBI,可正常上传驱动。
如果不配置参数,后续上传驱动会报错

重启FineBI参考:
ps -ef | grep finebi | grep -v 'grep' | awk '{print $2}' | xargs -I {} kill -9 {}cd opt/FineBI5.1/bin && nohup ./finebi &

2. Impala JDBC驱动下载
2.1 说明
使用FineBI连接CDP impala时,需要ImpalaJDBC驱动。
参考FineBI官方提供的impala驱动ImpalaJDBC41.zip、ClouderaImpalaJDBC41_2.5.43.rar在后续连接均未成功,故采用cloudera官方提供的impala JDBC驱动。
FineBI官方提供的驱动(详见链接中的章节“2.1版本和驱动”):
https://help.fanruan.com/finebi/doc-view-293.html
2.2 cloudera impala jdbc驱动下载
登录cloudera官网,使用邮箱注册一个账号,否则不能下载;
打开下载页面下载:https://www.cloudera.com/downloads/connectors/impala/jdbc/2-6-29.html.html,选择版本Impala JDBC Connector 2.6.29,点击“GOT IT NOW”下载;
解压下载文件Cloudera_ImpalaJDBC_2.6.29.1035.zip中的ImpalaJDBC41.jar或ImpalaJDBC42.jar备用,经测试后续两个版本均可。

3. FineBI连接Kerberos认证
3.1 概要
配置 Kerberos 认证的方式有两种:
直接使用数据连接配置界面中的 Kerberos 认证:主要用于 Hive、HBase 等驱动的认证连接。
配置JVM 参数后再进入数据连接配置界面进行认证:主要用于按要求填写数据连接配置界面认证成功,创建连接依然抛错的情况,比如CDH的Impala 等数据库。
下面链接CDP和CDH采用第二种方法,即“配置JVM 参数后再进入数据连接配置界面”。
3.2 复制配置文件
FineBI只连接一个kerberos认证时,可以下载环境上的配置文件krb5.conf和impala.keytab放置到%FineBI%\webapps\webroot\WEB-INF\resources目录下。
当有多个Kerberos认证时,keytab文件最好不要都放置在reources目录下,可能会导致认证冲突。此时可以在resources下新建各自的文件夹,放置对应的认证文件。
当前连接CDP的ac07用户和CDH的impala用户,在resources下分别创建两个环境的目录ac07(存放CDP ac07用户文件)、quickstart(存放CDH impala用户文件)
[root@finebi ~]# cd opt/FineBI5.1/webapps/webroot/WEB-INF/resources/[root@finebi resources]# mkdir -p ac07 quickstart
分别将0.2章节准备的文件放置各自的目录中:
[root@finebi resources]# tree ac07 quickstartac07├── ac07.keytab└── krb5.confquickstart├── impala.keytab└── krb5.conf
3.3 配置 krb5.ini 文件
如果只连接一个kerberos认证时,准备krb5.ini文件,并将该krb5.ini文件放置到%FineBI%\webapps\webroot\WEB-INF\resources目录下。
当前连接两个kerberos认证,故将krb5.ini文件放置到上述创建的ac07、quickstart目录下,内容分别如下所示:
ac07目录的krb5.ini创建:
tee -a >> ac07/krb5.ini <<-'EOF'Client {com.sun.security.auth.module.Krb5LoginModule required doNotPrompt = trueuseKeyTab = truekeyTab = "/opt/FineBI5.1/webapps/webroot/WEB-INF/resources/ac07/ac07.keytab"principal = "ac07@RUNDBA.NET"debug = true;};EOFquickstart目录的krb5.ini创建:tee -a >> quickstart/krb5.ini <<-'EOF'Client {com.sun.security.auth.module.Krb5LoginModule required doNotPrompt = trueuseKeyTab = truekeyTab = "/opt/FineBI5.1/webapps/webroot/WEB-INF/resources/quickstart/impala.keytab"principal = "impala/quickstart.cloudera@CLOUDERA"debug = true;};EOF
注:各自环境的principal需要通过各自平台进行查询,后续FineBI连接配置界面上也可以看到principal名称。
此时配置完成文件分布:
[root@finebi resources]# tree ac07 quickstartac07├── ac07.keytab├── krb5.conf└── krb5.iniquickstart├── impala.keytab├── krb5.conf└── krb5.ini0 directories, 6 files
3.4 添加JVM参数
1) 进入FineBI安装目录%FineBI%\bin,编辑finebi.vmoptions文件,增加下面2 个JVM 参数,如下所示:
[root@finebi ac07]# vim opt/FineBI5.1/bin/finebi.vmoptionstee -a >> /opt/FineBI5.1/bin/finebi.vmoptions <<-'EOF'-Djava.security.krb5.conf=/opt/FineBI5.1/webapps/webroot/WEB-INF/resources/ac07/krb5.conf-Djava.security.auth.login.config=/opt/FineBI5.1/webapps/webroot/WEB-INF/resources/ac07/krb5.iniEOF
注:两个参数的值为krb5.conf和krb5.ini文件的绝对路径。
编辑完成的 finebi.vmoptions 文件示例如下:
[root@finebi ~]# cat opt/FineBI5.1/bin/finebi.vmoptions-Djava.security.krb5.conf=/opt/FineBI5.1/webapps/webroot/WEB-INF/resources/quickstart/krb5.conf-Djava.security.auth.login.config=/opt/FineBI5.1/webapps/webroot/WEB-INF/resources/quickstart/krb5.ini-Xmx3966m-XX:PerBytecodeRecompilationCutoff=-1-XX:PerMethodRecompilationCutoff=-1-Dfile.encoding=UTF-8-Djava.io.tmpdir=./temp-Djava.awt.headless=true
注:此处若使用的不是单机版,而是 Spider 分布式引擎,则需要在该文件中再添加一个参数:-Dzookeeper.sasl.client=false,因为zookeeper 默认认证模式会受到 kerberos 配置的影响而导致 BI 无法启动。
2) 配置hosts解析
配置FineBI主机的hosts解析,映射格式为:IP 机器名。
[root@finebi ~]# cat etc/hosts...192.168.80.111 cdp-vip.RUNDBA.NET192.168.80.133 quickstart.cloudera quickstart
3.5 数据连接impala配置Kerberos认证
通过浏览器访问FineBi(192.168.80.110):
http://192.168.80.110:37799/webroot/decision
系统管理 > 数据连接 > 数据库连接管理 > 新建数据连接


数据连接名称:如QuickStart-jdbc41
驱动:需要使用前述章节下载的jdbc驱动,jdbc41或jdbc42均可。
驱动选择自定义,点击右侧“添加驱动”



数据库名称:不填写,后续通过url自动带入;
主机:不填写,后续通过url自动带入;
端口:填写21050;
认证方式:选择Kerberos;
keytab密钥路径:点击选择文件,选择浏览器所在主机存放的keytab文件,如impala.keytab,此时客户端principal会自动带出;
客户端principal:通过keytab自动带出;
krb5.conf文件:点击选择文件,选择浏览器所在主机存放的krb5.conf文件;
编码:默认;
数据连接URL:
[quickstart]
jdbc:impala://192.168.80.133:21050/default;AuthMech=1;KrbHostFQDN=quickstart.cloudera;KrbServiceName=impala
192.168.80.133为CDH的impala主机地址;
21050为impala端口;
default为默认连接的impala数据库名称;
AuthMech=1表示使用 kerberos 认证;
KrbHostFQDN为impala server,为krb5.conf 文件中admin_server的值;
KrbServiceName为对应的服务名,此处连接impala,则取值impala。



至此,使用FineBI同时成功连接了:
开启Kerberos认证的CDP 7.1.6下的ac07用户的impala的;
开启Kerberos认证的CDH 5.13.0下的impala用户。
4. 在FineBI主机上验证keytab和krb5.conf以及票据是否正确(参考)
FineBI主机上安装kerberos客户端:
yum -y install krb5-libs krb5-workstation openldap-clients
也可在其它Linux主机上安装,主要是文件及票据的验证。
进入keytab文件目录:
[root@finebi ~]# cd opt/FineBI5.1/webapps/webroot/WEB-INF/resources/quickstart/
查看keytab文件票据名称:
[root@finebi quickstart]# klist -ket impala.keytabKeytab name: FILE:impala.keytabKVNO Timestamp Principal---- ------------------- ------------------------------------------------------2 09/27/2022 05:03:28 impala/quickstart.cloudera@CLOUDERA (aes128-cts-hmac-sha1-96)2 09/27/2022 05:03:28 impala/quickstart.cloudera@CLOUDERA (des3-cbc-sha1)2 09/27/2022 05:03:28 impala/quickstart.cloudera@CLOUDERA (arcfour-hmac)2 09/27/2022 05:03:28 impala/quickstart.cloudera@CLOUDERA (des-hmac-sha1)2 09/27/2022 05:03:28 impala/quickstart.cloudera@CLOUDERA (des-cbc-md5)
登录时,有类似提示:
[root@finebi quickstart]# kinit -kt impala.keytab impala/quickstart.cloudera@CLOUDERAkinit: Cannot find KDC for realm "CLOUDERA" while getting initial credentials
也可能有类似提示:
[root@finebi quickstart]# kinit -kt impala.keytab impala/quickstart.cloudera@CLOUDERAkinit: Client 'impala/quickstart.cloudera@CLOUDERA' not found in Kerberos database while getting initial credentials
解决方法:
[root@finebi quickstart]# cp krb5.conf /etc/cp: overwrite ‘/etc/krb5.conf’? y
再次登录成功:
[root@finebi quickstart]# kinit -kt impala.keytab impala/quickstart.cloudera@CLOUDERA
查看已登录的用户:
[root@finebi quickstart]# klistTicket cache: FILE:/tmp/krb5cc_0Default principal: impala/quickstart.cloudera@CLOUDERAValid starting Expires Service principal10/10/2022 08:45:49 10/11/2022 08:45:49 krbtgt/CLOUDERA@CLOUDERArenew until 10/15/2022 08:45:49
可正常登录,说明提供的krb5.conf、impala.keytab、principal(impala/quickstart.cloudera@CLOUDERA)均正常。

5. 参考
https://help.fanruan.com/finebi/doc-view-282.htmlhttps://help.fanruan.com/finebi/doc-view-293.htmlhttps://help.fanruan.com/finebi/doc-view-1540.html?source=4https://help.fanruan.com/finereport/doc-view-2471.htmlhttps://help.fanruan.com/finereport/doc-view-2220.htmlhttps://help.fanruan.com/finereport/doc-view-4845.html




