写点什么

Apache Kyuubi PPMC 燕青:为什么说这是开源最好的时代?

  • 2021-08-04
  • 本文字数:4894 字

    阅读完需:约 16 分钟

Apache Kyuubi PPMC燕青:为什么说这是开源最好的时代?

在大数据领域,Apache Spark 早已成为最炙手可热的计算引擎。随着 Spark 两年磨一剑,正式发布 3.0 版本,带来诸多新特性的 Spark 更是拥有了无限想象空间。不过对于用户而言,平台的技术门槛始终是个不小的挑战。也正因如此,不少项目选择直接建立在 Spark 之上,通过将平台的能力统合,并引入新的特性,从而降低用户使用门槛,实现大数据价值的最大化。

 

Kyuubi 正是这样一个拥抱 Spark、高性能的通用 JDBC 和 SQL 执行引擎,由网易数帆旗下有数大数据团队开源。Kyuubi 提供标准化的接口,赋予用户调动整个数据湖生态的数据的能力,使得用户能够像处理普通数据一样处理大数据。

 

6 月 21 日,Apache 软件基金会宣布,Kyuubi 以全票通过的表现,正式进入 Apache 基金会孵化器。这也侧面证明了 Kyuubi 的受欢迎程度。

 

近日,InfoQ 有幸采访到了网易数帆技术专家、Apache Kyuubi PPMC、Apache Spark Committer 燕青,和他聊了聊 Kyuubi 一路发展背后的故事,以及他对于开源的理解。

“九尾狐”Kyuubi

 

Kyuubi 的命名源自中国神话《山海经》,意为“九尾狐”。狐会喷火,象征 Spark;狐有九尾,类比多租户。这个命名也体现出了 Kyuubi 系统设计之初的主要目的——在 Spark 上实现多租户。

 

事实上,在 Kyuubi 之前,市面上已存在具备类似能力的产品,比如 Spark ThriftServer(简称 STS)。这是 Spark 社区现有的、基于 HiveServer2 实现的 Thrift 服务,旨在无缝兼容 HiveServer2。

 

虽然 STS 的性能极佳,但当前并不完善,尤其在企业场景下存在较多短板。比如,单 Spark 应用实现的 STS 并不能完整支持多租户,因为 STS 本质上是一个 Spark Application,整个 Application 只有全局唯一的用户名,并同时包括 Driver 端和 Executor 端。而对于像网易这样有多条产品线的互联网公司来说,每条产品线的数据在一定程度上是隔离的。因此,只有支持多租户才能满足公司对于数据安全、资源隔离、高可用以及高并发的要求。

 

这也就促使网易内部开发了 Kyuubi。Kyuubi 在统一接口基础上,拓展了 STS 在多租户模式下的使用场景,并依托多租户概念获得了完善的资源隔离共享能力和数据安全隔离的能力。

 

在 2018 年上线之初,Kyuubi 的定位只是在 Spark 上实现多租户,再引入一个比较细粒度的权限控制,做一个小而美的系统。因此,Kyuubi 的第一代架构主要面向的是 BI 产品。但是正式上线并开源后,团队发现用户并不在意系统本身的设计初衷以及使用场景是什么,所以当一些用户使用 Kyuubi 做 ETL 等工作时,用起来磕磕绊绊,反馈也不是特别好。

 

苦苦挣扎一年后,团队决定深入 Spark 社区去贡献,从中找到设计一套比较通用的、面向更多用户的架构方案灵感。这期间,Spark 也正在酝酿一个大版本的跨越式升级,从 2.4 直接来到 3.0 版本。Kyuubi 团队在其中参与了很多工作,并一同推动 Spark 社区发展。

 

“在这个过程中,我们对 Spark 的内核机制有了一个更加充分的了解。在这个基础上,我们意识到我们对于 Kyuubi 原本的构想是不太可持续的,Kyuubi 的第一代架构视野比较小,应用场景也很少。因此,我们觉得是时候对 Kyuubi 的架构进行一番革新了。”燕青回忆道。

 

2020 年,团队重新设计了 Kyuubi 第二版的架构,新架构的使用场景更加丰富。具体来看,Kyuubi 的使用场景主要包括以下三个方面:

 

1.替换 HiveServer2,轻松获得 10~100 倍性能提升。

  • Kyuubi 高度兼容 HiveServer2 接口及行为,支持无缝迁移;

  • Kyuubi 分层架构,消除客户端兼容性问题,支持无感升级;

  • Kyuubi 支持 Spark SQL 全链路优化及再增强,性能卓著;

  • 高可用、多租户、细粒度权限认证各种企业级特性统统都有。

 

2.构建 Serverless Spark 平台。

  • Serverless Spark 目标绝对不是让用户调用 Spark 的 API、继续写 Spark 作业;

  • 通过 Kyuubi 预置的 Engine 模块,用户无需理解 Spark 逻辑,入门门槛极低;

  • 用户只需通过 JDBC 及 SQL 操作数据专注自身业务开发即可,资源弹性伸缩,0 运维;

  • 支持资源管理器(Kubernetes, YARN 等),Engine 生命周期,Spark 动态资源分配 3 级不同粒度全方位的资源弹性策略;

  • 支持 YARN/Kubernetes 多种资源管理器同时调度,保障历史作业安全迁移上云;

  • Spark 自适应查询引擎(AQE)及 Kyuubi AQE plus,提供澎湃动力。

 

3.构建统一数据湖探索分析管理平台。

  • 支持 Spark 所有官方数据源及第三方数据源;

  • 支持 Spark DSv2 元数据管理,直观进行数据湖构建及管理;

  • 支持 Apache Iceberg/Hudi, DeltaLake 等所有主流数据湖框架;

  • 一个接口一个引擎一份数据,提供统一的分析查询、数据摄取、数据湖管理平台;

  • 批流一体,支持流式作业(Upcoming)。

 

当前,Kyuubi 不仅在网易内部承接了大量工作,在业内也有多家大型公司采用 Kyuubi 解决问题。“Kyuubi 新架构做出来之后,很多其他公司的小伙伴也开始活跃地参与到这个项目中来,慢慢地参与的人多了以后,我们就想着是不是可以去 Apache 软件基金会进行孵化。”燕青说道。

独行者速,众行者远

 

2021 年 3 月份,团队开始正式筹备将 Kyuubi 捐赠给 Apache 软件基金会。事实上,拥抱 Apache 软件基金会的念头一早就扎在 Kyuubi 团队成员心中了。在燕青看来,做下这一决定背后的原因主要有以下 3 点:

 

  • 第一,团队以及公司都有意愿去做这件事情。网易内部本身始终贯行开源开放的策略,所以当团队和公司提出这个想法后,公司内部也给予了一定的支持,比如为项目配套了一些运营力量等等。

  • 第二,随着第二版架构的登场,Kyuubi 发展路线日益清晰,也有越来越多的开发者参与到项目中来,社区规模逐步扩大。

  • 第三,团队成员发现一些潜在的 Kyuubi 用户或是开发者产生 IP 产权方面的顾虑。此前即便 Kyuubi 已经开源,但依旧是属于网易的产品,将项目捐赠给 Apache 软件基金会后,可以消除这些开发者的顾虑,进一步吸引更多的开发者参与其中。

 

6 月 21 日,Apache 软件基金会宣布,Kyuubi 以全票通过的表现,正式进入 Apache 基金会孵化器。根据投票结果,Kyuubi 获得了 13 个约束性投票(binding votes)和 8 个无约束性投票(non-binding votes),投票全部持赞同意见,无弃权票和反对票。

 

在走向 Apache 软件基金会的过程中,燕青坦言 Kyuubi 很幸运地得到了来自公司内外的不少帮助。

 

“有些帮助是无形的,有些帮助是有形的”,燕青说,“Kyuubi 能够成功进入 Apache 基金会孵化器,很大程度上是因为那些开源前辈们已经把路铺好,很多前辈在国内开源领域深耕多年,比如姜宁老师等等,他们在前期做的一些努力让我们后人能够乘凉。理论上来说,现在的项目要想进入 Apache 软件基金会孵化,比他们那个年代要更加容易一些。

 

“另外,姜宁老师发起并创立的 ALC Beijing 也会帮助我们国内开发者或企业去孵化一些本土项目,比如他们会把一些 Apache 软件基金会的文档翻译成中文,这对于英文不太好的开发者来说帮助非常大。”

 

在这个过程中,Kyuubi 也得到了不少来自 Apache 软件基金会的支持与帮助。“Apache 的指导文档本身就对我们产生很大的帮助。如果没有这个文档,你根本不知道这一步做什么,下一步做什么。Apache 的指导文档写得非常详细,就算没有其他人的帮助,只要你耐心地把这些文档阅读下来,也能更好地完成项目捐献。”

 

在 Kyuubi 项目官宣进入 Apache 孵化器的那天,Kyuubi 特别感谢了很多给予过自己帮助的人,比如给 Kyuubi 提供指导的 Champion 和 Mentors 姜宁,Mentors 章剑锋、张铎、Akira Ajisaka。也有为 Kyuubi 提出 issue 和建议的伙伴们,以及为 Kyuubi 做出贡献与支持的国内外数十家企业用户。

 

独行者速,众行者远。而这,也是开源一贯传承的精神。

发展社区的关键在于多倾听开发者的声音

 

现在,距离 Kyuubi 进入 Apache 大家庭已有月余,至于进入 Apache 之后发生了哪些变化,燕青认为主要体现在项目管理和社区管理两个方面。

 

在过去,Kyuubi 归属于网易,项目管理者相当于拥有超级管理员的权限,可以直接对项目做决策,发版时间也不固定。进入 Apache 孵化器后,项目有发版等重大决策时,需要在邮件列表里一起讨论,并发起投票。内部沟通讨论结束后,还需要在孵化器邮件列表里面再去发起讨论、投票,此外,Apache 软件基金会方面也会帮忙做项目审查,看下在法律或是其他方面是否合规。相较过去,虽然整个决策链路长了一些,但这样的层层讨论对项目本身来说更负责,借助这些外脑,项目的发展路线也愈加清晰。

 

在社区管理方面,燕青坦言“以前我们比较随意,现在进入 Apache 软件基金会后,我们定了一个目标就是要把社区建立起来。”在燕青看来,社区是由人构成的,要想让社区建立并发展起来,需要多倾听社区的声音,多去了解这些个人开发者或是公司的需求

 

至于如何提高社区的活跃度,燕青认为最重要的一点是要尽量避免犯一些错误,要以开放友好且包容的态度去接纳开发者。对于社区新人,要更加有耐心,给他们时间去成长。此外,在宣传方面还需要加大力度,社区运营者也需要积极地去配合宣传。

 

最后在项目上,要更加注重品控的把握。“如果 Release 版本不太稳定的话,从用户层面来说,会劝退很多用户”,燕青解释道。

Kyuubi 的终极目标:让大数据平民化

 

对于 Kyuubi 的未来,燕青也有着很高的期待:希望建立在 Apache Spark 和数据湖技术之上,统一门户,打造一个理想的数据湖管理平台,让用户处理大数据能像处理普通数据一样轻松。

 

具体来说,第一要增强 Kyuubi 对 Kubernetes 云原生的支持,让 Kyuubi 提供的服务以及计算资源都可以在容器中进行;第二要增强 Kyuubi 对数据湖的支持,让用户能够更简单地管理、使用和建设数据湖,实现所见即所得;第三要继续深入优化引擎侧,增加流式场景,打造批流一体的平台。

 

“未来,希望 Kyuubi 可以让 Spark、让大数据平民化”,燕青憧憬道。

“这是开源最好的时代”

 

除了是 Apache Kyuubi 的作者,燕青还有多个身份,比如 Apache Spark Committer、Apache Submarine Committer。从业多年,燕青始终在开源大数据领域深耕,对他来说,“开源是可以做一辈子的事情”,而他也始终热爱开源,信仰开源。

 

在燕青看来,开源非常利于个人学习和提升自己。“很多开源大神把自己的代码或 idea 放在 GitHub 或其他开源平台上面,如果你选择在某一技术领域深耕的话,可以在这些平台中找到很多学习资料,边学边做”。

 

通过在开源社区的不断学习,燕青也实现了从医学信息学博士到顶级开源社区核心贡献者的身份转变。

 

提及自己积累下来的经验,燕青觉得在持续学习之外,也要拥有良好的心态,以及明确且专注的技术方向。“开源是一个圈子,这个圈子是开放的,但从个人的角度来看,每个人的想法不同,圈子外的人或多或少会感觉到有一堵墙的存在。如果你能够拥有良好的心态,谦虚、友善地去和社区沟通,自然也能换来同样友好的回应,从而形成良好的回路。

 

此外,从技术角度来讲,方向一定要明确,专注在一个领域内深耕,从而慢慢从不擅长变得擅长。比如我自己就是一直围绕着 Spark 这个项目去深耕,当我在这个项目里做得差不多的时候,我并不是离开它,而是继续在这个项目里去帮助别人,包括我做的 Kyuubi 也是围绕着 Spark 去做的。”

 

当前,虽然国内开源发展存在进步与乱象并生,机遇与挑战共存的状态,但燕青坚信“这是开源最好的时代”。

 

在其看来,很多开源前辈已经在这个领域做出了长时间的铺垫和积累,很多热爱开源的开发者也都投入其中,大家都在为开源贡献出自己的一份力量,帮助它朝着更好的方向去发展。

 

“从某种程度上来讲,开源氛围好与坏是在描述一个圈子,是圈子就会有一堵无形的墙,有时墙里面的人会翻出去把墙外的人引进来,有时墙外的人会主动地进到墙里。其实只要你学会融入它,帮助它去改善,就一定会朝着好的方向去发展。另外,从开源角度来讲,有些项目正确地衰落,其实正说明我们在往更正确的方向走去”,燕青说道。

 

对于国内开源的未来,燕青期望可以有越来越多的优秀开源项目诞生自高校,让开源氛围更加“年轻化”。监管层面,也希望有一些相应的规范,帮助开源更好地持续发展。

  

嘉宾介绍:


燕青,Apache Kyuubi PPMC,Apache Spark Committer,Apache Submarine Committer。目前就职于网易数帆有数大数据团队,专注于开源大数据领域。

2021-08-04 09:315477

评论

发布
暂无评论
发现更多内容

Android网络性能监控方案

移动研发平台EMAS

android 性能 监控 移动开发 应用

京东技术中台Flutter实践之路(二)

京东科技开发者

开源 中台 大前端 Web UI

Pulsar Summit Asia 2020 中文专场议题出炉!

Apache Pulsar

大数据 开源 Apache Pulsar

JVM真香系列:轻松掌握JVM运行时数据区

田维常

JVM

18张图,揭开阿里巴巴开发手册强制使用SLF4J作为门面担当的秘密

沉默王二

Java slf4j 日志系统

JMeter100个线程竟然只模拟出1个并发

dongfanger

软件测试 Jmeter 性能测试 压力测试 测试工具

一不小心画了 24 张图剖析计网应用层协议!

苹果看辽宁体育

计算机网络 计算机 协议

Java垃圾回收GC概览

Java JVM GC

非线性声学回声如何破解?华为云硬核技术为你解决

华为云开发者联盟

算法 音视频

马士兵老师首推Java七条自学路线,自学到底能不能行?自学也能拿到40W年薪?

Java架构追梦

Java 架构 面试 马士兵 项目实战

Docker

搭建一套ASP.NET Core+Nacos+Spring Cloud Gateway项目

yi念之间

云计算简史(完整版)

明道云

Java程序员必备,Github上星标55.9k的微服务神级笔记简直太香了,学完感觉自己又行了!

Java架构之路

Java 程序员 架构 面试 编程语言

LeetCode题解:剑指 Offer 22. 链表中倒数第k个节点,使用数组,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

TCP性能分析与调优策略

程序员 计算机网络 网络协议

Redis基础—了解Redis是如何做数据持久化的

数据库 redis 编程 计算机

当代开发者的六大真实现状,你被哪一个场景“戳中”了?

华为云开发者联盟

开发者 调研 报告

从一场“众盟科技云滇之播”,我们发现了美食直播的商业与公益价值

人称T客

【算法题目解析】杨氏矩阵数字查找

程序员架构进阶

算法 二分查找 杨氏矩阵

接口测试的时候如何生成随机数据进行测试

测试人生路

接口测试

完美!阿里P8都赞不绝口的世界独一份489页SQL优化笔记

Java~~~

Java 数据库 程序员 架构师 SQL优化

《迅雷链精品课》第二课:区块链核心技术框架

迅雷链

区块链

涨薪神作!华为内部操作系统与网络协议笔记爆火,Java程序员有福了

Java架构之路

Java 程序员 面试 编程语言

音像协呼吁保护音乐版权:短视频平台成为侵权重灾区

石头IT视角

把最新JAVA面试真题(阿里/字节跳动/美团)整理出来,却被自己菜哭了,赶紧去刷题了

Java架构追梦

Java 阿里巴巴 架构 面试

anyRTC Flutter SDK :全面实现跨平台音视频互动

anyRTC开发者

音视频 WebRTC RTC sdk 安卓

IPFS云算力挖矿系统开发技术

薇電13242772558

区块链 IPFS

阿里云视频云实时字幕技术,助力英雄联盟S10全球总决赛

阿里云CloudImagine

游戏开发 直播 语音识别 字幕

jdk 源码系列之ReentrantLock

sinsy

源码 jdk ReentrantLock 公平锁 非公平锁

简要分析近几年商业软件开发平台的现状

Philips

敏捷开发 快速开发 企业应用

Apache Kyuubi PPMC燕青:为什么说这是开源最好的时代?_文化 & 方法_凌敏_InfoQ精选文章