返回首页

gbase数据、南大通用产品文档:GBase8a加载/导出Kerberos 认证下HDFS 文件

更新日期:2024年09月11日

HDFS 中集成了Kerberos 安全认证情况下,
GBase 8a MPP Cluster 节点部署Kerberos
客户端后,
即可以执行加载或导出Kerberos 认证下的HDFS 文件。
加载或导出操作
需完成如下配置:

设置gbase_hdfs_auth_mode=kerberos,
指定使用Kerberos 认证方式连接HDFS。

设置gbase_hdfs_protocol=http/https/rpc,指定使用HTTP/HTTPS/RPC 协议连接
HDFS。

设置gbase_hdfs_principal="xxx",指定Kerberos 认证主体。

设置gbase_hdfs_keytab='xxx',指定keytab 文件路径。
以上配置完成后,即可进行加载导出操作,具体操作同普通的HDFS 文件操作,可
参考本章节的5.2.1 和5.2.2 小节。

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
472
执行加载导出前的配置需要注意:

HDFS 的HTTP 端口号默认为50070,HTTPS 端口号默认为50470,RPC 端口
号默认为9000,
三种协议的端口不同,
在加载或导出SQL 的URL 中的端口需
要与指定的协议一致。

使用HTTPS 协议连接HDFS 时,
因为客户端需要使用CA 根证书对HTTPS 地
址进行验证,所以在加载或导出SQL 的URL 中,指定的HDFS NameNode 的
主机名(或地址)必须与CA 签名的主机名(或地址)完全相同。

当不指定gbase_hdfs_keytab 参数值或指定的参数值为空字符串时,将使用
gbase_hdfs_principal 推定keytab 文件名,
此时应将keytab 文件复制到config 目
录下,keytab 文件的名称应与gbase_hdfs_principal 参数值对应,请参考配置文
件章节。例如:
set gbase_hdfs_principal='gbase/namenode@HADOOP.COM'则config 目录下
keytab 文件名应为:gbase_namenode.kt。

由于Hadoop 和Kerberos 对DNS 解析依赖程度很高,需要DNS 支持正向
(forward)和反向(reverse)查找,在Kerberos 认证环境中在加载和导出语句
的URL 中推荐使用主机名,而不建议使用IP 地址。

多套带不同kerberos 认证的hadoop 集群导入导出时配置

多套kerberos 配置文件合并
(多个kerberos server 的krb5 文件合并放在/etc
目录下);

Kerberos 相关的其他文件有多个就将多个都放到对应目录下,如多个
keytab 放到对应config 目录下,多个CA 证书也放到对应config 下;

GBase 8a集群导入导出hadoop的相关参数目前只有gbase_hdfs_namenodes
支持写多套hadoop 集群,其他参数只支持一套hadoop 集群,所以GBase
的hadoop 参数通过session 级参数动态配置,也可以用url 的参数方式写
在gbase_hdfs_namenodes 里;

由于GBase 8a 是通过api 访问kdc,所以不需要使用kinit 初始化kerberos
客户端。

使用 CREATE XADATASOURCE 语句创建新的兼容 XA 的数据源并为其在
sysxadatasources 系统目录表中创建一个条目。该语句是 SQL ANSI/ISO 标准的
扩展。
语法


GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 509
元素
描述
限制
语法
xa_source 此处为新的 XA 数据
源声明的名称
在 sysxadatasources 中的
XA 数据源名称中必须是唯一

标识符
xa_type
现有 XA 数据源类型
的名称
必须已经存在于
sysxasourcetypes 系统目录
表的数据库中
标识符
用法
符合 XA 标准的数据源是符合 X/Open DTP XA 标准的外部数据源,用于管理事
务管理器和资源管理器之间的交互。要在数据库中注册符合 XA 的数据源,需要
执行以下两条 SQL 语句:

首先通过使用 CREATE XADATASOURCE 语句创建一个或多个符合
XA 的数据类型。

然后用 CREATE XADATASOURCE 语句创建一个或多个符合 XA 数据
源的实例。
您可以使用两阶段提交协议将 XA 数据源中的事务与 GBase 8s 事务集成,以确
保事务在多个数据库之间一致提交或回滚,并在同一全局事务中管理多个外部
XA 数据源。
高可用集群的辅助服务器上不支持 CREATE XADATASOURCE 语句。
任何用户都可以根据数据库是否符合 ANSI 的状态创建遵循所有者命名规则标准
的 XA 数据源。只有使用事务日志记录的数据库才支持 X/Open DTP XA 标准。
如果您包含了可选的 IF NOT EXISTS 关键字,则如果它指定名称的 XA 数据源
已在当前数据库中注册,则数据库服务器不会执行任何操作(而不是向应用程序
发送异常)。
XA 数据源类型和 XA 数据源实例都会指定到一个数据库。要支持分布式事务,
必须在多个与外部 XA 数据源交互的数据库中创建它们。
以下语句创建一个新的 XA 数据源实例,它的名称为 gbasedbt.NewYork ,是
gbasedbt.MQSeries 类别。
CREATE XADATASOURCE gbasedbt.NewYork USING gbasedbt.MQSeries;

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 510
SQL 语句在 XA 环境中无效
当您在尝试在 X/Open 分布式事务处理环境中执行以下任何语句时, GBase 8s
数据库服务器发出错误 -701 :

CLOSE DATABASE

CREATE DATABASE

DROP DATABASE

SET LOG

SAVEPOINT

RELEASE SAVEPOINT

ROLLBACK TO SAVEPOINT
在 XA 环境中,您可以在 xa_open 调用指定当前数据库后执行一个 DATABASE
语句。但是,当选择了该数据库后,在同一会话中不能有其它 DATABASE 语
句。如果您创建执行第二个 DATABASE 语句,DATABASE 语句发生错误 -701
并失败。

Function doesn't have an output parameter
该函数没有 OUT 参数,或该函数具有的 OUT 参数值是服务器版本不返回的。
CallableStatement 接口中的方法都不适用。使用PreparedStatement 接口的继承方法。