本文為您介紹E-MapReduce(簡稱EMR)支持的元數(shù)據(jù)類型和各元數(shù)據(jù)類型的優(yōu)勢。

元數(shù)據(jù)類型介紹

EMR Hive元數(shù)據(jù)支持DLF統(tǒng)一元數(shù)據(jù)、自建RDS和內置MySQL三種類型。

DLF統(tǒng)一元數(shù)據(jù)

元數(shù)據(jù)存儲在阿里云數(shù)據(jù)湖構建(Data Lake Formation,簡稱DLF)中。數(shù)據(jù)湖構建具有高可用、免運維和高性能等優(yōu)點,兼容Hive Metastore,無縫對接EMR上開源計算引擎,并支持元數(shù)據(jù)多版本管理和Data Profile功能。另外,DLF還支持數(shù)據(jù)探索、湖管理和數(shù)據(jù)權限控制等功能,并與阿里云其他計算產品(例如MaxCompute、Databricks和Hologres等)無縫對接,可以擴展更豐富的計算場景,DLF詳情請參見產品簡介

該元數(shù)據(jù)類型相比自建RDS和內置MySQL兩種方式的最大區(qū)別是,無需在EMR集群上部署Hive Metastore,即元數(shù)據(jù)查詢服務以及存儲服務都托管到DLF產品上,免去運維成本,同時支持更多引擎(例如MaxCompute、Flink、DataBricks或Hologres等),進一步實現(xiàn)湖倉一體共享元數(shù)據(jù),在多個集群上也能夠實現(xiàn)元數(shù)據(jù)共享。DLF Client SDK提供了兼容Hive Metastore的接口,這樣引擎基本不做任何改動就可以直接使用DLF Client SDK,進而訪問DLF元數(shù)據(jù)。用戶也可以直接使用DLF客戶端訪問DLF元數(shù)據(jù)。

圖 1. DLF統(tǒng)一元數(shù)據(jù)在單集群部署架構圖
DLF統(tǒng)一元數(shù)據(jù)在單集群部署架構圖
圖 2. DLF統(tǒng)一元數(shù)據(jù)在多集群部署架構圖
DLF統(tǒng)一元數(shù)據(jù)在多集群部署架構圖

自建RDS

元數(shù)據(jù)存儲在RDS中。自建RDS元數(shù)據(jù)類型和內置MySQL類型在架構上是一致的,區(qū)別只是存儲由本地的MySQL,變成了RDS(云上的MySQL)。如自建RDS在多集群部署架構圖所示,在多個集群環(huán)境中,RDS支持跨多個集群元數(shù)據(jù)共享,分別被不同集群中的Hive Metastore訪問。

圖 3. 自建RDS在單集群部署架構圖
自建RDS在單集群部署架構圖
圖 4. 自建RDS在多集群部署架構圖
自建RDS在多集群部署架構圖

內置MySQL

元數(shù)據(jù)存儲在MySQL中,且MySQL Server實例部署在用戶的EMR集群中(通常是Master節(jié)點),Hive、Spark或Presto等引擎訪問元數(shù)據(jù)時,也不是直接訪問MySQL,而是通過訪問Hive Metastore間接訪問MySQL。Hive Metastore提供元數(shù)據(jù)訪問服務,引擎通過thrift協(xié)議訪問Hive Metastore,Hive Metastore通過JDBC協(xié)議訪問MySQL。

當然您也可以手動通過MySQL客戶端直接連接MySQL Server,查看元數(shù)據(jù)。如內置MySQL在多集群部署架構圖所示,由于每個集群都有一個MySQL,導致多個集群間的元數(shù)據(jù)不能共享。

圖 5. 內置MySQL在單集群部署架構圖
Cluster
圖 6. 內置MySQL在多集群部署架構圖
1

元數(shù)據(jù)類型優(yōu)勢

內置MySQL和自建RDS的區(qū)別

自建RDS更直觀的好處是元數(shù)據(jù)可以在多個集群間共享。

從可用性、可靠性和性能等方面對比,自建RDS要優(yōu)于內置MySQL,詳情請參見RDS與自建數(shù)據(jù)庫對比優(yōu)勢

DLF統(tǒng)一元數(shù)據(jù)和自建RDS的區(qū)別

對比項 DLF統(tǒng)一元數(shù)據(jù) 自建RDS
易用性 EMR集群開箱即用(需提前開通DLF產品)。 EMR集群開箱即用(需提前購買RDS)。
元數(shù)據(jù)管理 DLF產品提供了可視化的元數(shù)據(jù)檢索、元數(shù)據(jù)管理、多版本管理、數(shù)據(jù)統(tǒng)計概況和生命周期管理等更豐富的能力。 無。
多引擎支持
  • 支持Hive、Spark和Presto。
  • 支持MaxCompute和Hologres。
  • 支持Hive、Spark和Presto。
  • 不支持MaxCompute和Hologres。
成本 免費,具體計費請參見數(shù)據(jù)湖構建的計費模式 包月和按量計費。
運維成本 免運維,自動水平彈性擴容。 需要進行升級和擴容等運維操作。
高可用 主備等容災措施。 主備等容災措施。
性能 性能高,同時基于Hive Metastore進行了優(yōu)化。 性能高,對Hive Metastore無優(yōu)化。
更多能力 細粒度數(shù)據(jù)權限控制、湖存儲分析和湖格式管理。 無。

非EMR集群訪問DLF元數(shù)據(jù)

非EMR集群(本地測試環(huán)境或者其它云服務)訪問DLF元數(shù)據(jù),需要集成DLF Client SDK,具體操作請參見阿里云數(shù)據(jù)湖構建(DLF)

說明 訪問DLF和訪問MySQL一樣,需要提供訪問地址、用戶名和密碼。
  • DLF中的訪問地址稱為Endpoint,不同region使用不同的Endpoint。
  • 用戶名和密碼為DLF產品的AccessKey ID和AccessKey Secret。
  • 您還需要通過修改Hive參數(shù)的方式,切換Hive MetaStore的存儲方式。

    在Hive服務頁面,修改參數(shù)hive.imetastoreclient.factory.class的值為com.aliyun.datalake.metastore.hive2.DlfMetaStoreClientFactory。修改配置項的具體操作請參見修改組件參數(shù)