带有原生驱动程序的 Cloudera Impala 3.1+ 和 Cloudera Impala

使用这些说明的方言

Looker 可连接到以下 Impala 数据库:

  • Cloudera Impala 3.1 及以上版本
  • 带有原生驱动程序的 Cloudera Impala 3.1+
  • 带有原生驱动程序的 Cloudera Impala

对网络流量进行加密

最佳做法是对 Looker 应用和数据库之间的网络流量进行加密。请考虑启用安全的数据库访问文档页面中所述的选项之一。

配置 Looker 以连接到 Cloudera Impala

Looker 通过 JDBC 连接连接到数据库。对于 Impala 数据库,Looker 会默认连接到在端口 21050 上运行 impalad 守护程序的服务器。如需了解详情,请参阅 Cloudera 网站上文档的配置 Impala 以使用 JDBC 部分。

在 Looker 的管理部分中,选择连接,然后点击添加连接

Looker 连接配置取决于所使用的安全性:

连接到未使用 Kerberos 或用户身份验证的集群

要配置未使用 Kerberos 或用户身份验证的连接,请按以下步骤操作:

  1. Connection Settings(连接设置)页面,将 Username(用户名)和 Password(密码)字段留空。(字段名称旁边的 * 表示这些字段是必填字段,但并非必填字段)。
  2. 其他 JDBC 参数字段中,输入 ;auth=noSasl

验证连接字符串

如需验证日志文件中的 JDBC 连接字符串,请在 Looker 管理面板中,点击左侧菜单中的日志。然后,按 jdbcnoSasl 等字词过滤日志。日志行可能如下所示:

jdbc connect using: jdbc:hive2://<HOSTNAME>/<DATABASE_NAME>;auth=noSasl

如需详细了解如何配置 Impala 数据库以使用 JDBC,请参阅外部 Cloudera 网站上的文档

连接到需要 LDAP 身份验证的集群

对于需要 LDAP 身份验证的集群(包括具有 Apache Sentry 和 Kerberos 的集群),请在连接设置页面上输入用户名密码,该用户名和密码应有权访问 Looker 将要访问的架构。

连接到受 Kerberos 保护但不使用 Apache Sentry 的集群

Looker 分析团队可能需要协助正确配置此连接。

Cloudera 环境中的 Kerberos 身份验证通常通过 Apache Sentry 处理。如需了解详情,请参阅 Cloudera 文档

如果您希望将 Looker 配置为使用 Kerberos 身份验证直接连接到 Impala 数据库,请按照此页面上的步骤操作。

设置 Kerberos 客户端配置

首先,您需要确保安装了多款软件,并且 Looker 机器上存在多个文件。

Kerberos 客户端

尝试运行 kinit,验证 Looker 机器上是否已安装 Kerberos 客户端。如果未安装 Kerberos 客户端,请安装 Kerberos 客户端的二进制文件。

例如,在 Redhat/CentOS 上,代码为:

sudo yum install krb5-workstation krb5-libs krb5-auth-dialog

Java 8

Java 8 必须安装在 Looker 机器上以及 Looker 用户的 PATHJAVA_HOME 中。如有必要,请将其安装在 looker 目录中。

Java 加密扩展
  1. Oracle 网站下载并安装适用于 Java 8 的 Java Cryptography Extension (JCE)。

    • 找到用于安装 Java 的 jre/lib/security 目录。
    • 从该目录中移除以下 JAR 文件:local_policy.jarUS_export_policy.jar
    • 将这两个文件替换为下载的 JCE Unlimited Strength Jurisdiction Policy 文件中包含的 JAR 文件。

    您可以在安装了 JCE 的情况下使用 Java 8 之前的 Java 版本,但不建议这样做。

  2. 更新 ~looker/.bash_profile 中的 JAVA_HOMEPATH,使其指向正确安装的 Java 和 source ~/.bash_profile,或者退出并重新登录。

  3. 使用 java -version 验证 Java 版本。

  4. 使用 echo $JAVA_HOME 验证 JAVA_HOME 环境变量。

gss-jaas.conf

looker 目录中创建一个包含以下内容的 gss-jaas.conf 文件:

com.sun.security.jgss.initiate {
    com.sun.security.auth.module.Krb5LoginModule required
    useTicketCache=true
    doNotPrompt=true;
};

如果需要进行测试,可将 debug=true 添加到此文件中,如下所示:

com.sun.security.jgss.initiate {
    com.sun.security.auth.module.Krb5LoginModule required
    useTicketCache=true
    doNotPrompt=true
    debug=true;
};
krb5.conf

运行 Looker 的服务器还应具有有效的 krb5.conf 文件。默认情况下,此文件位于 /etc/krb5.conf。如果它位于其他位置,则必须在环境(在 shell 环境中为 KRB5_CONFIG)中指明。

您可能需要从其他 Kerberos 客户端计算机复制此密钥。

lookerstart.cfg

looker 目录(包含 looker 启动脚本的同一目录)中创建一个名为 lookerstart.cfg 的文件,并在该文件中添加以下代码行,以指向 gss-jaas.confkrb5.conf 文件:

  JAVAARGS="-Djava.security.auth.login.config=/path/to/gss-jaas.conf -Djavax.security.auth.useSubjectCredsOnly=false -Djava.security.krb5.conf=/etc/krb5.conf"
  LOOKERARGS=""

如果 krb5.conf 文件不在 /etc/krb5.conf 下,则还需要添加以下变量:

  -Djava.security.krb5.conf=/path/to/krb5.conf

要进行调试,请添加以下变量:

  -Dsun.security.jgss.debug=true -Dsun.security.krb5.debug=true

然后使用 ./looker restart 重启 Looker。

使用 Kerberos 进行身份验证

用户身份验证
  1. 如果 krb5.conf 不在 /etc/ 中,则使用环境变量 KRB5_CONFIG 来指示其位置。

  2. 运行命令 klist 以确保 Kerberos 票据缓存中有有效的票据。

  3. 如果没有票证,请运行 kinit username@REALMkinit username 来创建票证。

  4. 与 Looker 配合使用的账号可能是无头账号,因此您可以从 Kerberos 获取 keytab 文件,用于存储凭据以供长期使用。使用 kinit -k -t looker_user.keytab username@REALM 等命令获取 Kerberos 票据。

自动续订车票

请设置一个每隔一段时间运行的 Cron 作业,以便在 Kerberos 票据缓存中保留有效的票据。其运行频率取决于集群的配置。klist 应指明门票的过期时间。

正在创建与数据库的 Looker 连接

在 Looker 的管理部分中,选择连接,然后点击添加连接

填写如下连接详细信息(如需了解详情,请参阅将 Looker 连接到您的数据库文档页面):

  • 名称:连接的名称。这是 LookML 模型中引用连接的方式。
  • 方言Cloudera Impala 3.1+Cloudera Impala 3.1+ with Native DriverCloudera Impala with Native Driver

  • Host(主机):主机名。

  • 端口:数据库端口(默认为 21050)。

  • 数据库:将建模的默认架构/数据库。如果没有为表指定数据库,则处于假设状态。

  • 用户名:将此项留空。

  • Password(密码):将此项留空。

  • 启用 PDT:使用此切换开关可启用永久性派生表。启用 PDT 后,Connection 窗口会显示其他 PDT 设置以及 PDT 替换部分。

  • 临时数据库:用于存储 PDT 的临时架构/数据库。必须事先创建该模板。

  • 其他 JDBC 参数:JDBC 字符串的其他参数。在此处指明 Kerberos 正文,例如 ;principal=impala/impala.company.com@REALM。由三部分组成的主账号是标准主账号。第一个 (impala) 通常是服务的名称,最后一个 (REALM) 通常是领域。

  • SSL:选中此选项可使用 SSL 连接。如果您的 SSL 证书不是由公认的证书授权机构颁发的,而且您使用的是自定义证书,那么您需要执行以下操作:

    • 将证书文件复制到 Looker 服务器。这仅适用于客户托管的 Looker 部署。
    • 其他 JDBC 参数字段中添加以下参数:
  sslTrustStore=/path/to/your/trust_store.jks;trustStorePassword=yourpassword

如需详细了解如何为 Impala 数据库创建正确的 JDBC 字符串,请参阅 Cloudera 文档

  • 数据库时区:存储在数据库中的数据的时区。通常,您可以将此字段留空或设置为 UTC

最佳做法是将服务器名称(在本例中为 impala.company.com)设为该服务器的规范名称,并在其 IP 地址的 DNS 反向查找结果中使用该名称。但是,服务器名称应为 Kerberos 网域控制器中列出的任意名称:

  nslookup servername  # get canonical server name and IP address

  nslookup ipaddress  # get the canonical name back

有时服务器名称设置为主机名,而不是完全限定域名。在这种情况下,可能需要修改 /etc/hosts/etc/nsswitch.conf 文件,以确保反向查找按预期解析。

测试连接,确保其配置正确。

调试

资源

PDT 的权限

连接到永久性派生表 (PDT) 临时架构的用户必须具有读/写权限。

功能支持

要让 Looker 支持某些功能,您的数据库方言也必须支持这些功能。

带有原生驱动程序的 Cloudera Impala

从 Looker 24.10 开始,采用原生驱动程序的 Cloudera Impala 支持以下功能:

特征 是否支持?
支持级别
受支持
Looker (Google Cloud Core)
对称汇总
派生表
永久性 SQL 派生表
永久性原生派生表
稳定视图
终止查询
基于 SQL 的数据透视
时区
SSL
小计
JDBC 其他参数
区分大小写
位置类型
名单类型
百分位
不同百分位
SQL Runner 显示进程
SQL Runner 描述表
SQL Runner 显示索引
SQL Runner 选择 10
SQL 运行程序数量
SQL 说明
OAuth 凭据
上下文注释
连接池
HLL 素描
聚合感知
增量 PDT
毫秒
微秒
具体化视图
非重复近似计数

Cloudera Impala 3.1 及以上版本

从 Looker 24.10 开始,Cloudera Impala 3.1 及更高版本支持以下功能:

特征 是否支持?
支持级别
受支持
Looker (Google Cloud Core)
对称汇总
派生表
永久性 SQL 派生表
永久性原生派生表
稳定视图
终止查询
基于 SQL 的数据透视
时区
SSL
小计
JDBC 其他参数
区分大小写
位置类型
名单类型
百分位
不同百分位
SQL Runner 显示进程
SQL Runner 描述表
SQL Runner 显示索引
SQL Runner 选择 10
SQL 运行程序数量
SQL 说明
OAuth 凭据
上下文注释
连接池
HLL 素描
聚合感知
增量 PDT
毫秒
微秒
具体化视图
非重复近似计数

带有原生驱动程序的 Cloudera Impala 3.1+

从 Looker 24.10 开始,带原生驱动程序的 Cloudera Impala 3.1 及更高版本支持以下功能:

特征 是否支持?
支持级别
受支持
Looker (Google Cloud Core)
对称汇总
派生表
永久性 SQL 派生表
永久性原生派生表
稳定视图
终止查询
基于 SQL 的数据透视
时区
SSL
小计
JDBC 其他参数
区分大小写
位置类型
名单类型
百分位
不同百分位
SQL Runner 显示进程
SQL Runner 描述表
SQL Runner 显示索引
SQL Runner 选择 10
SQL 运行程序数量
SQL 说明
OAuth 凭据
上下文注释
连接池
HLL 素描
聚合感知
增量 PDT
毫秒
微秒
具体化视图
非重复近似计数

后续步骤

将数据库连接到 Looker 后,请为用户配置登录选项