暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

社区对话 | 开源之夏学生孙印政:在 StarRocks 社区留下属于自己的印记

StarRocks 2024-03-01
200

关于开源之夏:

开源之夏是由中科院软件所“开源软件供应链点亮计划”发起并长期支持的一项暑期开源活动,旨在鼓励在校学生积极参与开源软件的开发维护,培养和发掘更多优秀的开发者,促进优秀开源软件社区的蓬勃发展,助力开源软件供应链建设。
2023 年,开源之夏与 133 家优秀开源社区紧密合作,作为本届合作社区之一,StarRocks 社区共贡献了三个项目。今天,我们采访“在 StarRocks 中实现 ORC Chunk Writer”的贡献者孙印政(GitHub@YinZheng-Sun)





关于孙印政




StarRocks:请简单介绍一下自己。
孙印政:大家好,我是孙印政,来自华东师范大学数据学院,目前研二在读,实验室的研究方向包括新型硬件加速数据库、存储、高可用与事务处理等,非常荣幸被导师和社区选中参与到 StarRocks 的开源之夏项目中。
StarRocks:作为计算机科班出身,是什么样的契机让你决定参加开源之夏活动?以及参加这种活动和你平时在学校学习体验有哪些不同之处?
孙印政:了解到开源之夏活动是因为我们学院的老师在学生群里发布了关于开源之夏的活动介绍,并鼓励有余力的同学积极参加。在详细了解之后,我认识到这是一次很好的提前接触工业界项目的机会,因此决定尝试参与。
在学校的学习中,更注重理论知识的掌握,但缺少实际生产环境中的代码实践机会。参与开源活动为我们提供了与工业界接触的珍贵机会。





关于”在 StarRocks 中实现 ORC Chunk Writer“项目




StarRocks:在项目申请过程中,你是如何选择开源社区和项目的?有考虑哪些因素?在准备项目申请书的过程中做了哪些准备?有什么技巧可以推荐给之后参与活动的同学们么?

孙印政:在选择社区和项目之前首先是确定自己的申请方向,最好是跟自己的背景比较契合,如果事先就对一些开源社区有了解或者贡献过的话就更好了。我因为研究方向是数据库,且之前就知道和了解过 StarRocks,所以最后自然而然的选择了 StarRocks。

然后是项目的选择,我比较感兴趣的有存储和查询方向,所以针对 StarRocks 这两个方向的项目做了调研,花了大概一周的时间详细的阅读了项目相关模块的源码,有了大致的一个实现思路,并且通过邮件跟项目导师积极沟通。

我觉得项目申请书里重要的是对项目要有自己的理解和认识,在书写项目实现思路时展示更多的细节,最好是能够深入到源码层次。

StarRocks:请简单介绍一下你在本届活动中承担的开源项目。

孙印政:本次活动中我主要负责“在 StarRocks 中实现 ORC Chunk Writer”这个项目。ORC 文件格式是 Hadoop 生态圈中的一种列式存储格式,用于降低 Hadoop 数据存储空间和加速 Hive 查询速度,也是当前 OLAP 系统中最常用的列存格式之一。本项目考虑在 StarRocks 中实现 ORC Chunk Writer,支持将 StarRocks 的Chunk 数据写入到 ORC 文件当中。

StarRocks:在开发过程中有遇到哪些困难与挑战?你是如何克服它们的?

孙印政:我刚开始开发时对 ORC 的读写流程、Chunk 的相关函数接口还不熟悉,导致刚开始开发效率不高。后来我通过参考阅读其他类似的模块的代码,比如 Parquet Writer,逐渐熟悉起来之后开发效率也提升不少。

其次,我对 StarRocks 的测试流程也不太清楚。之后我咨询了杨老师,很快得到了反馈。了解到 StarRocks 的单元测试和基准测试流程,单元测试主要用于验证功能的正确性,而基准测试则用于评估导出性能。

StarRocks:在整个开发过程中,你有哪些开发经验可以分享给读者们?

孙印政:

  • 项目整体的实现不难,首先要对 StarRocks 整体的向量化执行引擎有比较深入的了解。每个算子处理的最小单位是 Chunk,而 Chunk 则是一组 Tuple 以列存的形式存在内存中。向量化执行引擎相比传统的火山模型效率更高,因为可以更好的利用 CPU Cache 以及大量减少虚函数的调用。
  • 其次,还要了解 Parquet、ORC 这类行列混存文件的存储格式,其实 Chunk 和 ORC 的 strip 的概念非常相似,只是 ORC、Parquet 是面向磁盘的,需要做序列化反序列化和高效的压缩,减少磁盘 I/O 的代价。项目实现则是以一个 Chunk 为单位,调用 ORC 提供的写接口,以一组 Tuple 为一个 batch 写入到 ORC 的 stripe 中。
  • 其次还要熟悉 StarRocks 的 Pipeline 执行引擎,了解 StarRocks 的协程调度机制。项目要求支持异步写入 ORC,这是因为在 StarRocks 的 Pipeline 引擎里,执行 pipeline job 的用户态线程(协程)不负责磁盘/网络 I/O,而是把 I/O 任务放入全局的 I/O 线程池中,由专门的 I/O 线程去调度完成。

StarRocks:分享一下你在项目中的最大成就或突破,你对此感到最自豪的是什么?

孙印政:我最大的收获是成为开源项目的贡献者,能够在开源社区中留下一些属于自己的印记。




关于开源




StarRocks:可以分享一下你的开源经历吗?

孙印政:我第一次接触开源项目是在大一,注册 GitHub 账号后像是打开了新世界的大门。最初我只是一个相对默默无闻的“小透明”,主要往 GitHub 上上传一些课程作业。我经常怀着敬畏和好奇浏览一些 Star 数比较高的项目仓库,其中我也发现了一些特别有趣的开源项目,其中有一个叫“程序员在家做饭方法指南”,我还为这个项目提过 PR。

后来,随着我对数据库的深入接触和学习,我逐渐了解到许多优秀的开源数据库项目,包括传统的 TP 数据库(如MySQL、PostgreSQL)和“新势力” AP 系统,如 ClickHouse 和 StarRocks 等。

StarRocks:在你眼中,开源是什么样的?你认为开源精神的特质是什么?在参与开源项目的过程中,你是如何展现出这些特质的?

孙印政:我理解的开源就是合作共享,开源社区就是一群志同道合的人聚在一起朝同一个方向去努力。开发过程中,因为开源,不仅社区内的人一起协作,而且来自世界各地的人都可以参与其中。




关于孙印政与 StarRocks 社区




StarRocks:可以分享一下你是如何了解到 StarRocks 社区的?

孙印政:我第一次接触到 StarRocks 是在知乎上,偶然间发现了社区分享的技术博客。通过阅读这些博客,我深入了解了 OLAP 领域的一些前沿技术。后来,我在 B 站上观看了 StarRocks 的 Hacker Meetup,大佬们的技术分享真的让我受益匪浅,特别是关于列存实时更新、Pipeline 和向量化引擎等方面的内容,让我对这些技术方向有了更深刻的理解。

由此,我开始在 GitHub 上关注 StarRocks 的项目,经常查看新产品的特性,了解社区成员最近关注的新技术。我还尝试着解决一些“good first issue”,并向社区提交了 PR。这个过程不仅让我更深入地融入了 StarRocks 社区,也让我感受到了开源社区的活力和创新。

StarRocks:请介绍一下你眼中的 StarRocks 社区

孙印政:我觉得 StarRocks 社区的技术氛围很浓厚,记得我第一次提交 PR 时,因为对函数功能模块还不熟悉,提交的代码存在不少问题,给我 Code Review 的大佬非常详细的帮我分析问题,并且提出了一些宝贵建议,也让我充分感受到了社区的热情好客。

StarRocks:在整个开发过程中,你与导师以及社区其他成员的沟通交流的情况如何?从他们身上能学到什么?

孙印政:在参加 OSPP 项目的过程中,我的导师杨老师给予了我很多帮助,比如如何用 GDB 调试、单元/基准测试的流程等等,在工作之隙为我答疑解惑。在此,特别感谢我的导师!




未来展望




StarRocks:你认为参加开源社区对全日制在读计算机专业大学生有什么帮助吗?以及你自己未来的学习规划是什么呢?

孙印政开源社区提供了实际项目的机会,帮助学生将课堂学到的理论知识应用到实际工作中。参与开源项目可以使学生接触到新的技术、工具和编码实践,培养不断学习的习惯。

希望自己能够深耕技术,记得我刚进华师大时,院长在开会时就嘱咐我们要“hands-on”,意思是多动手,多 coding,希望自己能一直保持对技术的热爱,多多实践!

StarRocks:对于即将毕业的你,对自己未来的工作有什么展望吗?

孙印政:我希望未来能够继续从事 OLAP 内核相关的开发工作,能够和大佬们一起打造极速的 AP 系统。

StarRocks:未来是否继续参加 StarRocks 社区?以及你会不会把 StarRocks 社区推荐给你身边的其他同学?为什么?

孙印政:我会一直持续关注 StarRocks 社区,也希望社区能够多多分享,持续输出技术文章。会推荐,StarRocks 在技术上有很多值得学习和借鉴的地方,相信大家通过阅读源码能学到很多。

导师寄语

@Gavin Yang(杨关锁)
印政同学在整个项目的申请和实现过程中,都表现出对开源社区的热爱,以及自身在数据库方向的技术沉淀。对 StarRocks 代码的许多核心逻辑都有比较深刻的理解,因此在项目的完成过程中,能够独立解决遇到的许多问题。
希望在今后的学习和工作当中,能够不忘初心,继续用自己才能为开源社区增添色彩,也希望今后能够继续活跃在 StarRocks 社区,为 OLAP 数据库的发展贡献自己的力量。


关于 StarRocks 

Linux 基金会项目 StarRocks 是数据分析新范式的开创者、新标准的领导者。面世三年来,StarRocks 一直专注打造世界顶级的新一代极速全场景 MPP 数据库,帮助企业构建极速统一的湖仓分析新范式,是实现数字化转型和降本增效的关键基础设施。
StarRocks 持续突破既有框架,以技术创新全面驱动用户业务发展。当前全球超过 350 家市值 70 亿元以上的头部企业都在基于 StarRocks 构建新一代数据分析能力,包括腾讯、携程、平安银行、中原银行、中信建投、招商证券、大润发、百草味、顺丰、京东物流、TCL、OPPO 等,并与全球云计算领导者亚马逊云、阿里云、腾讯云等达成战略合作伙伴。
拥抱开源,StarRocks 全球开源社区飞速成长。目前,已有超过 320 位贡献者,社群用户过万人,吸引几十家国内外行业头部企业参与共建。项目在 GitHub 星数已超 7300 个,成为年度开源热力值增速第一的项目,市场渗透率跻身中国前十名。



金融:中信建投中原银行 | 申万宏源 | 平安银行 | 中欧财富


互联网:微信|小红书|网易邮箱|滴滴|美团餐饮SaaS | B站|携程 | 同程旅行|36058同城|芒果TV得物 |贝壳|汽车之家


游戏:腾讯游戏波克城市欢聚集团37手游 | 游族网络


新经济:蔚来汽车理想汽车顺丰京东物流跨越速运 | 大润发华润万家TCL |万物新生 | 百草味 | 多点 DMALL 酷开科技


StarRocks 技术内幕:极速湖仓神器:物化视图存算分离,兼顾降本与增效   |实时更新与极速查询如何兼得Query Cache,一招搞定高并发资源隔离大数据自动管理查询原理浅析

文章转载自StarRocks,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论