一、Apache Hop是什么?
1、Apache Hop,简称Hop,全称为Hop Orchestration Platform,即Hop 工作编排平台,是一个数据编排和数据工程平台,旨在促进数据和元数据编排的所有方面。Hop让你专注于你想要解决的问题,而不会被技术所阻碍。简单任务应该容易完成,复杂任务需要可能实现。
2、Hop允许数据专业人员使用元数据来描述数据应该如何被处理,从而进行可视化工作。可视化设计使数据开发者能够专注于他们想要做什么,而不是如何完成这项任务。这种对当前任务的关注使得Hop开发者比编写代码时更加高效。
二、Apache Hop起源与背景
1、Hop 最初(2019年底)是作为 Kettle(Pentaho Data Integration,PDI)的一个分支而启动的。Hop 是一个相对较新的项目,于 2020 年成为 Apache 软件基金会的顶级项目。它由 Kettle 的原始创建者 Tyler Mitchell 领导,旨在解决 PDI 中的一些限制,并提供更现代化的架构。
2、Kettle (PDI): Kettle 最初由 Pentaho 开发,是一个功能齐全的数据集成工具。Pentaho 后来被 Hitachi Vantara 收购,尽管如此,PDI 仍然是一个活跃的开源项目,拥有庞大的用户社区和丰富的插件生态系统。(不熟悉kettle的小伙伴可以查看kettle系列文章)
3、Hop和Kettle/PDI是独立的项目,各自有自己的路线图和优先级。鉴于这些不同的路线图、架构愿景和开发轨迹,Hop和Kettle/PDI是不兼容的。由于Hop与Kettle/PDI有着共同的历史,Hop社区提供了一种方法,尽可能无缝地将现有的PDI/Kettle项目导入Hop。
三、HOP VS KETTLE
1、核心概念
Terminology(术语) | Kettle | Hop |
---|---|---|
Parallel scalable data pipeline(并行可扩展数据管道) | Transformation | Pipeline |
An operation in a parallel pipeline(并行管道中的一个操作) | Step | Transform |
Sequential series of actions(一系列顺序的操作) | Job | Workflow |
An action in a workflow(工作流中的一个操作) | Job Entry | Action |
Shared metadata container(共享的元数据容器) | Metastore | Hop Metadata |
The graphical user interface(图形用户界面) | Spoon | Hop Gui |
Script to run data pipelines(运行数据管道的脚本) | Pan | Hop Run |
Script to run workflows(运行工作流的脚本) | Kitchen | Hop Run |
Server for remote execution(远程执行服务器) | Carte | Hop Server |
Script for configuration(配置脚本) | - | Hop Config |
2、配置
Configuration(配置) | Kettle | Hop |
---|---|---|
System variables(系统变量) | ${KETTLE_HOME}/.kettle/kettle.properties | ${HOP_CONFIG_FOLDER}/hop-config.json or ./config/hop-config.json |
GUI preferences (fonts, colors, preferences…) 图形用户界面偏好设置(字体、颜色、偏好…) | ${KETTLE_HOME}/.kettle/kettle.properties | ${HOP_CONFIG_FOLDER}/hop-config.json or ./config/hop-config.json |
Language choice(语言选择) | ${KETTLE_HOME}/.kettle/.languageChoice | ${HOP_CONFIG_FOLDER}/hop-config.json or ./config/hop-config.json |
Shared objects(共享对象) | ${KETTLE_HOME}/.kettle/shared.xml | All stored in Hop shared metadata |
GUI usage information(图形用户界面使用信息) | ${KETTLE_HOME}/.kettle/kettle.properties | ${HOP_AUDIT_FOLDER}/<project>/ |
Shared metadata(共享元数据) | ${PENTAHO_METASTORE_FOLDER} or ${HOME}/.pentaho/metastore | ${HOP_METADATA_FOLDER} or ${HOP_CONFIG_FOLDER}/metadata |
Environment/Project configurations(环境/项目配置) | ${KETTLE_HOME}/.kettle/environment/metastore | ${HOP_CONFIG_FOLDER}/hop-config.json or ./config/hop-config.json |
3、引擎
Engine | Kettle | Hop |
---|---|---|
Unit Testing | Plugin | Yes |
Apache Spark Support | No (PDI EE only) | Yes (Beam) |
Apache Flink Support | No | Yes (Beam) |
Google Cloud DataFlow Support | No | Yes (Beam) |
4、特性
Feature(特性) | Kettle | Hop |
---|---|---|
Projects and Lifecycle Configuration(项目与生命周期配置) | No | Yes |
Search Information in projects and configurations (在项目和配置中搜索信息) | No | Yes |
Configuration management through UI and command line (通过界面和命令行进行配置管理) | No | Yes |
Standardized shared metadata(标准化共享元数据) | No | Yes |
Pluggable runtime engines(可插拔的运行时引擎) | No | Yes |
Advanced GUI features: memory, native zooom, … 高级 GUI 功能:内存、原生缩放…… | No | Yes |
Metadata Injection(元数据注入) | Yes | Yes (most transforms) |
Mapping (sub-transformation/pipeline(映射(子转换/管道) | Yes | Yes(simplified) |
Web Interface | WebSpoon | HopWeb |
APL 2.0 license compliance(APL 2.0 许可合规性) | LGPL doubts regarding pentaho-metastore library | Yes |
Pluggable metadata objects(可插拔的元数据对象) | No | Yes |
GUI plugin architecture(GUI 插件架构) | XUL based (XML) | Java annotations |