Hop架构——突出元数据的核心地位
发布网友
发布时间:2024-10-20 01:58
我来回答
共1个回答
热心网友
时间:2024-11-21 02:30
Hop 架构原则:将任何元数据与运行时代码和工具中分离出来。
通过这种方式,Hop 致力于最小化安装所需空间,并实现无状态化,以便在不同的平台(如 Spark 和 Flink)上执行,并在各种场景中运行,例如不同的生命周期阶段,如开发、测试、验收、生产、单元测试和持续集成。
为了实现这些目标,Hop 尽可能将所有用到的编排工作都定义为元数据。这些元数据可以以多种方式表示,例如 XML 或 JSON 文档、任何类型的数据库或图形用户界面。Hop 提供的用户界面需要 100% 覆盖所有功能,无需再借助外部编辑器或工具。
Apache Hop 对所有不同的元数据采用一个简单的元数据接口。编排元数据一旦被定义下来,就可以在不同工具中执行:既可以是本地或远程的 Hop 引擎,也可以是 Apache Spark、Apache Flink 或基于 Apache Beam 的 Google Cloud Dataflow 上,以及未来计划要支持的例如 Apache Airflow 运行时引擎等等。
Hop 中的核心概念和主要文件类型是管道与工作流。
管道执行繁重的数据处理:在管道中,可以从一个或多个源读取数据,执行大量的数据操作(连接、查找、过滤等等),最后将处理结果写入一个或多个目标平台。
管道是转换网络。每个转换都是从数据源读取、写入目标平台或执行操作。管道中的转换全部是并行的,通过在 Hop 连接,Hop 用于转换之间传递数据。
工作流负责编排:准备环境、获取远程文件、执行错误处理以及执行子工作流与管道。
工作流由一系列操作组成,这些操作默认按顺序执行。工作流中的操作不直接对数据进行操作,而是返回一个退出代码,该代码可用于确定工作流中要遵循的操作顺序(通过成功、失败或无条件跳转)。
Hop 引擎被设计为尽可能轻量级且尽可能小。该引擎只专注于一件事:通过元数据执行工作流和管道。
所有非必要的功能都是通过插件添加的。这包括工作流中的所有操作、管道中的所有转换、与关系和 NoSQL 数据库的所有连接,甚至工作流和管道运行的 Runtime。
Hop 引擎可被多个客户端使用,每个客户端都有自己的用途:
元数据(MetaData):Hop 中的所有内容都被定义为元数据:项目、环境、运行时配置,甚至工作流和管道本身都被定义为元数据。所有元数据都存储在项目的元数据文件夹中,定义为 JSON 文件,并与版本控制系统完美集成。
生命周期管理(LIFE CYCLE MANAGEMENT):Apache Hop 认识到工作流和管道是任何数据工程项目中的主力,但只是数据工程和数据编排项目生命周期中的一个方面。
通过集成版本控制、流水线单元测试以及与 CI/CD 平台集成,可以在整个项目生命周期环境中管理 Apache Hop 项目。
项目和环境(PROJECTS AND ENVIRONMENTS):项目和环境是 Hop 项目的基石。所有元数据、工作流和管道都在一个项目中定义。环境允许代码和配置之间的灵活解耦。项目定义如何处理数据,环境指定需要处理信息的位置。
例如,项目可以包含数据库连接 sales 或 Spark 集群。在环境中,数据团队决定 sales 数据将从哪个数据库读取或写入,或者代码将在哪个 Spark 集群上运行。
每个项目都可以链接到多个环境,例如本地开发、实验室环境、CI/CD 以及最终的验收和生产环境。
运行配置(RunCONFIGURATIONS):运行配置是 Apache Hop 中的一种插件类型,用于确定给定项目、工作流或管道将在何处执行。运行配置旨在利用 Hop 本身、Apache Beam 等平台的功能。
这些灵活的运行配置允许 Hop 工作流和管道设计一次并在任何地方运行,使得数据团队可以在最有意义的地方跟踪要处理的数据。