教年轻 AIoT 创业者如何从 0 到 1 实现AIoT 创业项目 了解详情
写点什么

Hadoop Committer 如何炼成?爱奇艺新晋核心贡献人给出了这份攻略!

  • 2021-06-21
  • 本文字数:2625 字

    阅读完需:约 9 分钟

Hadoop Committer如何炼成?爱奇艺新晋核心贡献人给出了这份攻略!

近日,全球最大的开源基金会 Apache 基金会的大数据开源社区 Hadoop 公布了最新一批 Committer(核心贡献人),爱奇艺大数据团队的朱琦同学接受 Apache 社区邀请,正式成为了 Hadoop Committer 的一员。


朱琦从 2018 年开始为 Apache 社区贡献,被 merge(合并)过超万行代码,这也是爱奇艺首位 Hadoop Committer


来自 Apache 的邀请邮件


成为一名 Hadoop Committer 需要哪些品质?又有哪些责任?如何在开源工作和日常工作中寻找平衡?就这些问题,我们和朱琦聊了聊,深入了解了在爱奇艺,一名年轻的 Hadoop Committer 如何炼成。

Apache Hadoop Committer 如何选出?

对于不太熟悉的同学,我们可能需要先解决几个问题。什么是 Apache Hadoop?Committer 又是怎样被选出来的?


了解大数据领域的读者对 Apache Hadoop 肯定不会陌生,这款开源软件的分布式应用程序根据谷歌公司发表的 MapReduce 和 Google 论文自行实现而成,目前已经是全球最受欢迎的的大数据开源软件框架之一。

Apache 每个项目会安排相关委员会(PMC)和若干 Committer。选举方式和组织结构都比较明确。Committer 的主要责任是维护项目持续发展,比如项目新功能的开发,提出新的功能作为发展趋势,除了可以直接提交代码,还可以一票否决任何一个 Patch。


Hadoop 作为全球最“数据中心的操作系统”,对代码质量要求比较高。因此要成为一名 Apache Hadoop Committer,你首先必须要对社区已有开源代码和结构设计有深刻理解。因为 Hadoop 涉及到不少分布式计算里相对复杂的概念,完全理解现有设计和代码已经是一件很不容易的事情了。


此外,成为 Committer 还要在至少一个大的 feature 方向上是主力贡献人,这一点主要是通过被项目合并的代码数量体现,也就是说,对 merged 代码数量上有一定硬性规定。


Hadoop 作为大数据底层的支撑项目,一般改代码量不会很多,这就意味着,贡献者不仅要有过硬的代码技能和专业知识,还得真实解决过社区的项目问题,才能被 PMC 提名,获得入选机会。朱琦告诉我们,他在当选 Committer 之前,目前已经有超过万行代码被社区合并。


目前,全球共有 230 多位 Hadoop Committer,其中来自中国的 Committer 有十余名

从非计算机专业,到 Hadoop Committer

虽然还很年轻,但朱琦在开源社区的工作经验已经非常扎实了。朱琦本科主修化学材料,因为选修了一门程序语言设计课程对软件行业产生了浓厚的兴趣,于是在研究生阶段直接转到了计算机相关专业。虽然专业不是大数据方向,但他一直对大数据特别是 Hadoop 非常感兴趣。


工作后朱琦开始接触 Hadoop 项目,加入爱奇艺后在智能平台部门承担与大数据相关的工作,也因为工作原因,对一些大项目的底层源码研究很多,日积月累积累了看代码的能力。


图 2:朱琦生活照


(代码)的输入非常重要,要输出必须要有输入。作为开源社区贡献者的前提是有输入,得理解了原先代码的逻辑,才能输入开发改造新的模块,才能有积累。”朱琦表示,“接触开源社区最开始是作为 Contributor 做一些贡献,从发现小问题、流程化的东西开始研究。慢慢把流程搞懂之后,就可以开始深入代码了。”


在积极参与开源社区的过程中,朱琦自己也收获了很多。从作为一个参与者可以了解一个顶级项目的发展触类旁通,到现在成为 Committer,为社区的其他成员和社区发展解决了不少问题,也研究了很多代码。“现在去其他项目也比较能了解代码逻辑,也可以为公司各个大数据项目做贡献。



在公司中,朱琦也发现,越来越多的同学开始参与到了开源项目中,一起深入了解各个项目。“这一方面也能反馈给公司底层部门,比如大数据相关内容,维护能力就变强了,另一方面可以提升成本优化和性能优化,减少公司实在支出,提升用户体验,更有利于平台推广。”

爱奇艺持续建设开源文化,回馈社区

这些年,爱奇艺一直非常重视开源文化的发展,成立了开源工作组,发布了规范的开源项目流程,致力于建立规范、有序、安全的开源体系架构,鼓励项目内部、外部开源,增强技术交流,提高研发效率。


爱奇艺自己的一些业务实践探索,也会积极回馈到开源社区中,解决了不少开源社区中的项目问题。以朱琦所在的大数据团队为例,爱奇艺大数据架构和开源社区始终保持同步良性发展。


“比如爱奇艺最近紧跟社区对 Hadoop 相关的架构进行升级,针对新的 hadoop 项目去做测试,这个过程中就会出现一些问题,爱奇艺自己出现的问题就会回馈社区,一方面可以回馈社区,另一方面也解决了社区问题。”


基于 Hadoop 的开源内容,爱奇艺自己的业务改进已经有不少合入了社区,已经 Merge 了 Hadoop 相关的部分包括:CS 调度器统一 FS 的兼容性,全局调度优化,GPU 资源相关的优化,大规模集群事件驱动的优化,弹性伸缩队列,Proxy server 优化,Router Based Federation 问题修复和优化,等功能。


和朱琦一样,爱奇艺中不少员工也都是开源社区的积极参与者。他们在开源社区中贡献代码、解答其他社区参与者遇到的问题,维持社区的正常、有序运转。


朱琦对此深有感触,“Apache 发展十几年,就是因为有不同的用户和开发者,良性维护生态,共同交流互动。大家一方面在这里交流经验,解决自己遇到的问题,另一方面也可以从别的公司或者开发者提出的相关问题中吸收经验,防范于未然。”

从入门到终极,开源进阶攻略!

亲历了开源文化近些年在国内的发展,朱琦也颇为感慨。


“之前开源其实没有这么火热,大家对开源的理解就是借来用,不太愿意贡献和参与其中,但也存在不少问题。很多公司没有使用开源项目,是闭源的,相关研发人员离职,代码就有很多历史包袱。现在开源已经是一个大趋势,对公司来说,现在国内外各个互联网公司,特别是爱奇艺内部工程师文化建设中,都越来越重视开源文化了,通过开源,不仅公司的项目也会越来越好,贡献者本身也可以从中获得很多。


最后,朱琦也对想要入门开源文化的同学,给出了一些从入门、进阶到终极的建议。

入门

熟悉开源项目的贡献流程,各个项目都会有 how to contribute 的文档。


小的问题着手开始贡献,例如代码中的拼写错误,项目文档的改进,小的 bug 的修复。

进阶

能够对项目在生产环境产生的问题,或者社区用户遇到的问题进行修复,性能优化等。

终极

对于项目的重大 feature 的设计文档进行理解,甚至参与设计文档,然后根据项目架构进行添加子任务进行开发贡献。


“总体来说,开源社区贡献是一件需要持续花费时间和精力的事情。从吃透一个模块开始,逐渐深入,多贡献,也多参与问题讨论和 review 代码,祝大家都能在开源社区走得更远更好。”


本文转载自:爱奇艺技术产品团队(ID:iQIYI-TP)

原文链接:Hadoop Committer如何炼成?爱奇艺新晋核心贡献人给出了这份攻略!

活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2021-06-21 13:001273

评论

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

大数据ELK(二十五):添加Elasticsearch数据源

Lansonli

elasticsearch 10月月更

一个实际的例子学习 SAP BTP Java 应用的 @Before 注解使用方式

Jerry Wang

Java 云原生 Cloud SAP 10月月更

【LeetCode】两个链表的第一个重合节点Java题解

Albert

算法 LeetCode 10月月更

测试需求平台5-Blueprint优化与首个vue页搭建

MegaQi

测试平台开发教程 10月月更

Clickhouse:delete提交成功,数据还在

Ken

Clickhouse

「CSS畅想」周期性事情怕忘,来看看一个月内都安排在哪天

叶一一

CSS JavaScript 前端 10月月更

Java三大特性(一)—封装

共饮一杯无

Java 面向对象 10月月更

B类纯资金业务的资金安全保障

agnostic

资金安全 B类业务 纯资金业务

Python进阶(二十三)Django使用pymysql连接MySQL数据库做增删改查

No Silver Bullet

Python django MySQL数据库 pymysql 10月月更

cstdio的源码学习分析10-格式化输入输出函数fprintf---宏定义/辅助函数分析03

桑榆

源码刨析 10月月更 C++

如何在高性能的前提下,降低数据库存储成本?

OceanBase 数据库

PriorityQueue源码解析(一)

知识浅谈

Priority Queue 10月月更

「趣学前端」给不懂技术的朋友简单演示,代码是怎么被编写出来的

叶一一

JavaScript 前端 10月月更

Java基础(六)| Debug模式及基础练习

timerring

Java debug 10月月更

什么是数据产品经理?数据产品经理与传统产品经理有什么区别?

雨果

数据产品经理

首轮Zepoch节点已售罄完结,你期待次轮吗?

威廉META

「趣学前端」日常浏览的页面为什么可以五颜六色

叶一一

CSS 前端 10月月更

趣学前端」为什么有的页面背景颜色是渐变的

叶一一

CSS 前端 10月月更

【一Go到底】第十五天---continue快速入门

指剑

Go golang 10月月更

「趣学前端」日常浏览的页面是怎么实现出来的

叶一一

JavaScript 前端 10月月更

Python进阶(二十二)Python3使用PyMysql连接mysql数据库

No Silver Bullet

Python3 MySQL数据库 pymysql 10月月更

有人意图取代SQL,你同意吗?

雨果

sql

【从0到1学算法】5.Bubble Sort算法-下

Geek_65222d

10月月更

大数据ELK(二十六):探索数据(Discovery)

Lansonli

discovery 10月月更

面试官:说说你对Node中的Stream的理解

CoderBin

面试 前端 Node 10月月更

Go-Excelize API源码阅读(二十一)——GetDefinedName()、DeleteDefinedName()

Regan Yue

Go 源码阅读 源码刨析 10月月更

Go-Excelize API源码阅读(二十二)——SetAppProps(appProperties *AppProperties)

Regan Yue

Go 开源 源码分析 Excelize 10月月更

正在消失的机器视觉公司

脑极体

挑战30天学完 Python:Day4数据类型-字符串str

MegaQi

挑战30天学完Python 10月月更

首轮Zepoch节点已售罄完结,你期待次轮吗?

鳄鱼视界

华为云从入门到实战 | 负载均衡服务原理

TiAmo

华为 云开发 10月月更

  • 扫码添加小助手
    领取最新资料包
Hadoop Committer如何炼成?爱奇艺新晋核心贡献人给出了这份攻略!_开源_爱奇艺技术产品团队_InfoQ精选文章