GaussDB(DWS) HDFS外表支持联邦
一、背景:
HDFS已支持联邦,现场HDFS切换成联邦模式,对应hdfs上数据目录及namenode地址发生变化导致原GaussDB(DWS)外表无法正常访问。客户通过重建server以及对应数据的目录,新增联邦配置文件,创建对应联邦namenode HDFS Server,新建外表,维护成本太高。
GaussDB(DWS)支持联邦后,通过指定多个router地址,访问随机访问router实例与多个nameservice读写数据,避免router单点故障;增加nameservice可以实现业务数据隔离,提升整个HDFS文件系统性能。
二、联邦外表读流程:
(1)客户端调用Router提供的请求接口。
(2)该Router向zookeeper服务查询该请求对应的正确的NN地址。
(3)Router得到正确的NN地址后,将请求转发到正确的NN上。
(4)然后NN返回文件数据所在的DN地址,客户端与此DN进行消息通信(读/写block文件数据)
其中Zookeeper存储每组nameservice上挂载表信息。Router组件主要负责读写过程中请求转发
三、挂载表配置(根据实际情况配置挂载表)
1、打开HDFS服务
2、点击管理NameService
3、点击“添加”
4、根据步骤添加NameService
注意:分配角色步骤,需要根据HDFS添加JournalNode实例数,并且添加一对NameNode对应需要添加一对Zkfc及若干JournalNode
一般安装JournalNode个数由HDFS集群规模决定:
- 数据节点(DataNode)数为3-100时,JournalNode个数为3个
- 数据节点(DataNode)数为100-500时,JournalNode个数为5个
- 数据节点(DataNode)数为500-5000时,JournalNode个数为9个
5、添加完NameService后,需要修改参数fs.defaultFS开启联邦模式,修改参数为hdfs://nsfed,保存后并重启HDFS集群后参数生效。
6、添加挂载表
四、联邦使用场景:
1、创建server
CREATE SERVER mounttb_diff_001
FOREIGN DATA WRAPPER HDFS_FDW
OPTIONS (type 'hdfs',
address '192.168.1.1: 5000, 192.168.1.2: 5000, 192.168.1.3:5000',
hdfscfgpath '/home/conf/',
fed 'rbf');
其中标红根据实际情况填写
address联邦rbf方式时填写router的ip及端口,可以支持大于2个router地址,此时需要与fed参数配合使用。使用联邦外表读写时,会随机访问指定的router地址。
hdfscfgpath存储HDFS远程读相关配置core-site.xml、elk-site.xml、hdfs.keytab、hdfs-site.xml、krb5.conf文件。
fed参数表示HDFS外表使用联邦rbf方式。
2、创建联邦外表
create foreign table mounttb_diff_tb_001 (
c_customer_sk integer not null,
c_customer_id char(16) not null,
c_current_cdemo_sk integer ,
c_current_hdemo_sk integer ,
c_current_addr_sk integer ,
c_first_shipto_date_sk integer ,
c_first_sales_date_sk integer ,
c_salutation char(10) ,
c_first_name char(20) ,
c_last_name char(30) ,
c_preferred_cust_flag char(1) ,
c_birth_day integer ,
c_birth_month integer ,
c_birth_year integer ,
c_birth_country varchar(20) ,
c_login char(13) ,
c_email_address char(50) ,
c_last_review_date char(10) ) SERVER mounttb_diff_001
OPTIONS(foldername '/nn2/orc_new/orc1/orc2/public.customer/',
format 'orc',
encoding 'utf8' )distribute by roundrobin;
注意:foldername使用挂载表配置全局路径对应的目录
3、查询外表
select c_salutation,count(1) from mounttb_diff_tb_001 where c_customer_id like 'AAAAAAAAD%' group by c_salutation order by 1;
想了解GuassDB(DWS)更多信息,欢迎微信搜索“GaussDB DWS”关注微信公众号,和您分享最新最全的PB级数仓黑科技,后台还可获取众多学习资料哦~
- 点赞
- 收藏
- 关注作者
评论(0)