亚马逊AWS官方博客
基于开源工具构建 EMR 数据分析平台(一)方案总体介绍
背景
在数字化时代,企业正经历着前所未有的转型,而生成式人工智能(GenAI)的崛起更是加速了这一进程。数据,作为企业的新石油,已经成为企业最宝贵的资产之一。它不仅是企业运营分析的基石,也是业务决策的核心,模型训练的驱动力,以及私域数据增强的源泉。在这一背景下,大数据平台与分析工具的重要性日益凸显,它们已经成为企业战略规划中不可或缺的一环。一般来说,一个高质量的大数据分析平台能够为企业带来以下价值:
- 增强决策质量:通过大数据平台的深入分析,企业能够基于全面的数据洞察做出更加精准的决策,从而提高决策的质量。
- 优化运营效率:大数据平台能够帮助企业识别运营中的瓶颈和低效环节,从而优化流程,提高运营效率。
- 促进业务创新:通过对数据的深入分析,企业能够发现新的业务机会和创新点,推动产品和服务的创新。
- 提升客户体验:大数据平台能够提供对客户需求和行为的深入洞察,帮助企业提供更加个性化的产品和服务,提升客户体验。
- 加强风险管理:通过对数据的实时监控和分析,企业能够及时发现潜在的风险和问题,加强风险管理。
- 支持合规性:在金融、医疗等行业,大数据平台能够帮助企业监控和遵守相关法规和标准,确保合规性。
- 支持 AI 与机器学习场景:通过大数据平台,企业可以获取丰富的数据集,用于训练和优化机器学习模型。
- 培养数据驱动文化:建立大数据平台有助于培养企业内部的数据驱动文化,鼓励员工基于数据进行思考和工作。
- 提高数据安全性:在处理大量敏感数据时,大数据平台需要具备强大的数据安全和隐私保护机制,确保数据的安全性。
总的来说,大数据平台已经成为企业数字化转型的核心,它不仅能够提供深入的数据洞察,还能够为企业带来全方位的价值。随着技术的不断发展,大数据平台的重要性将会进一步增强,成为企业实现战略目标和提升竞争力的关键。
当前企业构建数据分析平台主要包括以下几种模式:
- 基于开源组件自建大数据平台:
- 优势:具有软件的成本效益,节省软件许可费用,并且可以基于需求进行定制化开发,拥有对数据平台的完全控制权。
- 缺点:对团队技术要求高,人力成本较高,需要投入较多的时间和人力来管理和优化平台。
- 购买商业版大数据分析平台
- 优势:商业版平台一般可以提供成熟的解决方案和专业的技术支持和服务,降低部署、管理以及使用门槛,减轻运维压力。同时,商业版还能提供持续的更新和改进,确保软件的安全与先进性。
- 缺点:需要支持对应软件许可费用,并且难以实现定制化。同时也会面临厂商锁定的风险,影响后续的技术升级或选型。
- 使用云厂商大数据分析平台
- 优势:通常比商业版平台的软件费用更低廉,提供快速部署服务,可以加速项目启动和迭代速度,同时还能获得专业的云管理和技术支持指导。在资源使用上可以按需使用,无需大量前期投资。并且提供良好的资源扩展性。在技术选型上一般也会提供开源组件托管以及闭源产品的选择。
- 缺点:并非所有云厂商都提供了直接可用的数据分析平台,但基本都提供了计算引擎。可能需要购买第三方数据平台产品与计算引擎对接。
企业在选择构建数据分析平台的模式时,需要综合考虑自身的业务需求、技术能力、预算限制、业务需求和长期战略规划等。每种模式都有其适用场景,企业应根据自身情况做出最合适的选择。
亚马逊云智能湖仓模式
智能湖仓是一种先进的数据架构,它将数据湖、数据仓库和专用数据存储无缝集成,支持统一的监管和轻松的数据移动。这种架构不是简单地将数据湖和数据仓库糅合在一起,而是通过集成这些组件,支持更广泛的数据分析和机器学习用例。整体架构图如下所示:
智能湖仓架构的核心在于其灵活性和可扩展性。它允许企业从多个数据源提取数据,并将这些数据集中在一个位置——数据湖中。同时,它也支持将数据存储在专用数据存储中,以便快速从结构化和非结构化数据中获取见解。智能湖仓支持四种数据移动方向:由内向外、由外向内、沿周界和跨界共享,以适应不同的业务需求。
智能湖仓架构的实现依赖于以下几个关键组件:
- 可扩展的数据湖:AWS Lake Formation 和 Amazon S3 提供了构建和管理数据湖的能力,支持自动化的数据湖设置和管理。
- 专用分析服务:AWS 提供了一系列专用分析服务,如 Amazon Redshift 和 Amazon EMR,这些服务针对特定的分析用例进行了优化。
- 统一的数据访问:AWS Glue 和 Amazon Redshift 等服务提供了跨多个数据存储和数据湖合并、移动和复制数据的能力。
- 统一监管:AWS Lake Formation 提供了集中定义和管理安全性、治理和审计策略的能力,以实现对企业数据共享的统一访问控制。
- 高性能和经济高效:AWS 致力于提供最佳性能和性价比,同时不断创新以提高服务的性价比。
亚马逊云智能湖仓在任务调度管理方面的需求
在亚马逊云服务的智能湖仓架构中,包括了像 Amazon EMR(一个基于 Hadoop 生态系统构建的大数据处理框架)、Amazon Redshift(一个专为大规模数据仓库优化的高性能解决方案)以及 Amazon Athena(一个无需预先配置即可直接对 S3 中的数据进行查询的服务)等优秀的计算引擎。对于具有完整的大数据开发团队来说,可以在这些计算引擎的基础上,进行各种开发工作的集成,包括数据开发、任务调度、多租户管理和权限控制等复杂功能,或者直接采购第三方数据平台解决方案,从而构建一个全面的大规模数据分析平台。而对于那些规模较小的大数据开发团队来说,可能没有足够的预算、人力资源和时间来自研大数据分析平台或者采购第三方数据平台方案。
针对这部分需求,我们提出了一种结合开源组件与 AWS 服务的综合性解决方案。该方案旨在提供一个易于使用且功能完备的数据平台,同时确保能够充分利用 AWS 的高性能计算能力。通过这种策略,我们能够为客户提供一个低成本、快速构建、开源可控的既灵活又高效的数据分析环境。
整体解决方案设计
针对客户对大数据平台的基本需求,我们设计了以下专业解决方案:
- 调度平台:引入开源组件 Apache DolphinScheduler,作为核心调度系统,提供全面、易用的调度功能
-
- 用户界面:提供直观的可视化拖放界面,支持执行 Shell、Python、Spark 等数十种作业类型,并能够与 Amazon EMR Step 功能无缝集成。
- 管理功能:集成多租户管理、资产管理和项目管理等关键功能,以满足不同用户和项目的需求。
- Flink 作业平台:采用开源组件 Dinky,构建高效的 Flink 作业管理环境
-
- 开发与监控:提供全面的可视化 Flink 作业开发、监控和运维平台,实现与 Amazon EMR Flink 的无缝集成。
- Spark SQL 执行网关:部署开源组件 Apache Kyuubi,作为 Spark SQL 的高性能执行网关
-
- 架构优势:相较于 Spark 的 Thrift Server,提供更稳定、高效、灵活的 Spark SQL 执行方案。
- 多租户支持:实现多租户功能,为后续的权限管理提供便利。
- SQL 开发平台:结合 Apache Athena 和 Amazon EMR HUE,打造强大的 SQL 开发与测试环境
-
- 可视化开发:提供直观的 SQL 开发和测试平台,提升开发效率。
- 权限管理:Athena 与 Lake Formation 的集成,简化了权限管理流程。
- 多引擎支持:EMR HUE 能够直接连接 SparkSQL、Presto、Hive 等多种查询引擎。
- 元数据管理平台:利用 Glue DataCatalog,实现高效的元数据管理。
-
- 托管服务:作为托管的元数据管理平台,以低成本和轻量级运维为特点,为客户提供便捷的元数据管理解决方案。
通过这些精心挑选的开源组件和 AWS 服务的结合,我们能够为客户提供一个全面、高效且易于管理的数据分析平台。
方案组件图如下所示:
下面以一个工作流程,具体介绍关键组件之间的协作流程。
数据开发
数据分析师、数据工程师可以登陆 EMR HUE 或者 Athena 编写、测试 SQL,并执行数据探索的工作。直接提供的引擎包括 Hive SQL、Spark SQL、Presto、Trino、以及 PySpark。
ETL 调度
在数据开发完成后,数据工程师可以登陆 DolphinScheduler,配置工作流。常规任务包括 shell,python,spark jar/sql,hive sql,jdbc 等任务。对于这些任务,均可以在 DolphinScheduler 里定义数据源后直接使用,并提供了任务的监控、通知与告警等功能。除此之外,也提供了常规的 task 之间的依赖以及 workflow 之间依赖的能力。在客户的实际环境中,我们也发现了开源 DolphinScheduler 在跨 workflow 之间的依赖上也存在不足,所以我们也提供了对应的补丁,完善了这部分功能。
在调用 Spark、Hive、Redshift 等任务时,可以直接对接并使用底层 Amazon EMR 服务与 Amazon Redshift:
- Spark Jar 任务:在 DolphinScheduler 中可以直接以 EMR Step 的方式提交到 EMR,并监控 EMR Step 的状态。但开源 DolphinScheduler 实现中,对 EMR Step 的监控与操作并不完善,所以我们同样也提供了对应补丁,使得 DolphinScheduler 与 EMR Step 的集成更完美。
- Spark SQL 任务:在 DolphinScheduler 中可以直接提交 Spark SQL 任务,但是是以 spark-sql shell 的模式。这种模式在并行任务量较多时,会对 DolphinScheduler Worker 节点造成较大压力。所以我们使用了 Apache Kyuubi 作为 Spark SQL的提交网关,可以提供更高并发的Spark SQL执行能力。Apache Kyuubi 可以以 EMR Bootstrap 脚本的方式,在 EMR 集群启动时自动部署在 EMR 主节点上,我们对此也提供了对应脚本。
- Hive SQL 任务:在 DolphinScheduler 中可以直接创建 Hive Server2 的数据源,也就是说,可以直接连接到 EMR 上的 Hive Server2 服务,提交 Hive SQL 并运行。若是并行 Hive SQL 数量较多,我们也提供了 Hive Server2 服务的负载均衡与 HA 方案解决此问题。
- EMR Spark Serverless任务:在与客户共同的实践中,我们也发现了 EMR Serverless 在对于大型任务或运行时间较长的任务,相较于 EMR on EC2 Spot 实例,可以达到更稳定的运行,以及更高的性价比。所以我们也提供了 DolphinScheduler 直接提交 Spark SQL/Jar 到 EMR Spark Serverless 运行并监控的方案。
- Redshift 任务:DolphinScheduler 原生提供了 Redshift 数据源,可以直接提交 SQL 到 Redshift 运行。
Dolphinscheduler 工作流定义界面如下:
Flink 流式任务
对于 Flink 流式任务,由于 Amazon EMR Flink 并未提供一个方便的 Flink SQL 执行与监控平台(提供的是以 Zeppelin Notebook 为主的交互式 Notebook 方式,这种方式对于任务监控与部署来说,不够完善,需要额外的工作完成)。对于这类任务,数据工程师或分析师等人员可以登陆到 Apache Dinky 平台,直接编写 Flink SQL 或提交 Flink Jar 包,并在此平台上监控任务的运行,查看作业相关指标。Dinky 提供了一个全面的开发环境,支持自动提示补全、语法高亮、语句美化、在线调试、语法校验、执行计划查看、Catalog 支持、血缘分析、版本对比等功能,极大地提升了开发效率。对于底层计算引擎,我们提供了对应快速的配置方式,可以直接对接底层 Amazon EMR Flink 计算引擎。
BI 报表
在 BI 报表方面,客户可以使用第三方软件,或者直接使用 Amazon QuickSight。QuickSight 能够连接到云中的数据,并整合来自多个不同来源的数据,包括 AWS 数据、第三方数据、大数据、电子表格数据、SaaS 数据、B2B 数据等。作为一项完全托管的服务,它提供企业级安全性、全球可用性和内置冗余,同时简化了用户管理,支持从 10 用户扩展到 10000 用户,无需部署或管理任何基础设施。QuickSight 还提供了 Text-to-BI 的能力,通过自然语言直接生成所需 BI 报表并提供关键信息洞察。除此之外,它还能够通过机器学习支持数据的异常分析、时间序列预测以及基于数据的关键信息洞察,从而帮助用户发现隐藏在数据背后的趋势和模式。这些功能使得 QuickSight 成为一个不仅能够提供数据可视化,还能够通过 AI 技术提供深入数据分析和预测的强大工具。
方案优势
本方案已成功部署于某客户的生产环境,涵盖了超过 1200 项离线和在线任务,每日执行的任务实例数量突破一万大关,且在高峰期的资源消耗高达 1000 个节点。自实施以来,该方案已稳定运行超过两个月,表现出色,成本控制得当。其显著优势包括:
- 紧跟开源:本方案采用的均为业界领先的开源组件,提供灵活性以满足特定需求的定制化开发;
- 成本效益:免除了昂贵的第三方软件许可费用,对于定制化需求较少的情况,还能显著降低开发人力资源成本;
- 性能卓越:依托于亚马逊云科技提供的的高性能计算服务(例如,Amazon EMR 7.1 版本相较于 Apache Spark 3.5.1 速度快 4.5 倍),本方案在性能上超越了传统的开源计算引擎,实现了更优的性价比;
- 弹性扩缩:得益于 Amazon EMR 与 Redshift Serverless 提供的无缝弹性扩缩能力,可以自动扩展计算资源满足各类计算需求;
- 环境隔离:调度和管理、监控平台与计算引擎松耦合,调度平台环境不依赖于计算引擎,支持同一个平台调度任务到不同的计算集群。
但是,此方案仍有部分功能暂未满足:
- 数据治理功能待完善:对于某些特定的数据治理功能,比如表级血缘,目前只通过 DolphinScheduler 的 Task 依赖提供了 Task 的血缘,表级血缘后续需要通过开源组件例如 Atlas、Datahub 等工具实现;
- 任务计费:对单个任务进行计费。在 Amazon EMR on EC2 没有此功能,因为计算资源由 YARN 统一管理,所以无法计算单个任务成本,但是 Amazon EMR Serverless 可以按照单个任务进行计费。
总结
在数字化转型的浪潮中,企业越来越依赖于数据的力量来驱动决策、优化运营、促进创新、提升客户体验、加强风险管理、支持合规性、赋能 AI 与机器学习,并培养数据驱动文化。面对这些需求,构建一个高效、灵活且成本效益的大数据平台显得尤为重要。本文探讨了不同模式的数据分析平台构建方式,包括基于开源组件的自建平台、商业版大数据分析平台和云厂商提供的服务,并指出了各自的优势与挑战。
特别地,我们提出了一种结合开源组件与 AWS 服务的综合性解决方案,旨在利用 Amazon 的高性能计算资源,为客户提供一个易于使用、开源可控、低成本、且功能完备的数据平台。该方案涵盖了调度平台、Flink 作业平台、Spark SQL 执行网关、SQL 开发平台和元数据管理平台等多个关键组件,并通过实际案例展示了其在生产环境中的成功应用。
基于开源工具构建 EMR 数据分析平台系列文章
基于开源工具构建 EMR 数据分析平台(一)方案总体介绍(本文)
基于开源工具构建 EMR 数据分析平台(二)使用 Dinky 进行 Flink 任务开发、管理