前提条件:
1.已搭建好好带 Keberos 认证的 Hdfs 集群
2.各节点已安装数据库(未初始化),并按照官方文档做好了“安装准备”。
操作步骤:
1.首先在本地部署 hdfs 客户端,方便测试远程 hdfs 的可用性,部署完毕后,将远程 hdfs 的 core-site.xml,hdfs-site.xml 和 hadoop-env.sh 拷贝到/etc/hadoop/conf 目录下,修改 hadoop-env.sh 中的 JAVA_HOME 为本地配置
同时需要修改 OushuDB 集群每个节点的/etc/hosts 文件,在其中加入 Hdfs 集群每个节点的信息
2.在 OushuDB master 节点,安装 Kerberos 相关依赖包
yum install krb5-server krb5-libs krb5-workstation -y
3.登录 KDC Server(一般为 Standby NameNode 所在的节点),将 krb5.conf 拷贝到 OushuDB 集群的机器上
scp /etc/krb5.conf 10.0.5.58:/etc/
scp /etc/krb5.conf 10.0.5.146:/etc/
scp /etc/krb5.conf 10.0.5.239:/etc/
4.创建 OushuDB 的 principal
kadmin.local -q "addprinc -randkey postgres@HADOOP.COM"
kadmin.local -q "xst -norandkey -k /etc/security/keytabs/hawq.keytab postgres@HADOOP.COM"
5.将上一步生成的 hawq.keytab 分发至 OushuDB Master 节点
scp /etc/security/keytabs/hawq.keytab 10.0.5.58:/home/gpadmin/hawq.keytab
6.修改 Hdfs 集群的 core-site.xml 文件,重启 Hdfs 服务:
<property>
<name>hadoop.rpc.protection</name>
<value>authentication,privacy</value>
</property>
改成:
<value>authentication</value>
7.登录 OushuDB Master 节点, 更改 keytab 文件的用户权限和读写权限
chown gpadmin:gpadmin /home/gpadmin/hawq.keytab
chmod 400 /home/修改gpadmin/hawq.keytab
8.修改/usr/local/hawq/etc/hawq-site.xml,加入如下内容:
<property>
<name>enable_secure_filesystem</name>
<value>ON</value>
</property>
<property>
<name>krb_server_keyfile</name>
<value>/home/gpadmin/keys/hawq.keytab</value>
</property>
<property>
<name>krb_srvname</name>
<value>postgres</value>
</property>
- 修改 hdfs-client.xml,添加如下内容
<property>
<name>hadoop.security.authentication</name>
<value>kerberos</value>
</property>
<property>
<name>hadoop.rpc.protection</name>
<value>authentication</value>
</property>
10.编辑 hdfs-client.xml 文件,打开 HA 相关配置,根据 Hdfs 集群的 HA 配置填写即可
11.编辑 slaves,添加 OushuDB 的 segment 节点名称,将/usr/local/hawq/etc/下的文件分发到各节点
hawq scp -r -f ~/hostfile /usr/local/hawq/etc/* =:/usr/local/hawq/etc/
12.登录 Hdfs 服务器,建出 OushuDB 存储目录,并改变所属权限
hdfs dfs -mkdir -p /hawq/default_filespace
hdfs dfs -chown -R postgres:gpadmin /hawq
13.至此,Kerberos 相关配置已完成,OushuDB 相关初始化的配置参考官网,在初始化数据库前,先使用本地 hdfs 客户端测试连通性:
# 切换到gpadmin
su - gpadmin
# 执行Kinit操作
kinit -kt /home/gpadmin/hawq.keytab postgres
# 测试hdfs可用性
hdfs dfs -ls /
没问题后,便可以开始初始化 OushuDB,初始化完毕后,建表检查数据库可用性
# 建表
CREATE READABLE EXTERNAL TABLE t_ext (a1 varchar) LOCATION ('hdfs://hdfs-ha/tmp/test') format 'csv';
# 查询
select * from t_ext;