对接HiveMetaStore,拥抱开源大数据
本文分享自华为云社区《对接HiveMetaStore,拥抱开源大数据》,作者:睡觉是大事。
1. 前言
-
适用版本:9.1.0及以上
在大数据融合分析时代,面对海量的数据以及各种复杂的查询,性能是我们使用一款数据处理引擎最重要的考量。而GaussDB(DWS)服务有着强大的计算引擎,其计算性能优于MRS服务中的hive或者spark这类计算引擎,且可以以更低的成本满足业务高弹性和敏捷性需求。通过与MRS联动,无需搬迁数据,利用DWS的高性能计算引擎处理和分析数据湖中的海量数据以及各种复杂的查询业务、分析业务越来越成为主流的解决方案。
我们可以通过创建external schema的方式来对接HiveMetaStore元数据服务,从而实现GaussDB(DWS)直接查询hive/spark表或者插入数据到hive/spark表。无需创建读外表或者写外表,也无需担心hive/spark表的定义发生变化时GaussDB(DWS)没有及时更新表定义。
本文章主要描述了GaussDB(DWS)与hivememtastore对接配置与指导。
2. 原理浅析
2.1 什么是HiveMetaStore
HiveMeatStore是Apache Hive的一个关键组件,它是一个元数据存储库,用于管理hive/spark表的元数据信息。HiveMeatStore存储了Hive表的结构信息,包括表名、列名、数据类型、分区信息等。它还存储了表的位置信息,即表数据存储何处。HiveMeatStore的主要作用是提供元数据服务,使得Hive/Spark可以对数据进行查询和分析。它还提供了一些API,可以让开发人员通过编程方式访问表的元数据。总之,HiveMeatStore是Hive的一个重要组件,它提供了元数据管理和查询服务。
external schema即外部模式,GaussDB(DWS)通过创建extrenal schema来对接HiveMeatStore服务,每次查询主动获取hive/spark表对象的元数据。无需GaussDB(DWS)内核通过create foreign table获取hive/spark表的元数据。
2.2 external schema与schema的区别
1 external schema主要用于与HiveMeatStore建立连接,获取表对象元数据,在创建external schema时需要指定连接的所需要的各个属性值。
2 普通schema在创建后会将schema的信息记录在pg_namespace中,external schema创建后和普通schema一样也会记录在pg_namespace,可以通过pg_namespace中的nsptype字段区分是external schema还是普通schmea。
除了存储在pg_namespace中的相关信息外,external schema连接相关的配置信息都会记录在pg_external_namespace中。
2.3 原理说明
GaussDB(DWS)对接HiveMetaStore流程如下图所示
1.创建Server,external schema,sql query查询。
用户在使用本特性前,将需要创建Server,创建Server过程与已有Server创建过程相同
对于创建OBS server有两种方式,一种是通过永久AK、SK的方式创建。(此种方式前提是可以获取永久AK、SK,但是此种方式不安全,AK/SK直接暴露在配置文件中,并且创建服务的时候需要明文输入AK、SK,不建议采用此种方式创建服务)
另一种云上DWS绑定ECS委托方式访问OBS,通过管控面创建OBS server。委托通过管控面创建server可参考创建外表时如何创建OBS server。https://support.huaweicloud.com/mgtg-dws/dws_01_1602.html
创建external schema:
external schema创建语法为
CREATE External Schema ex WITH SOURCE hive DATABASE 'default' SERVER hdfs_server METAADDRESS '10.254.159.121:9010' CONFIGURATION '/home/fengshuo/conf2';
其中SOURCE字段指定了外部元数据存储引擎的类型,DATABASE为Hive中对应的数据库名,SERVER为步骤1中创建的server,METAADDRESS为Hive提供的地址端口信息,CONFIGURATION为Hive、Kerberos相关配置文件路径。
external schema的目标是对接外部元数据(Foreign Meta),使得DWS能主动感知外部元数据的变化,如下图所示。
GaussDB(DWS) 通过external schema 对接HiveMetaStore,映射到对应的外表元数据,再通过外表访问 Hadoop。
SQL查询:select查询形式为 select * from ex.tbl,其中tbl为外源表名,ex为已创建的external schema。
2.语法解析:语法解析层主要针对进行解析,主要负责以下内容:
当读取到ex.tbl表以后,连接HMS进行元数据查询
3.元数据查询:从HMS中查询元数据信息,该步骤在步骤1中完成。从HMS中读取数据,主要包括列信息,分区信息、分区键信息、分隔符信息等。
4.数据查询(针对select):从DFS存储中获取统计信息文件个数和文件大小,为plan生成提供依据。
5.查询重写、查询优化、查询执行
6.查询下发:将元数据随plan下发给DN,DN收到plan以后,会将元数据进行解码后插入到SysCache中。
7.查询执行:DN访问obs对应文件,执行查询。
3. 与hivememtastore对接流程
3.1 准备环境
已创建 DWS 3.0集群和MRS分析集群,需确保MRS和DWS集群在同一个区域、可用区、同一VPC子网内,确保集群网络互通;
已获取AK和SK。3.2 在hive端创建需要对接的表
1、在/opt/client路径下,导入环境变量。source bigdata_env
2、登录Hive客户端。
3、依次执行以下SQL语句创建demo数据库及目标表表product_info。CREATE DATABASE demo;
use demo;
DROP TABLE product_info; CREATE TABLE product_info ( product_price int , product_id char(30) , product_time date , product_level char(10) , product_name varchar(200) , product_type1 varchar(20) , product_type2 char(10) , product_monthly_sales_cnt int , product_comment_time date , product_comment_num int , product_comment_content varchar(200) ) row format delimited fields terminated by ',' stored as orc;4、通过insert导入数据到hive表
3.3 创建外部服务器
使用Data Studio连接已创建好的DWS集群。
MRS端有两种支持格式,hdfs和obs。hive对接这两种场景的创建外部服务器的方式也有所不同
执行以下语句,创建OBS外部服务器。
CREATE SERVER obs_servevr FOREIGN DATA WRAPPER DFS_FDW OPTIONS ( address 'obs.xxx.com:5443', //OBS的访问地址。 encrypt 'on', access_key '{AK值}', secret_access_key '{SK值}', type 'obs' );
执行以下语句,创建HDFS外部服务器。
CREATE SERVER hdfs_server FOREIGN DATA WRAPPER HDFS_FDW OPTIONS ( TYPE 'hdfs', ADDRESS '{主节点},{备节点}', HDFSCFGPATH '{hdfs配置文件地址}');
认证用的AK和SK硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全。另外,dws内部会对sk做加密处理,因此不用担心sk在传输过程中泄漏。
查看外部服务器(obs为例)。SELECT * FROM pg_foreign_server WHERE srvname='obs_server';
返回结果如下所示,表示已经创建成功:
srvname | srvowner | srvfdw | srvtype | srvversion | srvacl | srvoptions --------------------------------------------------+----------+--------+---------+------------+--------+--------------------------------------------------------------------------------------------------------------------- obs_server | 16476 | 14337 | | | | {address=obs.xxx.com:5443,type=obs,encrypt=on,access_key=***,secret_access_key=***} (1 row)
3.4 创建EXTERNAL SCHEMA
获取Hive的metastore服务内网IP和端口以及要访问的Hive端数据库名称。
登录MRS管理控制台。
选择“集群列表 > 现有集群”,单击要查看的集群名称,进入集群基本信息页面。
单击运维管理处的“前往manager”,并输入用户名和密码登录FI管理页面。
依次单击“集群”、“Hive”、“配置”、“全部配置”、“MetaStore”、“端口”,记录参数hive.metastore.port对应的值。
依次单击“集群”、“Hive”、“实例”,记录MetaStore对应主机名称包含master1的管理IP。
创建EXTERNAL SCHEMA
//Hive对接OBS场景:SERVER名字填写2创建的外部服务器名称,DATABASE填写Hive端创建的数据库,METAADDRESS填写1中记录的hive端metastore服务的地址和端口,CONFIGURATION为MRS数据源默认的配置路径,不需更改。 DROP SCHEMA IF EXISTS ex1; CREATE EXTERNAL SCHEMA ex1 WITH SOURCE hive DATABASE 'demo' SERVER obs_server METAADDRESS '***.***.***.***:***' CONFIGURATION '/MRS/gaussdb/mrs_server' //Hive对接HDFS场景:SERVER名字填写创建MRS数据源连接创建的数据源名称mrs_server,METAADDRESS填写1中记录的hive端metastore服务的地址和端口,CONFIGURATION为MRS数据源默认的配置路径,不需更改。 DROP SCHEMA IF EXISTS ex1; CREATE EXTERNAL SCHEMA ex1 WITH SOURCE hive DATABASE 'demo' SERVER mrs_server METAADDRESS '***.***.***.***:***' CONFIGURATION '/MRS/gaussdb/mrs_server'
查看创建的EXTERNAL SCHEMA
SELECT * FROM pg_namespace WHERE nspname='ex1'; SELECT * FROM pg_external_namespace WHERE nspid = (SELECT oid FROM pg_namespace WHERE nspname = 'ex1'); nspid | srvname | source | address | database | confpath | ensoptions | catalog --------------------------------------------------+----------+--------+---------+------------+--------+--------------------------------------------------------------------------------------------------------------------- 16393 | obs_server | hive | ***.***.***.***:*** | demo | *** | | (1 row)
3.5 执行数据导入hive表
创建本地数据源表,表结构与hive一致DROP TABLE IF EXISTS product_info_export; CREATE TABLE product_info_export ( product_price integer , product_id char(30) , product_time date , product_level char(10) , product_name varchar(200) , product_type1 varchar(20) , product_type2 char(10) , product_monthly_sales_cnt integer , product_comment_time date , product_comment_num integer , product_comment_content varchar(200) ) ;
导入数据
从本地源表导入Hive表。
INSERT INTO ex1.product_info SELECT * FROM product_info_export;
3.6 执行数据从hive导入dws表
导入数据
从本地源表导入Hive表。
INSERT INTO product_info_orc_export SELECT * FROM ex1.product_info;
4 总结
本文主要对GaussDB(DWS)对接hiveMetaStore的原理和方式做了阐述。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
GaussDB SQL查询语句执行过程解析
本文分享自华为云社区《【GaussTech第2期】GaussDB SQL查询语句执行过程解析》,作者: GaussDB 数据库。 SQL于关系型数据库而言,重要性不言而喻。就像一个乐团的指挥,指导着作品的正确演绎和节奏的和谐统一。华为云GaussDB作为新一代关系型分布式数据库,具备卓越的技术性能和行业竞争力。很多人对GaussDB的关键技术很好奇,纷纷在论坛帖上留言: GaussDB SQL语句到底是如何执行的? GaussDB SQL引擎原理是什么? GaussDB SQL引擎有哪些关键技术点? ……. 今天我们就从GaussDB SQL引擎入手,了解一下GaussDB SQL查询语句的执行过程,包括GaussDB SQL引擎原理和关键技术点。 如果您在了解的过程中有任何疑问或感兴趣的关键技术点,可参与【云咖问答】揭开GaussDB SQL引擎的神秘面纱,互动交流赢好礼活动,进行留言互动,专家会一对一进行答疑哦,更有机会获得提问好礼激励。 ↓↓↓↓ 以下是正文 首先,简单介绍一下GaussDB的系统结构,再解析GaussDB SQL查询语句的执行过程。 GaussDB系统架构 ...
- 下一篇
OurBMC开源大赛高校获奖队伍专访来啦!
精彩纷呈的 OurBMC 开源大赛已告一段落,经历为期四个月的实战,各个参赛队伍也积淀了丰富的实践经验与参赛心得。本期,社区特别邀请 OurBMC 开源大赛获奖高校团队分享「走进OurBMC开源大赛,共同践行开放包容、共创共赢的开源精神」,让更多人看见开源的魅力、技术的力量。 PART.01 · 参赛背景 利用在学校里学到的专业知识和技能,解决当今服务器故障诊断与预测领域遇到的问题,为提升服务器运维效率和可靠性做出贡献。希望我们能凭借自己的的努力为国内 BMC 技术领域的发展带来新的思路和解决方案。 · 核心方案 本次获奖作品“BMC 数据可视化与故障分析平台设计”,整体架构: 首先将安装了 Linux 操作系统的飞腾派作为 BMC(Baseboard Management Controller)基板,为整个平台提供可靠的软件运行环境;其次利用 I2C 连接对端 CPU 和温度传感器,收集系统数据;最后利用 QT 研制桌面端 APP 和移动端 APP,用来实时展示系统数据,同时也可以通过可视化方式管理和控制 BMC 设备,整套平台使用方便。 · 参赛过程及心得 我们在参赛过程中遇到了一...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Linux系统CentOS6、CentOS7手动修改IP地址
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路