本文介绍如何配置Serverless StarRocks实例,以安全访问启用了Kerberos的Hadoop集群,实现高效的数据查询与分析,确保数据访问的安全性与性能。
前提条件
实例与集群准备:
网络连通性:
确保Serverless StarRocks实例和Hadoop集群(DataLake集群在)位于同一VPC内,或者网络已打通。
配置安全组规则,允许StarRocks实例访问Hadoop集群(DataLake集群在)的相关端口。
重要配置安全组规则时,端口范围请根据实际需求选择性开放必要的端口。
操作流程
步骤一:配置StarRocks实例参数
进入参数配置页面。
在左侧导航栏,选择
。在顶部菜单栏处,根据实际情况选择地域。
单击目标实例的名称。
单击参数配置页签。
在参数配置页面,单击新增配置项,新增以下配置项。
文件
配置项
说明
参考值
hdfs-site.xml
dfs.data.transfer.protection
数据传输保护级别,确保数据在传输过程中的安全性。参数值需与DataLake集群保持一致。
说明您可以在DataLake集群的HDFS服务的hdfs-site.xml文件中,搜索并查看
dfs.data.transfer.protection
参数值。integrity
dfs.datanode.kerberos.principal
DataNode的Kerberos主体名称,需与DataLake集群保持一致。
说明您可以在DataLake集群的HDFS服务的hdfs-site.xml文件中,搜索并查看
dfs.datanode.kerberos.principal
参数值。hdfs/_HOST@EMR.C-AAA**********CCC.COM
dfs.namenode.kerberos.principal
NameNode的 Kerberos主体名称,需与DataLake集群保持一致。
说明您可以在DataLake集群的HDFS服务的hdfs-site.xml文件中,搜索并查看
dfs.namenode.kerberos.principal
参数值。hdfs/_HOST@EMR.C-AAA**********CCC.COM
core-site.xml
hadoop.security.authentication
启用Kerberos身份验证机制。
kerberos
hive-site.xml
hive.metastore.sasl.enabled
是否启用SASL认证,默认为
true
。true
hive.metastore.kerberos.principal
Hive Metastore的Kerberos主体名称,需与DataLake集群保持一致。
说明您可以在DataLake集群的Hive服务的hive-site.xml文件中,搜索并查看
hive.metastore.kerberos.principal
参数值。hive/_HOST@EMR.C-AAA**********CCC.COM
(可选)步骤二:HA模式HDFS集群附加配置
如需访问HA模式的EMR集群,还需在StarRocks实例的参数配置页面,为hdfs-site.xml
文件添加以下配置。
您可以在EMR集群的集群服务页签下,进入HDFS服务的配置页签,在hdfs-site.xml文件中查找相关参数的值。
参数 | 说明 | 参考值 |
| 指定HDFS服务的名称,您可以自定义。 |
|
| 自定义NameNode的名称,多个名称时以逗号(,)分隔。其中。 |
|
| 指定NameNode的RPC地址信息。其中nn表示 |
|
|
| |
|
| |
| 指定Client连接NameNode的Provider。 |
|
步骤三:Kerberos认证配置
配置
kerberos.keytab
文件。获取Base64编码的Keytab文件。
通过SSH方式登录EMR集群,详情请参见登录集群。
使用以下命令,将StarRocks访问Hive所需的
hive.keytab
文件进行Base64编码,并确保编码后的内容无换行符。base64 -w 0 /etc/taihao-apps/hive-conf/keytab/hive.keytab
说明确保
hive.keytab
文件是Serverless StarRocks访问Hive所需的Keytab文件。如果Keytab文件内容不正确,可能会导致身份验证失败。
在StarRocks实例的参数配置页面,单击左侧的kerberos.keytab。
将生成的Base64字符串填入
kerberos.keytab
的Content配置项中。
配置
krb5.conf
文件。在StarRocks实例的参数配置页面,单击左侧的
krb5.conf
。在
content
中填入以下内容,其内容应与DataLake集群的krb5.conf
文件内容保持一致。说明您可以登录EMR集群,然后执行
cat /etc/krb5.conf
命令,获取DataLake集群中krb5.conf
的文件内容。[libdefaults] default_realm = EMR.C-AAA**********CCC.COM dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true rdns = false dns_canonicalize_hostname = true pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt kdc_timeout = 30s max_retries = 3 [realms] EMR.C-AAA**********CCC.COM = { kdc = master-1-1.c-aaa**********ccc.cn-beijing.emr.aliyuncs.com:88 kdc = master-1-2.c-aaa**********ccc.cn-beijing.emr.aliyuncs.com:88 admin_server = master-1-1.aaa**********ccc.cn-beijing.emr.aliyuncs.com:749 }
涉及参数如下所示:
[libdefaults]
部分参数
说明
default_realm
默认的Kerberos的Realm,用于标识身份认证的范围。
dns_lookup_realm
是否通过DNS查找领域信息。通常设置为
false
,以避免DNS解析问题。dns_lookup_kdc
是否通过DNS查找KDC(Key Distribution Center)地址。通常设置为
false
。ticket_lifetime
Kerberos Ticket的有效期。本文示例设置为
24h
,表示Ticket在24小时内有效。renew_lifetime
Ticket续期的最大有效期。本文示例设置为
7d
,表示Ticket最多可以续期7天。forwardable
是否允许Ticket转发。设置为
true
可支持跨服务的身份验证。rdns
是否使用反向DNS解析。设置为
false
可避免DNS解析冲突。dns_canonicalize_hostname
是否启用主机名规范化。设置为
true
可确保主机名解析的一致性。pkinit_anchors
PKINIT锚点证书路径,用于支持基于公钥的身份验证。
kdc_timeout
KDC请求的超时时间。本文示例设置为
30s
,表示每次请求最多等待30秒。max_retries
最大重试次数。本文示例设置为
3
,表示最多尝试3次连接 KDC。[realms]
部分参数
说明
EMR.C-AAA**********CCC.COM
定义Kerberos的Realm。
kdc
KDC服务器地址及端口,用于分发Ticket。可以配置多个KDC地址以提高可用性。
admin_server
管理服务器地址及端口,用于管理Kerberos主体和Ticket。
步骤四:验证配置
创建Hive Catalog。
CREATE EXTERNAL CATALOG hive_catalog PROPERTIES ( "type" = "hive", "hive.metastore.uris" = "thrift://master-1-1.c-7ebc1ff2****.cn-hangzhou.emr.aliyuncs.com:9083" );
说明hive.metastore.uris
为Hive MetaStore的URI。您可以在DataLake集群的Hive服务的hive-site.xml文件中,搜索并查看hive.metastore.uris
参数值。查看Catalog目录下的数据库。
如果能够正常显示数据库列表,则说明访问正常。
SET CATALOG hive_catalog; SHOW DATABASES;