本文为您介绍E-MapReduce(简称EMR)支持的元数据类型和各元数据类型的优势。
元数据类型介绍
EMR Hive元数据支持DLF统一元数据、自建RDS和内置MySQL三种类型。
DLF统一元数据
元数据存储在阿里云数据湖构建(Data Lake Formation,简称DLF)中。数据湖构建具有高可用、免运维和高性能等优点,兼容Hive Metastore,无缝对接EMR上开源计算引擎,并支持元数据多版本管理和Data Profile功能。另外,DLF还支持数据探索、湖管理和数据权限控制等功能,并与阿里云其他计算产品(例如MaxCompute、Databricks和Hologres等)无缝对接,可以扩展更丰富的计算场景,DLF详情请参见产品简介。
该元数据类型相比自建RDS和内置MySQL两种方式的最大区别是,无需在EMR集群上部署Hive Metastore,即元数据查询服务以及存储服务都托管到DLF产品上,免去运维成本,同时支持更多引擎(例如MaxCompute、Flink、DataBricks或Hologres等),进一步实现湖仓一体共享元数据,在多个集群上也能够实现元数据共享。DLF Client SDK提供了兼容Hive Metastore的接口,这样引擎基本不做任何改动就可以直接使用DLF Client SDK,进而访问DLF元数据。用户也可以直接使用DLF客户端访问DLF元数据。
自建RDS
元数据存储在RDS中。自建RDS元数据类型和内置MySQL类型在架构上是一致的,区别只是存储由本地的MySQL,变成了RDS(云上的MySQL)。如自建RDS在多集群部署架构图所示,在多个集群环境中,RDS支持跨多个集群元数据共享,分别被不同集群中的Hive Metastore访问。
内置MySQL
元数据存储在MySQL中,且MySQL Server实例部署在用户的EMR集群中(通常是Master节点),Hive、Spark或Presto等引擎访问元数据时,也不是直接访问MySQL,而是通过访问Hive Metastore间接访问MySQL。Hive Metastore提供元数据访问服务,引擎通过thrift协议访问Hive Metastore,Hive Metastore通过JDBC协议访问MySQL。
当然您也可以手动通过MySQL客户端直接连接MySQL Server,查看元数据。如内置MySQL在多集群部署架构图所示,由于每个集群都有一个MySQL,导致多个集群间的元数据不能共享。
元数据类型优势
内置MySQL和自建RDS的区别
自建RDS更直观的好处是元数据可以在多个集群间共享。
从可用性、可靠性和性能等方面对比,自建RDS要优于内置MySQL,详情请参见RDS与自建数据库对比优势。
DLF统一元数据和自建RDS的区别
对比项 | DLF统一元数据 | 自建RDS |
---|---|---|
易用性 | EMR集群开箱即用(需提前开通DLF产品)。 | EMR集群开箱即用(需提前购买RDS)。 |
元数据管理 | DLF产品提供了可视化的元数据检索、元数据管理、多版本管理、数据统计概况和生命周期管理等更丰富的能力。 | 无。 |
多引擎支持 |
|
|
成本 | 免费,具体计费请参见数据湖构建的计费模式。 | 包月和按量计费。 |
运维成本 | 免运维,自动水平弹性扩容。 | 需要进行升级和扩容等运维操作。 |
高可用 | 主备等容灾措施。 | 主备等容灾措施。 |
性能 | 性能高,同时基于Hive Metastore进行了优化。 | 性能高,对Hive Metastore无优化。 |
更多能力 | 细粒度数据权限控制、湖存储分析和湖格式管理。 | 无。 |
非EMR集群访问DLF元数据
非EMR集群(本地测试环境或者其它云服务)访问DLF元数据,需要集成DLF Client SDK,具体操作请参见阿里云数据湖构建(DLF)。
- DLF中的访问地址称为Endpoint,不同region使用不同的Endpoint。
- 用户名和密码为DLF产品的AccessKey ID和AccessKey Secret。
- 您还需要通过修改Hive参数的方式,切换Hive MetaStore的存储方式。
在Hive服务页面,修改参数hive.imetastoreclient.factory.class的值为com.aliyun.datalake.metastore.hive2.DlfMetaStoreClientFactory。修改配置项的具体操作请参见修改组件参数。