博客园  :: 首页  :: 联系 :: 管理

2021~2022Apache大数据相关项目盘点

Posted on 2022-03-06 15:40  天戈朱  阅读(2544)  评论(0编辑  收藏  举报

一、晋升为Apache TLP(Top-Level Project)的大数据相关项目

二、进入到 Apache 孵化器(incubator)的项目:

三、退役的 Apache TLP 大数据项目

四、2021 Apache 年度项目:

 

1.1、Apache® DataSketches™ :高性能大数据流算法库


 Apache DataSketches 是一个用于可扩展近似算法的高性能大数据分析库。该项目于2012年由雅虎发起,2015年开源,并于2019年3月进入Apache孵化器,2021年02月03日正式毕业成为 Apache 顶级项目。 

 在大数据分析中,经常会出现一些不能伸缩的查询问题,因为它们需要大量的计算资源和时间来生成精确的结果。包括 count distinct、分位数(quantiles)、最频繁项(most-frequent items)、joins、矩阵计算(matrix computations)和图分析(graph analysis)。 

 如果近似结果是可以接受的,那么有一类专门的算法,称为流算法(streaming algorithms),或 sketches,可以更快地产生结果,并具有数学证明的误差界限。对于交互式查询,可能没有其他可行的替代方案,而在实时分析的情况下,sketches 是唯一已知的解决方案。 

 对于任何需要从大数据中提取有用信息的系统,这些 sketches 都是必需的工具包,应该紧密地集成到它们的分析功能中。这项技术帮助雅虎成功地将其内部平台上的数据处理时间从数天或数小时减少到数分钟或数秒。Apache DataSketches 具有以下特点:

  • 非常快:产生近似结果的速度比传统方法快几个数量级——用户可配置的大小与精度的权衡;
  • 高效:sketch 算法可以在同一个进程处理实时和批数据;
  • 针对处理大数据的计算环境进行优化,如 Apache Hadoop、Apache Spark、Apache Druid、Apache Hive、Apache Pig、PostgreSQL等;
  • 兼容多种语言和平台:Java, C++ 和 Python; 

 

1.2、Apache® Gobblin™:开源分布式大数据集成框架


  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 成为一个易于使用、自我服务且高效的数据摄取框架。 

 

1.3、Apache® DolphinScheduler™:开源分布式大数据可视化工作流调度系统


  Apache DolphinScheduler是一个分布式去中心化,易扩展的可视化DAG工作流任务调度平台。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。

  该项目最初于 2017 年 12 月在易观创建,并于 2019 年 8 月进入 Apache 孵化器,2021年04月08日正式毕业成为 Apache 顶级项目。 

  Apache DolphinScheduler 以 DAG 流式的方式将 Task 组装起来,可实时监控任务的运行状态,同时支持重试、从指定节点恢复失败、暂停及 Kill 任务等操作。其主要有以下几个特点:

  • 高可靠性:去中心化的多 Master 和多 Worker 服务对等架构, 避免单 Master 压力过大,另外采用任务缓冲队列来避免过载
  • 简单易用:DAG 监控界面,所有流程定义都是可视化,通过拖拽任务完成定制 DAG,通过 API 方式与第三方系统集成, 一键部署
  • 丰富的使用场景:支持多租户,支持暂停恢复操作. 紧密贴合大数据生态,提供 Spark, Hive, M/R, Python, Sub_process, Shell 等近20种任务类型
  • 高扩展性:支持自定义任务类型,调度器使用分布式调度,调度能力随集群线性增长,Master 和 Worker 支持动态上下线 

 

1.4、Apache® Pinot™:开源分布式实时大数据分析基础设施


  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 主要有以下特点:

  • 面向列的数据库:具有各种压缩方案,如 Run Length,Fixed Bit Length;
  • 可插拔索引技术:支持排序索引(Sorted Index),位图索引(Bitmap Index),倒排索引(Inverted Index,),StarTree 索引,Bloom 过滤器,范围索引(Range Index),文本搜索索引(Lucence/FST), Json 索引,地理空间索引(Geospatial Index );
  • 具有基于查询和 segment 元数据优化查询/执行计划的能力;
  • 支持从 Kafka、Kinesis 等流系统近实时的摄取数据,也支持从 Hadoop、S3、Azure、GCS 等批处理系统摄取数据;
  • 类似 sql 的查询语言,支持对数据进行选择、聚合、过滤、分组、排序和 distinct 查询;
  • 支持多值字段
  • 支持水平扩展和容错

  Pinot 是 LinkedIn Uber 的工程师共同设计的,可以根据集群中的节点数量来扩展查询性能。随着添加更多节点,查询性能总是会根据期望的每秒查询量配额提高。为了在不降低性能的情况下实现无限数量节点和数据存储的水平可伸缩性,Pinot 遵守以下设计原则:

  • 高可用性:构建 Pinot 是为了为客户应用程序提供低延迟的分析查询。根据设计,Pinot 没有单点故障。当节点故障时,系统继续提供查询服务。
  • 水平可伸缩:在工作负载发生变化时通过添加新节点进行伸缩的能力;
  • 延迟 vs 存储:构建 Pinot 是为了在高吞吐量的情况下提供低延迟。为此,开发了段分配策略(segment assignment strategy)、路由策略、星树索引(star-tree indexing)等特性来实现这个功能。
  • 不可变数据:Pinot 假设所有存储的数据都是不可变的。对于 GDPR 遵从性,我们提供了一个附加解决方案来清除数据,同时提供性能保证;
  • 动态配置更改:必须在不影响查询可用性或性能的情况下执行添加新表、扩展集群、摄取数据、修改索引配置和重新平衡等操作。 

 

1.5、Apache Hop 起源于 Kettle 的新一代数据集成平台 


   Apache Hop(Hop Orchestration Platform 的首字母缩写)是一种数据编排(data orchestration )和数据工程平台(data engineering platform),旨在促进数据和元数据编制。Hop 可以让我们专注于问题的解决,而不受技术的阻碍。该项目起源于 Kettle,经过数年的重构,并于2020年9月进入 Apache 孵化器;2022年1月18日正式成为 Apache 顶级项目  

   Hop 允许数据专业人员以可视化的方式工作,使用元数据来描述应如何处理数据。可视化设计使数据开发人员能够专注于他们想要做的事情,而不是需要如何完成该任务。这种对手头任务的关注让 Hop 开发人员比编写代码时更有效率。Hop 的目标是成为数据集成的未来,我们只需要对手头上的任务进行一次设计,然后通过 Apache Hop 在任何地方运行,比如 Hop 本地引擎、Spark、Flink、Google Dataflow 或 AWS EMR等。 

   Hop 被设计的尽可能灵活:其核心是小巧但功能强大的 Hop 引擎。所有的功能都是通过插件添加的:默认的 Hop 安装带有大约 400 个插件。我们可以根据需要删除或添加第三方插件,以定制 Hop,使其完全符合我们的需要。

   Hop 设计用于任何场景,从物联网到海量数据、本地、云端、裸操作系统或容器和 kubernetes。 

Hop 的使用场景主要有以下几个方面:

  • 利用云、集群和大规模并行处理环境,将大型数据集加载到数据库中;
  • 数据仓库构建并支持渐变维度 (SCD, Slowly Changing Dimensions)、变更数据捕获 (CDC,Change Data Capture) 和代理键创建;
  • 不同数据架构之间的集成,结合关系型数据库、文件、NoSQL 数据库(如 Neo4j、MongoDB、Cassandra等)
  • 不同数据库和应用程序之间的数据迁移;
  • 数据分析和数据清理。

Apache Hop 和 Kettle 联系和区别:

  • Kettle 最早是一个开源的 ETL 工具,作为一个端对端的数据集成平台,可以对多种数据源进行抽取(Extraction)、加载(Loading)、数据落湖(Data Lake Injection)、对数据进行各种清洗(Cleasing)、转换(Transformation)、混合(Blending)。

  • 支持无代码拖拽式构建数据管道、多种数据源以及和 Hadoop 深度集成。在国内外的很多行业有着广泛的使用。不过近几年 Kettle 的发展比较缓慢,为了改变现状,2019年基于 Kettle 的一个分支建立 Hop 项目

由于 Apache Hop 是从 Kettle 发展过来的,所以两者之间在概念上基本上可以找到对应的名称,比如 Kettle 里面转换在 Hop 里面称为管道(Pipeline):

Apache Hop 和 Kettle 功能的对比如下所示:

从上表可以看到,Hop 相比于 Kettle 比较完善。比如 Hop 支持项目和生命周期配置、支持在项目和配置中搜索信息、通过 UI 和命令行进行配置管理。另外,Hop 和 Apache Beam 有比较深的集成,所以其支持可插拔的运行时引擎,比如可以将 Pipelines 通过 Apache Beam 发到 Apache Spark 、Apache Flink 、Dataflow 等引擎里面计算。   

 

2.1、Apache kyuubi:分布式多租户的 Thrift JDBC/ODBC 服务器


  Apache Kyuubi 是一个分布式多租户的 Thrift JDBC/ODBC 服务器,用于大规模数据管理、处理和分析,其构建在 Apache Spark 之上,并且设计支持更多的引擎(比如 Apache Flink)。由网易在2018年开源,并于2021年06月21日进入 Apache 孵化器。

  Kyuubi 主要应用在大数据领域场景,包括大数据离线计算、数据仓库、Ad Hoc等方向。Kyuubi 提供了以下几个功能:

  • 多租户:Kyuubi 支持端到端的多租户,这就是为什么尽管已经存 在Spark Thrift JDBC/ODBC 服务器,网易还是要创建这个项目。
  • 简单易用:您只需熟悉 SQL 和JDBC 即可处理海量数据,Kyuubi 帮助您专注于业务系统的设计和实现。
  • 到处运行:Kyuubi 可以向所有支持的集群管理器提交 Spark 应用程序,包括 YARN、Mesos、Kubernetes、Standalone 和 local。
  • 安全和认证:通过强大的身份验证和细粒度的列/行级授权,Kyuubi 可以确保系统和数据的安全。
  • 高可用:是企业级SQL引擎的基本特性。Spark Thrift Server不具备这种能力;而Kyuubi提供了基于ZooKeeper的高可用解决方案,以支持高可用特性; 

 

2.2、Apache SeaTunnel:高性能、分布式、海量数据集成框架


  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 的特性:

  • 简单易用,灵活配置,无需开发
  • 实时流式处理
  • 高性能
  • 海量数据处理能力
  • 模块化和插件化,易于扩展
  • 支持利用SQL做数据处理和聚合
  • Spark Structured Streaming
  • 支持Spark 2.x 

 

3.1、apache Ambari 正式退役 (https://attic.apache.org/projects/ambari.html)


2022 年初,Apache Ambari 于 2022-01 悄然宣布,项目不再维护,正式进入退役阶段!

 

Ambari 回顾:

  • Apache Ambari 提供了一系列工具软件,辅助集群管理员,进行集群搭建/集群管理/集群监控,从而使得大数据集群的运维管理更简单易捷;
  • 除了提供基于浏览器的 WEB-UI 方便运维人员对集群进行运维管理外,Ambari 也提供了一系列 REST APIs, 方便应用开发人员与系统集成人员,将集群搭建/集群管理/集群监控功能,提成到应用系统中;
  • Apache Ambari 创建于 2013-11,其最新版本,也是最后一个版本,是 Ambari 2.7.6,发布于 2021-11月;

“项目退役”的含义:

  • 项目中正在使用的开源组件退役后,用户仍然可以正常获取该组件的源码包和二进制包,仍然可以正常使用,几乎不受影响;对于代码能力比较强有二次开发能力的大公司,很多都会基于开源版本fork自己的新分支并维护在自己的代码库中,其影响更是有限。
  • 已经退役的开源组件,Apache 官方不会再维护该项目,也就是说不会出新版本和新特性,对后续陆续发现的BUG也不会出修复版本,所以虽然该组件仍可以正常使用,但由于不能复用其背后开源社区的力量,所以长期来讲,一般都会重新进行技术选型,寻找替代品,在新产品新项目中切换使用新组件,在旧产品旧项目中逐步淘汰替换旧组件。

Ambari 往昔:

  • 2015 年初,大数据三驾马车(Cloudera,Hortonworks,MapR)正值春风得意,Ambari 作为市面上唯一的开源的大数据集群管理系统,其开源社区相当活跃,市面上的应用者也很多,很多公司都基于开源的 Ambari 进行二次开发构建自己的大数据平台,Hortonworks 更是将 Ambari 作为其大数据平台 HDP (Hortonworks Data Platform) 内置的大数据集群管理系统,其市场占用率不可谓不高!

六七年时间,Ambari 就从当初的鼎盛时期,走到了今天退役的境地!这背后的原因:

  • IT 市场大环境变化的影响:随着IT 生态大环境的变化,尤其是云计算的突起,市场竞争愈加激烈,Cloudera 不得不改变市场策略,于2019年1月与 Hortonworks 进行了合并;另一驾马车MapR,也被笔者曾经的东家 HPE 于2019年8月收购;
  • 有科技大公司产品策略调整的直接影响:Cloudera 与 Hortonworks 合并后,逐步摒弃了 HDP 与 CDH 大数据平台,推出了 CDP 大数据平台;并在底层的大数据集群管理系统上,摒弃了 Ambari,主推原 CDH 底层的 Cloudera Manager;
  • 更有开源社区宣传和运营的问题:Ambari作为一款优秀的开源大数据管理系统,时至今日,仍有不少公司的大数据平台是基于其开源版本二开构建的,正所谓酒香也怕巷子深,如果 Ambari 社区有着良好的宣传和运营,如果基于 Ambari 二开的公司能更主动地秉承开源精神回馈社区,相信即使 Cloudera 做了了上述调整,Ambari项目也不至于退役。

 

3.2、apache Sentry 正式退休(https://attic.apache.org/projects/sentry.html


  Apache Sentry是Cloudera公司发布的一个Hadoop开源组件,2016年3月从Incubator毕业,成为Apache顶级项目。2020年2月退休。在上一节讲过,用 ranger 替代(CDP中内置的就是 ranger 而不再是 sentry)

 

3.3、apache Sqoop 正式退休 (https://attic.apache.org/projects/sqoop.html)


 Sqoop 在大数据集群 HADOOP 和关系型数据库 RDBMS 之间,提供了高效的大批量数据同步功能(Bulk Data Transfer) ,sqoop 于 2021-06正式退役。可以考虑使用 datax/sparksql/kafka-connect/seatunnel/flink-cdc 等替代;

 

4.1、Apache Superset - 最活跃


 日前,Apache 官方博客发布了2021年度报告,从社区、项目动态、和代码提交情况等方面进行了统计。按提交次数排名的话,Apache Superset 可谓是 2021 年的年度项目,它也是唯一一个提交超过 10000 次的单个项目,并且在 GitHub 上吸引了近 43000 颗星(以及 8400 个 fork)

 

参考资料