返回首页

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
客户端。

IsReadOnly 属性
获取一个值,该值指示GBaseParameterCollection 是否是只读的。

语法
[Visual Basic]
Public Overrides ReadOnly Property IsReadOnly As Boolean

Get
[C#]
public override bool IsReadOnly { get; }

实现

GBase 8a 程序员手册ADO.NET 篇


- 298 -

南大通用数据技术股份有限公司
IList.IsReadOnly

功能描述
修改自定义函数的属性。
注意事项
只有函数的所有者或者被授予了函数ALTER 权限的用户才能执行ALTER FUNCTION
命令,系统管理员默认拥有该权限。针对所要修改属性的不同,还有以下权限约束:

如果函数中涉及对临时表相关的操作,则无法使用ALTER FUNCTION。

修改函数的所有者或修改函数的模式,当前用户必须是该函数的所有者或者系统管理
员,且该用户是新所有者角色的成员。

只有系统管理员和初始化用户可以将function 的schema 修改成public。
语法格式
修改自定义函数的附加参数。
ALTER FUNCTION function_name ( [ { [ argname ] [ argmode ] argtype} [, ...] ] )
action [ ... ] [ RESTRICT ];
where action can be:
{CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT}
|
{IMMUTABLE | STABLE | VOLATILE}
|
{NOT FENCED | FENCED}

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
704
|
[ NOT ] LEAKPROOF
|
{[ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER}
|
AUTHID { DEFINER | CURRENT_USER }
|
COST execution_cost
|
ROWS result_rows
|
SET configuration_parameter {{ TO | = } { value | DEFAULT }| FROM CURRENT}
|
RESET {configuration_parameter| ALL}
其中附加参数action 子句语法为。
{CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT}
| {IMMUTABLE | STABLE | VOLATILE}
| {NOT FENCED | FENCED}
| [ NOT ] LEAKPROOF
| { [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER }
| AUTHID { DEFINER | CURRENT_USER }
| COST execution_cost
| ROWS result_rows
| SET configuration_parameter { { TO | = } { value | DEFAULT }| FROM CURRENT}
| RESET {configuration_parameter | ALL}
修改自定义函数的名称。
ALTER FUNCTION funname ( [ { [ argname ] [ argmode ] argtype} [, ...] ] )
RENAME TO new_name;
修改自定义函数的所属者。
ALTER FUNCTION funname ( [ { [ argname ] [ argmode ] argtype} [, ...] ] )
OWNER TO new_owner;
修改自定义函数的模式。
ALTER FUNCTION funname ( [ { [ argname ] [ argmode ] argtype} [, ...] ] )
SET SCHEMA new_schema;
参数说明

function_name
要修改的函数名称。
取值范围:已存在的函数名。

argmode

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
705
标识该参数是输入、输出参数。
取值范围:IN/OUT/INOUT/VARIADIC。

argname
参数名称。
取值范围:字符串,符合标识符命名规范。

argtype
函数参数的类型。

CALLED ON NULL INPUT
表明该函数的某些参数是NULL 的时候可以按照正常的方式调用。缺省时与指定此参
数的作用相同。

RETURNS NULL ON NULL INPUT
STRICT
STRICT 用于指定如果函数的某个参数是NULL,此函数总是返回NULL。如果声明了
这个参数,则如果存在NULL 参数时不会执行该函数;而只是自动假设一个NULL 结果。
RETURNS NULL ON NULL INPUT 和STRICT 的功能相同。

IMMUTABLE
表示该函数在给出同样的参数值时总是返回同样的结果。

STABLE
表示该函数不能修改数据库,
对相同参数值,
在同一次表扫描里,
该函数的返回值不变,
但是返回值可能在不同SQL 语句之间变化。

VOLATILE
表示该函数值可以在一次表扫描内改变,不会做任何优化。

LEAKPROOF

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
706
表示该函数没有副作用,指出参数只包括返回值。LEAKPROOF 只能由系统管理员设
置。

EXTERNAL
(可选)目的是和SQL 兼容,这个特性适合于所有函数,而不仅是外部函数。

SECURITY INVOKER
AUTHID CURRENT_USER
表明该函数将以调用它的用户的权限执行。缺省时与指定此参数的作用相同。
SECURITY INVOKER 和AUTHID CURRENT_USER 的功能相同。

SECURITY DEFINER
AUTHID DEFINER
声明该函数将以创建它的用户的权限执行。
AUTHID DEFINER 和SECURITY DEFINER 的功能相同。

COST execution_cost
用来估计函数的执行成本。
execution_cost 以cpu_operator_cost 为单位。
取值范围:正数

ROWS result_rows
估计函数返回的行数。用于函数返回的是一个集合。
取值范围:正数,默认值是1000 行。

configuration_parameter

value
把指定的数据库会话参数值设置为给定的值。如果value 是DEFAULT 或者RESET,

在新的会话中使用系统的缺省设置。OFF 关闭设置。

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
707
取值范围:字符串

DEFAULT

OFF

RESET
指定默认值。

from current
取当前会话中的值设置为configuration_parameter 的值。

new_name
函数的新名称。要修改函数的所属模式,必须拥有新模式的CREATE 权限。
取值范围:字符串,符合标识符命名规范。

new_owner
函数的新所有者。
要修改函数的所有者,
新所有者必须拥有该函数所属模式的CREATE
权限。
取值范围:已存在的用户角色。

new_schema
函数的新模式。
取值范围:已存在的模式。
示例
请参见CREATE FUNCTION 的示例。
相关命令
CREATE FUNCTION,DROP FUNCTION

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
708