切换元数据存储类型

更新时间:
复制 MD 格式

在阿里云E-MapReduce(简称EMR)中,您在创建集群时可以选择元数据存储类型,例如集群内置MySQL、DLF或自建RDS。集群创建后,您也可以切换元数据存储类型。本文为您介绍阿里云数据湖构建,以及如何切换EMR集群的元数据存储类型。

背景信息

阿里云数据湖构建是一款全托管的快速帮助用户构建云上数据湖的服务,产品为云原生数据湖提供了统一的元数据管理、统一的权限与安全管理、便捷的数据入湖能力以及一键式数据探索能力,详细信息请参见数据湖构建产品简介。

您可以快速完成云原生数据湖方案的构建与管理,并可无缝对接多种计算引擎,打破数据孤岛,洞察业务价值。

前提条件

已在数据湖构建(Data Lake Formation)控制台开通数据湖构建。

使用限制

  • DLF统一元数据适配EMR的Hive 2.x、Hive 3.x、Presto和SparkSQL。

  • 仅EMR-3.30.0及之后版本和EMR-4.5.0及之后版本,支持选择DLF统一元数据作为Hive数据库。

  • 切换元数据存储类型只改变Hive访问元数据的方式,不会自动迁移已有的元数据内容。切换后,Hive仅能访问目标存储中已存在的库表信息。如需保留原有元数据,请先完成元数据迁移。

操作步骤

您可以通过修改Hive参数的方式,切换Hive MetaStore的存储方式。
说明 如果需要迁移数据库的元数据信息,请参见EMR元数据迁移公告。
  1. 进入Hive服务页面。

    1. 登录E-MapReduce控制台。

    2. 在顶部菜单栏处,根据实际情况选择地域和资源组。

    3. 在EMR on ECS页面,单击目标集群所在行的集群服务。

    4. 单击Hive服务区域的配置。

  2. 在配置搜索中,输入配置项hive.imetastoreclient.factory.class,单击search图标。

    • 切换为MySQL(包括集群内置MySQL、统一meta数据库和自建RDS):

      设置hive.imetastoreclient.factory.class的值为org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientFactory。

      如果集群当前使用DLF统一元数据,切换后Hive仅能访问HMS后端数据库中已有的库表。为避免库表不可见或作业运行失败,请在切换前完成以下准备工作:

      1. 暂停集群上正在运行的作业。

      2. 比对DLF与HMS中的元数据,将切换到DLF之后新增或变更的库表信息回放到HMS的后端数据库中。

      3. 确认HMS的后端数据库可正常连接,且Hive元数据表结构已初始化。

      4. 确认Hive服务的HiveMetaStore组件处于运行状态。使用DLF统一元数据时,Hive通过DLF客户端直接访问元数据,HiveMetaStore组件可能未启动。

      说明

      元数据的比对与回放涉及数据一致性,建议联系阿里云技术支持协助完成,详情请参见EMR元数据迁移公告。

    • 切换为DLF统一元数据:

      设置hive.imetastoreclient.factory.class的值为com.aliyun.datalake.metastore.hive2.DlfMetaStoreClientFactory。

  3. 保存配置。

    1. 在Hive服务页面的服务配置区域,单击保存。

    2. 在弹出的对话框中,输入执行原因,单击保存。

  4. 重启Hive服务。

    1. 在Hive服务页面,选择右上角的更多操作 > 重启。

    2. 在弹出的对话框中,填写执行原因,单击确定。

    3. 在确认对话框中,单击确定。

      您可以单击上方的操作历史,查看任务进度,等待任务完成。

重启完成后,建议执行SHOW DATABASES和SHOW TABLES确认库表信息完整,再恢复业务作业。

如果集群中的Spark、Presto等引擎也配置了DLF统一元数据,请同步调整对应引擎的元数据配置。否则不同引擎会连接到不同的元数据存储,导致查询到的库表不一致。