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端口 |
---|---|---|
http | 50070 | 9870 |
https | 50470 | 9871 |
rpc | 9000/8020 | 8020 |
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协议试试。