全部产品
Search
文档中心

数据湖构建:EMR+DLF数据湖解决方案

更新时间:Dec 17, 2024

通过EMR+DLF数据湖方案,可以为企业提供数据湖内的统一的元数据管理,统一的权限管理,支持数据湖的多种管理如数据生命周期、湖格式自动优化、存储分析等。同时支持多源数据入湖以及一站式数据探索的能力。本文为您介绍EMR+DLF数据湖方案具体实践步骤。

背景信息

采用EMR+DLF数据湖解决方案,相对传统EMR数据湖方案有下列优点:

  • DLF提供数据湖跨引擎的统一的,全托管免运维的元数据服务。

    • 支持可视化的元数据管理,以及多版本管理和回退。

    • 支持可视化一键元数据迁移。

    • 支持元数据全文检索。

    • 支持元数据DataProfile,如文件大小、行数、访问频次、小文件数量、文件冷热度、有效文件数等。

    • 支持除EMR开源引擎外的更多计算引擎,如MaxCompute、Flink、Hologres等多种引擎。

  • DLF提供丰富的细粒度数据权限控制。

    • 支持按照数据目录、数据库、数据列、函数等资源的各种细粒度权限点的可视化配置。

    • 支持与EMR中多种计算引擎集成,包括Spark、Hive、Presto、Impala多种计算引擎。

  • 提供丰富的数据湖管理能力。

    • 支持多种维度的数据生命周期管理,可以对数据按照冷热、更新时间等自动化归档,节省存储成本。

    • 支持针对Delta数据湖格式的自动化存储优化策略,节省存储成本。

其他说明

操作流程

步骤一:创建DLF统一元数据的EMR DataLake集群

创建EMR集群,并使用DLF作为元数据。

  1. 登录E-MapReduce控制台

  2. 创建E-MapReduce集群,输入选项如下:

    • 业务场景:选择数据湖

    • 可选服务:需要至少选中Hive组件,其他组件根据业务需要选择。

    • 元数据:选择DLF 统一元数据。

    • DLF数据目录:选择默认的DLF Catalog,或者新建一个数据目录(Catalog)。如果您没有开通DLF,会提醒您先开通DLF产品。

  3. 继续其他配置完成EMR集群创建。详情请参见创建集群

步骤二:初始化元数据

初始化元数据分为以下三种情况:

  • 原有EMR集群(内置MySQL或自建RDS做元数据),需要将原集群的元数据迁移到DLF中。相关内容请参见EMR元数据迁移DLF最佳实践

  • 新建EMR集群,没有历史元数据。您可以通过DLF来可视化创建元数据,或者使用Hive、Spark SQL来创建数据库和数据表等。

    1. 登录数据湖构建控制台,选择与OSS相同的地域,例如华东1(杭州)。

    2. 在左侧导航栏,选择元数据 > 元数据管理

    3. 单击数据库页签,单击新建数据库

    4. 新建数据库页面,配置元数据库参数,单击确定

  • 新建EMR集群,已有数据存在OSS中,但没有元数据信息。可以使用元数据抽取来识别OSS上数据的元数据信息,并存储在DLF中。最佳实践,请参见DLF数据探索快速入门-淘宝用户行为分析

步骤三:初始化数据

初始化数据一般常见的几种情况如下:

  1. 原有EMR集群,需要进行数据迁移。此时可以考虑通过JindoDistCp工具将原集群的数据迁移到OSS中。

  2. 从RDS、MySQL、Kafka等业务系统接入数据。此时可以考虑通过实时计算Flink实现数据入湖到DLF中。可参考如何在Flink中管理DLF Catalog

步骤四:通过Spark/Presto引擎查询DLF表

通过SSH方式登录到EMR集群的Master-1-1节点,详情请参见登录集群

  1. 通过spark-sql查询表。

    1. 执行以下命令,启动spark-sql。

      spark-sql
    2. 输入SQL,查询表数据。

      SELECT * FROM <database>.<table>;
  2. 通过presto查询表。

    1. 执行以下命令,进入Presto命令行。

      presto --server master-1-1:8889
    2. 输入SQL,查询表数据。

      SELECT * FROM <catalog>.<database>.<table>;

      命令中的参数说明如下:

      参数名称

      说明

      <catalog>

      待连接的数据源的名称。

      您可以通过show catalogs;命令查看所有的Catalog;或者在EMR控制台Presto服务的配置页签,查看所有的Catalog。

      <database>

      待查询的数据库的名称。

      <table>

      待查询的数据表。

      例如,如果要查看Hive数据源中默认数据库中的test表的数据,您可以使用SELECT * FROM hive.default.test;命令。

步骤五(可选):开启数据权限控制

有些业务场景对数据安全要求较高,需要对数据湖内的数据权限进行合理控制。此时您需要以下两步来完成数据权限的开启:

  1. EMR集群开启DLF权限控制,操作步骤可参考DLF-Auth开启EMR集群权限控制。

  2. 在DLF中按照权限设置为您的相应Catalog开启权限控制。

以上两个步骤完成后,您的整个EMR集群的数据访问将会受到数据权限控制,如果没有权限的用户访问集群数据,将会被拒绝。

此时可以参考DLF的数据授权,为相应用户配置合理的数据权限。相关内容请参见DLF+EMR之统一权限最佳实践

步骤六(可选):生命周期管理

您可以通过生命周期管理对数据湖中的数据库、数据表配置数据管理规则,可以基于分区/表创建时间、分区/表最近修改时间、分区值三种规则类型,对数据定期进行OSS存储类型转换,从而节省数据存储成本。具体操作和说明请参考生命周期管理