一、业务需求
背景说明
目前在底层数据库建设当中,已经存在了集成好的梧桐数据库以及历史使用的hadoop集群。基于现有业务,需要使得已有的梧桐数据库可访问hive。原因如下:
- 综合查询能力建设:在实际应用中,用户可能同时存在 hadoop 集群和 MPP 集群, MPP 数据库擅长结构化处理且应用友好,而 Hive 则专注于历史数据的批处理查询。因此,将 MPP 数据库与 Hive 集成,可以充分利用两者的优势,满足用户多样化的查询需求。
- 数据共享与整合:随着企业数据量的不断增加,数据往往分布在不同的系统和数据库中。通过将 MPP 数据库与 Hive 集成,可以实现数据的共享与整合,使得用户能够在一个平台上访问和分析来自不同数据源的数据。
二、方案概述
1、通过可插拔元数据框架共享 Hive 元数据。
梧桐数据库作为纯计算引擎,无需创建外表实现对 Hive 数据的访问或关联计算,传统的数据库可能通过 connector 方案来实现,但是这种方法使用起来性能很差。梧桐数据库计算引擎可以通过共享 HMS(Hive Metastore) 元数据,直接访问 Hive 在 HDFS 上数据文件的方式加速访问性能,并且可以实现库内的关联计算。
出于安全考虑,一般都会通过kerberos认证来访问hive库。
注:业务租户使用集团hive用到两种票据,一种是访问hive数据需要集团分配的keytab文件去认证krb5.conf,认证通过可以访问业务数据,但是要访问hive的metadata,这是另外一种票据,需要再申请,这个票据认证过了之后,hive上的表相当于梧桐db的一张external table,就是简单做一下映射。但是需要注意的是,访问速度较慢(数据量大的情况下),目前如果制作的表为readable external table,查询就很慢,在存在writeable external table 这种业务的情况下,速度肯定会更慢2
2、自动感知 Hive 表 schema 的变化。
基于外表的方案,通常需要删除表并重新建立以感知变化。梧桐数据库采用了共享 Hive 元数据的思路。将数据库的元数据剥离,完全依赖于 Hive 的 HMS,通过这种方法,我们可以原生地感知 Hive 表的 Schema 变化。
3、打通 Ranger 权限对接实现对 Hive 表列级权限控制。
梧桐数据库还可以与 Hive 权限进行对接打通。例如,如果 Hive 使用 Ranger 做权限控制,可以与Ranger 进行对接,实现列级权限控制。
4、兼容 Hive 分区表。
Hive 原生的分区表可以无缝对接到梧桐数据库中。针对 Hive 表进行 DB 侧的统计信息收集和分析操作,并且可以利用梧桐数据库的分布式特性和优化措施来提高查询性能和并发处理能力。
三、操作步骤
修改配置
1、获取客户 hive 相关信息
从客户的 hive-site 配置中获取 metastore 的hms、keytab、principal等信息,如下图所示:
2、更改梧桐数据库相关配置信息(旧版)
根据客户hive-site配置中hms的ip端口、keytab、三段式principal,修改hdfs-client.xml配置,增加以下配置(不需要重启或者reload集群)
<property>
<name>ip:port.hadoop.security.authentication</name>
<value>kerberos</value>
</property>
<property>
<name>ip:port.hadoop.security.token.lifetime</name>
<value>604800000</value>
</property>
<property>
<name>ip:port.hadoop.security.ticket.lifetime</name>
<value>604800000</value>
</property>
<property>
3、更改梧桐数据库相关配置信息(新版)
<property>
<name><username>.hms.hive.security.authentication</name>
<value>kerberos</value>
<property>
<property>
<name><username>.hs2.hive.security.authentication</name>
<value>kerberos</value>
<property>
<property>
<name><username>.hms.hive.security.keytab</name>
<value>/usr/local/oushu/conf/oushudb/hive.keytab</value>
</property>
<property>
<name><username>.hms.hive.security.principal</name>
<value>[email protected]</value>
--<value>hive/[email protected]</value>
</property>
<property>
<name><username>.hs2.hive.security.keytab</name>
<value>/usr/local/oushu/conf/oushudb/hive.keytab</value>
</property>
<property>
<name><username>.hs2.hive.security.principal</name>
<value>[email protected]</value>
--<value>hive/[email protected]</value>
</property>
<property>
<name><username>.hms.hive.connection.url</name>
<value><ip>:<port>,<ip>:<port>,...</value>
</property>
<property>
<name><username>.hs2.hive.security.instance</name>
<value></value>
</property>
示例:
对应下面
四、应用场景
1、实时与历史数据整合
在某些业务场景中,用户需要同时处理实时数据和历史数据。梧桐数据库可以处理实时数据,而 Hive 则负责存储和管理历史数据。通过将梧桐数据库与 Hive 集成,可以实现实时数据与历史数据的无缝整合,满足用户多样化的数据处理需求。
2、BI****报表生成
在 BI(商业智能)领域,MPP 数据库与 Hive 的集成可以支持快速生成复杂的报表和仪表盘。 MPP 数据库的高性能可以确保报表生成的实时性和准确性,而 Hive 则提供了丰富的数据源和查询能力,使得 BI 应用更加灵活和强大。
3、跨部门数据共享
在大型企业中,不同部门可能使用不同的数据库系统来存储和管理数据。通过将 MPP 数据库与 Hive 集成,可以实现跨部门数据的共享和整合,打破数据孤岛,促进数据在企业内部的流通和利用。
4、多源数据整合
在数据分析和挖掘过程中,往往需要整合来自多个数据源的数据。 Hive 可以作为数据整合的枢纽,将不同数据源的数据存储在 Hadoop 集群中,并通过 MPP 数据库的访问能力,实现多源数据的整合和查询。
5、复杂查询优化
梧桐数据库通过并行处理机制,可以显著提高复杂查询的执行效率。当 Hive 中的查询请求变得复杂且耗时较长时,梧桐数据库可以作为查询加速器,通过并行处理优化查询性能,缩短查询响应时间。
6、数据分析加速
在数据分析领域,梧桐数据库与 Hive 的集成可以加速数据分析过程。 MPP 数据库的高性能可以确保数据分析的实时性和准确性,而 Hive 则提供了丰富的数据转换和计算能力,支持复杂的数据分析任务。
版权归原作者 陈燚_重生之又为程序员 所有, 如有侵权,请联系我们删除。