Apache DataSketches 具有以下特点:
关于 Apache® DataSketches™ 的更多介绍可以到 https://datasketches.apache.org/ 查看。
Apache Gobblin 是一个用于流数据和批处理数据生态系统的分布式大数据集成框架。可以简化大数据集成里面的常见问题,比如数据摄取、复制、组织以及生命周期管理等。该项目2014年起源于 LinkedIn,2015年开源,2017年2月进入 Apache 孵化器,2021年02月16日正式毕业成为 Apache 顶级项目。
多年来,LinkedIn 的数据基础架构团队构建了自定义的数据摄取解决方案,用于将不同的数据引入到 Hadoop 生态系统。最终,LinkedIn 运行了 15 种类型的摄取管道,这给数据质量、元数据管理、开发和操作带来了重大挑战。
上面这个问题促使 LinkedIn 构建了 Gobblin。 Gobblin 是一种通用数据摄取框架,用于从各种数据源(例如数据库、REST API、FTP/SFTP 服务器、文件管理器等)中提取、转换和加载大量数据到 Hadoop。Gobblin 处理所有数据摄取 ETL 所需的常见例行任务,包括作业/任务调度、任务分区、错误处理、状态管理、数据质量检查、数据发布等。Gobblin 在同一执行框架中摄取来自不同数据源的数据,并在同一个地方管理不同来源的元数据。 结合其他特性,例如自动扩展、容错性、数据质量保证、可扩展性和处理数据模型演化的能力,使 Gobblin 成为一个易于使用、自我服务且高效的数据摄取框架。
Gobblin 是围绕可扩展性的思想构建的,即用户可以轻松添加新适配器或扩展现有适配器以使用新数据。 Gobblin 的架构体现了这一思想:
Gobblin 作业建立在一组 constructs 上(由上图中的浅绿色框表示),它们以某种方式协同工作并完成数据提取工作。所有的 constructs 都可以通过作业配置插入,并且可以通过添加新的或扩展现有的实现来扩展。
一个 Gobblin 作业由一组任务组成,每个任务对应一个要完成的工作单元,负责提取一部分数据。Gobblin 作业的任务由 Gobblin 运行时(Gobblin runtime)(由上图中的橙色框表示)根据选择的部署设置(由上图中的红色框表示)执行。
Gobblin 运行时(Gobblin runtime)负责在选择的部署设置上运行用户定义的 Gobblin 作业。它处理常见的任务,包括作业和任务调度、错误处理和任务重试、资源协商和管理、状态管理、数据质量检查、数据发布等。
Gobblin 目前支持两种部署模式:单节点的 Standalone 模式和 Hadoop 集群的 Hadoop MapReduce 模式。 当然,这部分还在扩展。
Gobblin 的运行和操作由一些组件和实用程序(由上图中的蓝色框表示)支持,它们处理重要的事情,例如元数据管理、状态管理、指标收集和报告以及监控。
关于 Apache® Gobblin™ 的更多介绍可以到 https://gobblin.apache.org/ 查看。
Apache DolphinScheduler是一个分布式去中心化,易扩展的可视化DAG工作流任务调度平台。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。该项目最初于 2017 年 12 月在易观创建,并于 2019 年 8 月进入 Apache 孵化器,2021年04月08日正式毕业成为 Apache 顶级项目。
Apache DolphinScheduler 以 DAG 流式的方式将 Task 组装起来,可实时监控任务的运行状态,同时支持重试、从指定节点恢复失败、暂停及 Kill 任务等操作。其主要有以下几个特点:
下图是 Apache DolphinScheduler 调度系统架构:
主要模块介绍如下:
关于 Apache® DolphinScheduler™ 的更多介绍可以到 https://dolphinscheduler.apache.org/ 查看。
Apache Pinot 是一个分布式实时分布式 OLAP 数据存储,旨在以高吞吐量和低延迟提供可扩展的实时分析。该项目最初于 2013 年由 LinkedIn 创建,2015 年开源,于 2018 年 10 月进入 Apache 孵化器,2021年08月02日正式毕业成为 Apache 顶级项目。
Apache Pinot 可以直接从流数据源(例如 Apache Kafka 和 Amazon Kinesis)中提取,并使事件可用于即时查询。它还可以从批处理数据源(例如 Hadoop HDFS、Amazon S3、Azure ADLS 和 Google Cloud Storage)中提取。该系统的核心是列式存储,具有多种智能索引和预聚合技术以实现低延迟。这使得 Pinot 最适合面向用户的实时分析。同时,Pinot 也是其他分析用例的绝佳选择,例如内部仪表板、异常检测和临时数据探索。
Apache Pinot 主要有以下特点:
Pinot 是 LinkedIn 和 Uber 的工程师共同设计的,可以根据集群中的节点数量来扩展查询性能。随着添加更多节点,查询性能总是会根据期望的每秒查询量配额提高。为了在不降低性能的情况下实现无限数量节点和数据存储的水平可伸缩性,Pinot 遵守以下设计原则:
下面是 Apache Pinot 的架构:
从上图可以看出主要有 Controller, Broker, Server, 以及 Minion 等组件。
Apache Helix && Apache Zookeeper
Pinot 使用 Apache Helix 进行集群管理。Helix 作为代理(agent)嵌入到不同的组件中,并使用 Apache Zookeeper 来协调和维护整个集群状态和运行状况。所有的 Pinot servers 和 brokers 都由 Helix 管理。Helix 是一个通用的集群管理框架,用于管理分布式系统中的分区和副本。可以将 Helix 看作是一个事件驱动的发现服务,它具有推和拉通知功能,可以将集群的状态驱动到理想的配置。
Controller
Pinot 的 Controller 充当集群整体状态和运行状况的驱动程序。由于它的角色是 Helix 的参与者(participant)和旁观者(spectator),它驱动其他组件的状态,所以它通常是在 Zookeeper 之后启动的第一个组件。启动 Controller 需要两个参数:Zookeeper地址和集群名称。如果集群还不存在,Controller 将自动通过 Helix 创建一个集群。
Broker
Broker 的职责是将给定的查询路由到适当的 server 实例。Broker 将收集并合并来自所有 server 的响应,并将其发送回请求客户机。broker 提供接收 SQL 查询并以 JSON 格式返回响应的 HTTP 端点。
Server
Server 管理 segments,并在查询处理期间完成大部分繁重的工作。Pinot 有两种 servers:实时 server 和离线 server,但 server 并不真正知道它将是实时 server 还是离线 server 。server 的职责取决于表分配策略(table assignment strategy)。
Minion
Minion 是一个可选的组件。Minion 用于从 Pinot 集群中清除数据(比如出于英国的 GDPR 遵从性等原因)。
关于 Apache® Pinot™ 的更多介绍可以到 https://pinot.apache.org/ 查看。
Apache Kyuubi 是一个分布式多租户的 Thrift JDBC/ODBC 服务器,用于大规模数据管理、处理和分析,其构建在 Apache Spark 之上,并且设计支持更多的引擎(比如 Apache Flink)。由网易在2018年开源,并于2021年06月21日进入 Apache 孵化器。
Kyuubi 主要应用在大数据领域场景,包括大数据离线计算、数据仓库、Ad Hoc等方向。Kyuubi 提供了以下几个功能:
Apache Kyuubi 的系统架构如下:
图的中间部分显示了 Kyuubi 服务器的主组件,该组件处理图中左侧所示的客户端连接和执行请求。在 Kyuubi 中,这些连接请求被维护为 Kyuubi 会话,执行请求被支持为 Kyuubi 操作,这些操作被绑定到相应的会话。
Kyuubi Session 的创建可以分为两种情况:轻量级和重量级。大多数会话创建都是轻量级的,用户不感知。唯一的重量级情况是,在用户的共享域中没有实例化或缓存 SparkContext,这通常发生在用户第一次连接或很长时间没有连接时。这种一次性成本会话维护模型可以满足大多数特别的快速响应需求。
Kyuubi 以松散耦合的方式维护 SparkConext 的连接。这些 SparkContexts 可以是通过这个服务实例在客户端部署模式下本地创建的 Spark 程序,也可以是在 Yarn 或 Kubernetes 集群中以集群部署模式创建的 Spark 程序。在高可用模式下,这些 SparkConext 也可以由不同机器上的其他 Kyuubi 实例创建,并由该实例共享。
这些 SparkConexts 实例本质上是由 Kyuubi 服务托管的远程查询执行引擎程序。这些程序在 Spark SQL 上实现,端到端编译、优化和执行SQL语句,并与元数据服务(如Hive Metastore)和存储服务(如 HDFS)进行必要的交互,最大限度地发挥 Spark SQL 的功能。它们可以管理自己的生命周期,并且不受 Kyuubi 服务器上的故障转移的影响。
关于 Apache® Kyuubi™ 的更多介绍可以到 https://kyuubi.apache.org/ 查看。
Apache SeaTunnel (原名 Waterdrop)是一个非常易于使用的超高性能分布式数据集成平台,支持实时流式和离线批处理的海量数据处理,架构于 Apache Spark 和 Apache Flink 之上。由 Interesting Lab 于 2018年开源,并于2021年12月09日进入 Apache 孵化器。
通过 Apache SeaTunnel 可以让 Spark 的使用更简单、更高效,并巩固了行业的高质量经验,并将业界和 Interesting Lab 使用 Spark 的优质经验固化到SeaTunnel 这个产品中,明显减少学习成本,加快分布式数据处理能力在生产环境落地。Databricks 开源的 Apache Spark 对于分布式数据处理来说是一个伟大的进步。Interesting Lab 在使用 Spark 时发现了很多可圈可点之处。除了大大简化分布式数据处理难度外,seatunnel 尽所能为您解决可能遇到的问题:
Apache SeaTunnel 的特性:
Apache SeaTunnel 的工作流程如下:
关于 Apache® SeaTunnel™ 的更多介绍可以到 https://seatunnel.apache.org/ 查看。
本博客文章除特别声明,全部都是原创!