对接HiveMetaStore,拥抱开源大数据

这篇具有很好参考价值的文章主要介绍了对接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中。

3 external schema下不支持创建表对象。对象的创建是在hive或者spark中创建的,external schema仅用于执行DML操作。

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的原理和方式做了阐述。

 文章来源地址https://www.toymoban.com/news/detail-856690.html

点击关注,第一时间了解华为云新鲜技术~

 

到了这里,关于对接HiveMetaStore,拥抱开源大数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 海康威视iSC 平台第三方对接门禁权限分享

    一、 场景描述 iSC 平台的门禁产品及功能在项目应用广泛,第三方对接门禁权限功能的需求也越来也 多,由于门禁权限下发需要涉及到往设备上下发,第三方接口调用一旦不正确,不合理的接 口调用很容易给我们平台造成额外的性能消耗,甚至导致我们平台挂掉,特此梳理

    2024年02月02日
    浏览(361)
  • 【开源】给ChatGLM写个,Java对接的SDK

    作者:小傅哥 - 百度搜 小傅哥bugstack 博客:bugstack.cn 沉淀、分享、成长,让自己和他人都能有所收获!😄 大家好,我是技术UP主小傅哥。 清华大学计算机系的超大规模训练模型 ChatGLM-130B 使用效果非常牛,所以我也想把这样的Ai能力接入到自己的应用中或者做一些 IntelliJ I

    2024年02月04日
    浏览(47)
  • 阿里云与中国区Azure IPSec对接实战分享

    新钛云服已累计为您分享 735 篇技术干货 前言 本文介绍阿里云与中国区Azure IPSec互连的一些前期准备工作、如何配置以及注意事项等内容。 准备工作 账号权限准备 如果您没有阿里云和azure的主账号,可以使用RAM用户登录; 在阿里云这边,需要确保有VPN网关的配置权限,最好

    2024年02月05日
    浏览(38)
  • 顶顶通电话机器人接口对接开源ASR(语音识别)

    目前大部分用户使用的都是在线ASR按照分钟或者按次付费,之前开源ASR效果太差不具备商用的条件,随着 阿里达摩院发布了大量开源数据集或者海量工业数据训练的模型,识别效果已经和商用ASR差距非常小,完全具备了很多场景代替商用ASR的能力。 顶顶通也全系列产品进行

    2024年02月08日
    浏览(47)
  • AI绘图开源工具Stable Diffusion WebUI前端API对接

    本文主要介绍 AI 绘图开源工具 Stable Diffusion WebUI 的 API 开启和基本调用方法,通过本文的阅读,你将了解到 stable-diffusion-webui 的基本介绍、安装及 API 环境配置;文生图、图生图、局部重绘、后期处理等 API 接口调用;图像处理开发中常用到一些方法如 Base64 、 PNG 、 Canvas 及

    2024年02月10日
    浏览(52)
  • 分享一个优秀的动态数据源开源库-dynamic-datasource-spring-boot-starter

    在我们的Java后端研发工作中, 有时候由于业务的快速迭代和数据的安全隔离性,往往会为不同的 API业务线分配不同的数据库,即一个微服务经常需要和多个数据源打交道。 dynamic-datasource-spring-boot-starter 是一个基于springboot的快速集成多数据源的启动器。 其支持 Jdk 1.7+, Spring

    2024年02月12日
    浏览(60)
  • 开源PHP 代挂机源码,可对接QQ、网易云、哔哩哔哩、QQ空间、等级加速等等

    本程序运行环境PHP5.6 95dg/config.php修改系统数据库 进入数据库绑定 你搭建的域名即可 部署完成 进入数据库 找到data 输入绑定授权域名即可进行授权打开此网站 网站是无对接接口 需要您自行找对接接口即可 本源码有点乱 有实力的铁铁 可以修改一下哦!

    2024年02月10日
    浏览(55)
  • 本文通过实例介绍了Redis的基础知识、数据类型、数据结构以及典型应用场景 值得一看!

    作者:禅与计算机程序设计艺术 2017年,Redis是基于MIT许可发布的一个开源的高性能键值数据库,其开发语言为C语言。它提供了多种数据类型(strings、hashes、lists、sets、sorted sets等),分布式支持(可横向扩展),内存存储,持久化功能,事务处理功能等。作为一种高性能的

    2024年02月06日
    浏览(71)
  • 春眠不觉晓,Java数据类型知多少?基础牢不牢看完本文就有数了

    文编|JavaBuild 哈喽,大家好呀!我是JavaBuild,以后可以喊我鸟哥!俺滴座右铭是不在沉默中爆发,就在沉默中灭亡,一起加油学习,珍惜现在来之不易的学习时光吧,等工作之后,你就会发现,想学习真的需要挤时间,厚积薄发啦! 我们知道Java是面向对象的静态型编程语言,

    2024年02月02日
    浏览(41)
  • 【数据结构】C--顺序表1.0版本(本文非常适合小白观看,已尽力详解,以及图解也是尽量列举)

    目录 0.前言 什么是数据结构? 1.逻辑结构: 1.1线性结构: 1.2非线性结构:         (1)集合         (2)树形结构         (3)图形结构或者网状结构 2.存储结构 一.线性表 二.顺序表 顺序表与数组的关系:(非常容易混淆) 1.静态顺序表:使用定长数组存储元素 2.动态顺序表

    2024年02月06日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包