南大通用GBase 8a 加载kerberos认证的hdfs文件

GBase 8a加载支持hadoop里hdfs文件,同时支持kerberos认证。本文介绍该功能的配置和使用方法。

配置参数

hdfs参数需要在每个 gcluster 和 gnode 的配置文件的[gbased]段中添加。

这些参数均支持set方式临时设置。建议调试可用后,再写入配置文件。

gbase_hdfs_protocol

协议类型,支持http、https和rpc协议连接hdfs。不同协议要配合不同的端口,由参数 gbase_hdfs_port指定。

本参数虽然支持几种字母大小写混用模式,但【个人】建议全部大写或小写,简单好用。

gbase_hdfs_port

hadoop 2和3的默认端口有变动。

协议hadoop 2.X端口hadoop 3.X端口
http500709870
https504709871
rpc9000/80208020

gbase_hdfs_auth_mode

hdfs认证类型,支持

  • simple:使用基本认证;
  • kerberos:使用 Kerberos 认证。

选择kerberos认证,需要额外配置keytab和principal信息等。

本参数虽然支持几种字母大小写混用模式,但【个人】建议全部大写或小写,简单好用。

gbase_hdfs_namenodes

通过此参数可指定一或多个 NameNode 的 host(即主机名或 IP 地址),两个 host 之间用英文逗号分隔,每个 host 后可跟“:port”形式的端口号。如果有多套 HDFS 环境,两套 HDFS 的高可用 NameNode 组之间使用'|'分隔。

gbase_hdfs_namenodes='192.168.1.1,192.168.1.2'
gbase_hdfs_namenodes="192.168.1.1:50170,192.168.1.2"
gbase_hdfs_namenodes='192.168.1.1:50170,192.168.1.2:50180'
gbase_hdfs_namenodes='192.168.1.1,192.168.1.2|192.168.2.1,192.168.2.2'

另外,用主机名也是支持的方案。

gbase_hdfs_namenodes='hdfs_nn1:8020,hdfs_nn2:8020'

gbase_hdfs_keytab

字符串变量,用于指定 Kerberos 认证中安全主体 keytab 文件名。

参数两边可以用单引号,双引号包围,或者没有包围符。个人建议不用。

gbase_hdfs_keytab=$GBASE_BASE/config/gbase.keytab
gbase_hdfs_keytab='$GBASE_BASE/config/gbase.keytab'
gbase_hdfs_keytab="$GBASE_BASE/config/gbase.keytab"

gbase_hdfs_principal

用于指定 Kerberos 认证中安全主体名称。在 HDFS 集群环境中合格的 principal 格式为 username/hostname@REALM.COM。

其它配置

集群所有节点需配置/etc/hosts,添加 Hadoop 的 Namenode 和 Datanode 的 IP 地址和主机名映射。

10.0.2.141  hadoop141
10.0.2.142  hadoop142

样例

gbase> load data infile 'hdp://hdfs:hdfs2@hadoop141/*.txt' into table t2 fields terminated by ',';
Query OK, 2 rows affected (Elapsed: 00:00:01.02)
Task 4107 finished, Loaded 2 records, Skipped 0 records

总结

GBase 8a集群可以加载hdfs文件,如果hadoop做了某些安全加固,特别是http/https导致认证失败时:

401 Authentication required 

可以用rpc协议试试。