Apache InLong重磅发布 0.10.0 版本,着力降低用户使用门槛

本文主要是介绍Apache InLong重磅发布 0.10.0 版本,着力降低用户使用门槛,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

导语:Apache InLong 以腾讯内部使用的TDBank为原型,依托万亿级别的数据接入和处理能力,整合了数据采集、汇聚、存储、分拣数据处理全流程,拥有简单易用、灵活扩展、稳定可靠等特性。

Apache InLong(孵化中) 刚刚发布了 0.10.0 版本,该版本是升级为 InLong(中文名:应龙) 后的第二个版本,着力解决InLong应用门槛高问题。该版本吸引腾讯内外 10 多位开发者参与,关闭超过 120 个issue, 开发超过 8 个重要Feature。

Apache InLong简介

Apache InLong(应龙)是腾讯捐献给 Apache 社区的一站式数据流接入服务平台,提供自动、安全、高性能、分布式的数据发布订阅能力,基于该系统用户可以轻松构建基于流式的数据应用。InLong 项目原本叫TubeMQ ,专注高性能、低成本的消息队列服务。为了进一步释放 TubeMQ 周边生态能力,我们将项目升级为 InLong ,专注打造一站式数据流接入服务平台。

Apache InLong 以腾讯内部使用的 TDBank 为原型,依托万亿级别的数据接入和处理能力,整合了数据采集、汇聚、存储、分拣数据处理全流程,拥有简单易用、灵活扩展、稳定可靠等特性。

Apache InLong 服务于数据采集到落地的整个生命周期,按数据的不同阶段提供不同的处理模块,主要包括:

  • inlong-agent ,数据采集 Agent ,支持从指定目录或文件读取常规日志,进行逐条的数据上报。后续也将扩展 DB 采集,扩展HTTP上报等能力。
  • inlong-dataproxy ,一个基于 Flume-ng 的 Proxy 组件,支持数据发送阻塞、落盘重发,拥有将接收数据后转发到不同MQ(消息队列)的能力。
  • inlong-tubemq ,腾讯自研的消息队列服务,专注服务大数据场景下海量数据的高性能存储和传输,在海量实践和低成本方面有着比较好的核心优势。
  • inlong-sort ,从不同的 MQ 消费数据后进行 ETL 处理,然后将数据汇聚并写入 Hive、ClickHouse、Hbase、IceBerg 等。
  • inlong-manager ,提供完整的数据服务管控能力,包括元数据、OpenAPI、任务流、权限等。
  • inlong-website ,一个用于管理数据接入的前端页面,简化整个 InLong 管控平台的使用。

Apache InLong 0.10.0版本简介

我们从上个版本( 0.9.0 )始,将 TubeMQ 升级为 InLong ,第一次将全链路数据接入能力开源出来。随着 0.9.0 发布后,我们组织了一次线上 Meetup ,探讨了大家在初次尝鲜 InLong 过程当中遇到的问题,发现大多数同学反馈 InLong 的“使用门槛太高,部署难度太大”。InLong 包括 6 个模块,并且每个模块拥有单独的编译打包、配置、启停脚本,完整的使用 InLong 还依赖 MySQL、Hive、Flink 集群等第三方服务组件,真正把 InLong 用起来的社区用户寥寥无几。

为了解决社区用户反馈的”开头难“问题, 我们将 0.10.0 版本开发目标设定为“降低 InLong 使用门槛,方便社区用户用起来”,在新版本中主要完成了以下几个方面的工作,来简化 InLong 的安装和使用:

  • 所有组件 Docker 化,提供一键安装能力
  • 进一步整合 InLong 所有模块,简化模块配置
  • 提供 Example Demo ,手把手教如何使用 InLong

Apache InLong 0.10.0 版本主要特性

全面拥抱 GitHub

在之前版本,InLong 的所有 Issue 由Jira管理,提交新的 PR 需要在 Jira 和 GitHub 来回跳转。同时,由于 Jira 和 GitHub 账号不通,新的贡献者需要先单独注册 Jira 账号和配置权限。在最近发布的 0.10.0 版本中,我们将 Jira Issue 历史迁移到了 GitHub Issue ,并设置了配套的 Issue 模板,方便开发者创建 Issue 和关联 PR 。同时,我们将 CI 工具由 Travis 迁移到 GitHub Actions ,配置了独立的 Workflow 进行代码编译、UT,很大程度提高了 PR 的合入效率。

支持 Docker-Compose 一键部署

InLong 拥有超过 6 个模块,完整的使用 InLong 还依赖 MySQL、Hive、Flink 集群等第三方服务组件,为了方便新用户快速了解 InLong ,直观感受 InLong 的特性,在 0.10.0 版本中,我们将所有组件 Docker 化,借助 Docker-Compose 提供一键安装能力,感兴趣的用户可以参考InLong Standalone Using Docker Compose体验。

增加 Hive 入库 Example

0.9.0 版本我们只开放了 InLong 入库Hive的能力,为了指导大家快速将采集的数据分拣到 Hive ,我们增加Hive入库Example,Step by Step帮助用户快速开始使用 InLong 。

InLong Manger 整合 OpenAPI 和 API

InLong Manager 为 WebSite 提供了统一的访问 API ,为了方便其它模块获取元数据信息提供了统一的 OpenAPI 。在之前的版本中, API 和 OpenAPI 分别有两个独立的项目管理,安装时需要单独配置和启动,使用不同的端口提供服务。在 0.10.0 版本中,我们整合了 OpenAPI 和 API ,使用不同 URL Path 进行区分,通过一个项目来管理两套 API ,实现 Manager 只用部署一次的效果。

InLong Sort 增加 Pulsar 分拣能力

TubeMQ 的架构在性能和成本上拥有天然的优势,但没有多副本机制,可能会丢数据,而 Apache Pulsar 可以弥补这方面的不足。同时,为了实现 InLong 能够快速复用已有的消息队列服务,我们计划全链路支持 Pulsar ,在 0.10.0 版本中,InLong Sort 优先支持了 Pulsar 数据源的分拣能力,在后续版本中会完善 DataProxy->Pulsar、Manager->Pulsar ,实现 InLong 全链路支持 Apache Pulsar 。当然,我们也希望在未来全链路支持 Kafka 。

InLong Sort 支持指标系统

InLong Sort 中需要统计各个阶段数据条数的指标数据,如读入数据的条数,解析阶段失败/成功的数据条数,入库条数。指标系统用来统计系统各个阶段的数据条数,为了保证指标和数据语义的一致,我们通过 Flink 的 side output stream 输出指标。同时配合flink的窗口机制对指标进行预聚合,保证输出指标的量级不会太大。在 0.10.0 版本中,首先支持了通过日志的方式输出指标(At-least-once),后续我们计划扩展输出指标的系统,如 MySQL ,HBase 等,同时支持输出指标的 Exactly-once 。

InLong WebSite 国际化

上个版本重点是整合所有 InLong 所有模块,前端国际化没有来得及做,在这个版本一起优化了。InLong 当前还有很多待翻译的文档,计划在后续版本一起完善,期待英语不错的社区爱好者加入翻译大军。

InLong TubeMQ 优化 Web API

该特性将以往元数据变更后需要外部被动、批量的加载调整为 由 Master 自动的分批加载,并且数据加载与后续的配置变更同步进行。

InLong Agent 重构 DataProxy 配置获取方式

InLong Agent 采集到数据后,会将数据发送到 DataProxy ,所以 DataProxy 的配置信息需要 Agent 提前拿到。在上个版本的实现中,我们在每个接入任务的Agent配置文件中指定 DataProxy 的地址等信息。而在 0.10.0 版本中,我们重构了这部分实现,交由 Manager 管理 DataProxy 地址等信息,Agent 中配置的接入任务直接通过 Manager OpenAPI 获取。

进一步整合 InLong 各模块

在上个版本,InLong 各个模块编译后的二进制文件分散在不同目录,启停配置、命名、端口使用等也不统一,InLong 给人一种“拼凑”的印象。在 0.10.0 版本中,为了进一步强化 InLong 整体性,我们将各个模块编译结果输出到统一目录,增加Maven编译 InLong WebSite ,并规范了目录、脚本等名称,重新整理了安装部署文档,使所有模块更加统一。

Apache InLong 后续规划

在 InLong 后续版本规划中,我们会进一步释放 InLong 的能力,覆盖更多的使用场景,主要包括

  • 支持 Apache Pulsar 全链路数据接入能力
  • 支持 ClickHouse、Apache Iceberg、Apache HBase 等数据流向
  • InLong on Kubernetes

Apache InLong 贡献者招募

Apache InLong目前还处在项目孵化的初期,还有很多工作需要做,包括社区运营、文档翻译、Feature 开发等,期待更多的开源爱好者一起共建。在过去的一个版本,Apache InLong 新增国内外贡献者 6 名,实现快速增长。当前社区重于代码,我们急需更多的贡献者加入快速发展的项目社区,努力将 InLong 打造成 Apache 顶级项目,以下为 InLong 重要发展时间点:

  • 2019年9月12日,TubeMQ 对外开源并捐献给 Apache 社区;
  • 2019年11月3日,进入 Apache 社区孵化;
  • 2020年5月30日,按照 Apache 社区规范发布第一个社区版本;
  • 2020年12月20日,进行项目改名讨论和投票;
  • 2021年2月11日,发起社区改名变更申请;
  • 2021年4月11日,完成社区改名,调整为 Apache InLong;
  • 2021年7月12日,发起更名后第一个版本 0.9.0 投票。

Apache InLong项目官方网站:

Apache InLong

Apache InLongGitHub地址:

https://github.com/apache/incubator-inlong

这篇关于Apache InLong重磅发布 0.10.0 版本,着力降低用户使用门槛的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/839189

相关文章

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

C 语言中enum枚举的定义和使用小结

《C语言中enum枚举的定义和使用小结》在C语言里,enum(枚举)是一种用户自定义的数据类型,它能够让你创建一组具名的整数常量,下面我会从定义、使用、特性等方面详细介绍enum,感兴趣的朋友一起看... 目录1、引言2、基本定义3、定义枚举变量4、自定义枚举常量的值5、枚举与switch语句结合使用6、枚

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取

Mysql用户授权(GRANT)语法及示例解读

《Mysql用户授权(GRANT)语法及示例解读》:本文主要介绍Mysql用户授权(GRANT)语法及示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql用户授权(GRANT)语法授予用户权限语法GRANT语句中的<权限类型>的使用WITH GRANT

使用Python实现图像LBP特征提取的操作方法

《使用Python实现图像LBP特征提取的操作方法》LBP特征叫做局部二值模式,常用于纹理特征提取,并在纹理分类中具有较强的区分能力,本文给大家介绍了如何使用Python实现图像LBP特征提取的操作方... 目录一、LBP特征介绍二、LBP特征描述三、一些改进版本的LBP1.圆形LBP算子2.旋转不变的LB

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

Python中__init__方法使用的深度解析

《Python中__init__方法使用的深度解析》在Python的面向对象编程(OOP)体系中,__init__方法如同建造房屋时的奠基仪式——它定义了对象诞生时的初始状态,下面我们就来深入了解下_... 目录一、__init__的基因图谱二、初始化过程的魔法时刻继承链中的初始化顺序self参数的奥秘默认

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr

Spring Boot 集成 Quartz并使用Cron 表达式实现定时任务

《SpringBoot集成Quartz并使用Cron表达式实现定时任务》本篇文章介绍了如何在SpringBoot中集成Quartz进行定时任务调度,并通过Cron表达式控制任务... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启动 Sprin

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文