暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

0187.C 使用FineBI同时连接开启Kerberos的CDP和CDH的impala

rundba 2022-10-26
1675

 

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.confXXX.keytabprincipal

  • 2) principal为注册过KDC的客户端名称。格式通常为:用户名/部门@公司。

  • 3) XXX.keytab为密钥表文件,需要在提供Kerberos服务的应用服务器上找到该文件的对应位置。在不同服务器上keytab的文件名称可能不一样,这里用XXX代替;

  • 4) 集群环境配置 kerberos 认证, keytab 文件需要放在各个节点。

  • 本次使用FineBI连接两套环境impala,分别为CDP 7.1.6CDH 5.13.0

提前准备信息如下:

连接CDP 7.1.6ac07用户:ac07.keytabkrb5.confac07@RUNDBA.NET

连接CDH 5.13.0impala用户:impala.keytabkrb5.confimpala/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.9
    drwxr-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.zipClouderaImpalaJDBC41_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.jarImpalaJDBC42.jar备用,经测试后续两个版本均可。

       



      3.  FineBI连接Kerberos认证




       

      3.1 概要

      配置 Kerberos 认证的方式有两种:

      直接使用数据连接配置界面中的 Kerberos 认证:主要用于 HiveHBase 等驱动的认证连接。

      配置JVM 参数后再进入数据连接配置界面进行认证:主要用于按要求填写数据连接配置界面认证成功,创建连接依然抛错的情况,比如CDHImpala 等数据库。

      下面链接CDPCDH采用第二种方法,即“配置JVM 参数后再进入数据连接配置界面”。


      3.2 复制配置文件

      FineBI只连接一个kerberos认证时,可以下载环境上的配置文件krb5.confimpala.keytab放置到%FineBI%\webapps\webroot\WEB-INF\resources目录下。

      当有多个Kerberos认证时,keytab文件最好不要都放置在reources目录下,可能会导致认证冲突。此时可以在resources下新建各自的文件夹,放置对应的认证文件。

      当前连接CDPac07用户和CDHimpala用户,在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 quickstart
          ac07
          ├── ac07.keytab
          └── krb5.conf
          quickstart
          ├── impala.keytab
          └── krb5.conf

          3.3 配置 krb5.ini 文件

          如果只连接一个kerberos认证时,准备krb5.ini文件,并将该krb5.ini文件放置到%FineBI%\webapps\webroot\WEB-INF\resources目录下。

          当前连接两个kerberos认证,故将krb5.ini文件放置到上述创建的ac07quickstart目录下,内容分别如下所示:


          ac07目录的krb5.ini创建:

            tee -a >> ac07/krb5.ini <<-'EOF'
            Client {
            com.sun.security.auth.module.Krb5LoginModule required doNotPrompt = true
            useKeyTab = true
            keyTab = "/opt/FineBI5.1/webapps/webroot/WEB-INF/resources/ac07/ac07.keytab"
            principal = "ac07@RUNDBA.NET"
            debug = true;
            };
            EOF
            quickstart目录的krb5.ini创建:
            tee -a >> quickstart/krb5.ini <<-'EOF'
            Client {
            com.sun.security.auth.module.Krb5LoginModule required doNotPrompt = true
            useKeyTab = true
            keyTab = "/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 quickstart
              ac07
              ├── ac07.keytab
              ├── krb5.conf
              └── krb5.ini
              quickstart
              ├── impala.keytab
              ├── krb5.conf
              └── krb5.ini
              0 directories, 6 files

              3.4 添加JVM参数

              1) 进入FineBI安装目录%FineBI%\bin,编辑finebi.vmoptions文件,增加下面2 JVM 参数,如下所示:

                [root@finebi ac07]# vim opt/FineBI5.1/bin/finebi.vmoptions
                tee -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.ini
                EOF

                注:两个参数的值为krb5.confkrb5.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.NET
                    192.168.80.133 quickstart.cloudera quickstart



                    3.5 数据连接impala配置Kerberos认证

                    通过浏览器访问FineBi(192.168.80.110)

                    http://192.168.80.110:37799/webroot/decision

                    系统管理 > 数据连接 > 数据库连接管理 > 新建数据连接

                     搜索框输入impala”,点击搜索的APACHE IMPALA图标

                     APACHE IMPALA界面,填写信息,

                    数据连接名称:如QuickStart-jdbc41

                    驱动:需要使用前述章节下载的jdbc驱动,jdbc41jdbc42均可。

                    驱动选择自定义,点击右侧“添加驱动”

                     然后点击新建驱动

                     输入名称如jdbc41,接下来点击上传驱动,选择之前备用的文件ImpalaJDBC41.jar,然后选择com.cloudera.impala.jdbc.Driver,点击保存。


                     最后,驱动选择自定义,驱动选择创建的jdbc41

                    数据库名称:不填写,后续通过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.133CDHimpala主机地址;

                    21050impala端口;

                    default为默认连接的impala数据库名称;

                    AuthMech=1表示使用 kerberos 认证;

                    KrbHostFQDNimpala server,为krb5.conf 文件中admin_server的值;

                    KrbServiceName为对应的服务名,此处连接impala,则取值impala

                     点击测试连接,提示成功,然后点击保存。

                     上面以连接CDHimpala用户为例,同样新建一个数据连接,配置完成CDP ac07用户,并确保测试通过。



                    至此,使用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.keytab
                          Keytab name: FILE:impala.keytab
                          KVNO 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@CLOUDERA
                            kinit: Cannot find KDC for realm "CLOUDERA" while getting initial credentials

                            也可能有类似提示:

                              [root@finebi quickstart]# kinit -kt impala.keytab impala/quickstart.cloudera@CLOUDERA
                              kinit: 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]# klist
                                    Ticket cache: FILE:/tmp/krb5cc_0
                                    Default principal: impala/quickstart.cloudera@CLOUDERA
                                    Valid starting Expires Service principal
                                    10/10/2022 08:45:49 10/11/2022 08:45:49 krbtgt/CLOUDERA@CLOUDERA
                                    renew 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.html
                                      https://help.fanruan.com/finebi/doc-view-293.html
                                      https://help.fanruan.com/finebi/doc-view-1540.html?source=4
                                      https://help.fanruan.com/finereport/doc-view-2471.html
                                      https://help.fanruan.com/finereport/doc-view-2220.html
                                      https://help.fanruan.com/finereport/doc-view-4845.html


                                      文章转载自rundba,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                      评论