标题 | 小米对开源的实践应用和思考 |
范文 | 张铎 2012年,基于互联网业务的快速发展,以及针对公司内部大量数据的统计和分析需求,小米决定组建云平台团队(现更名为人工智能与云平台部)来负责大数据存储和计算。其实在一开始,使用开源项目并不是唯一的选择。 当时的团队成员大多来自微软、腾讯等公司,而之前这些公司类似的系统都属于自研,并没有使用开源项目的习惯。同时团队成员大部分都是C++背景,而当时最流行的开源系统Hadoop是用Java实现的,所以从基础看并没有太多优势。 然而,时任小米首席架构师的崔宝秋根据自身在开源领域多年的经验,认定拥抱开源是小米的最佳选择。在他的建议下,团队还是选择了拥抱开源,使用Hadoop和HBase作为基础来为公司内其他业务提供存储和计算服务。 使用开源系统的好处是可以快速地搭建出一套可以使用的服务系统,这在初期是一个非常大的优势。一个完美的存在于设计文档上的系统,一定不如一个并不完美但马上就可以用的系统。不过Hadoop系列的开源系统也有一些问题,比如:部署繁琐,可配置项过多且文档不齐全(一旦上量肯定会出问题),监控不完善等等。因此团队一开始是集中精力开发了一套监控部署系统,在此基础上又做了比较完善的测试,逐步总结出一套适合小米的软硬件搭配模式和各种配置,最后开始逐步深入开源代码本身进行bug 修复,甚至功能定制。后续随着业务方各种各样的需求,团队也在扩展自己的项目范围,引入更多的开源项目来更好地为业务方服务。 到今天为止,开源在小米的应用几乎无处不在,从作为存储的HDFS和HBase,到计算相关的Yarn、Spark、Hive和Kylin,还有Docker和Kubernetes等,可以说小米整个人工智能与云平台部门都建立在一套开源的技术栈上。目前,在小米的HDFS上存储着超过40PB的数据,HBase上存储着超过6万亿行的记录,MR&Spark;每天处理超过4.5万5个任务。 开源对于小米的意义 从整个行业来看,开源减少了各个公司的重复劳动,也减少了从业人员的学习成本,无疑显著地提高了整个行业的生产力。对于小米,就像之前提到的,选择开源可以在初期团队人员很少的情况下迅速搭建出一套可用的系统,既不拖累业务,又可以腾出更多的精力来聚焦业务本身的发展。时至今日,小米已经是一个接近两万人的大企业,而人工智能与云平台全职投入在云技术上的研发工程师不过100人左右,没有开源的帮助这几乎是不可想象的。 在互联网行业,大家一定都遇到过陈旧的基础系统无人维护的问题。团队人员,特别是核心开发人员的变动,很容易导致一个项目进入无人维护,但又无法下线的状态,因为很多情况下开发人员并不愿意接手一个别人的系统,而更愿意开发自己的系统。使用开源系统可以一定程度上避免这个问题。以小米人工智能与云平台为例,在扩展项目范围时,原有团队的不少人员都变动了工作内容,但后备力量补充没有遇到任何问题,任何一个开源项目都没有遇到无人愿意接手的问题。比如HBase项目组,目前的研发人员全部是2014年之后入职的,最早的开发人员早已升职或者调动到了其他项目,但HBase项目的发展完全没有受到影响。 参与开源对于小米人工智能与云平台的技术人员来说还有另一个非常重要的意义。人工智能与云平台的很多项目跟公司业务的距离比较远,所做的工作并不能直接对公司的流量和收入等产生正面的影响,反而做不好的情况下会有负面影响。所谓好事不出门,坏事传千里。这就导致在公司的评价体系内,不论是影响力还是认可程度上,做这些项目的同事相比其他业务同事都要差一些,做出成果的成就感也偏低。而参与开源可以提升自己在整个业界的影响力,这样再反过来增强自己在公司内的影响力。做出的成果能够得到更多的人认可,也有助于提高技术人员的成就感。 小米在使用开源系统的同时,也积极地回馈开源社区。在开源上参与最深的HBase项目,目前已经向开源社区提交了超过700项改进,有bug修复,也有新功能。其余的Hadoop、Spark等项目也有一定数量的改进回馈到了开源社区。同时,小米也在积极地开源自研项目。例如2017年10月开源的Pegasus系统是一个高性能低延迟的KeyValue系统,可以弥补HBase在低延迟方面的一些不足。另外,小米的AI团队也会把自己的一些重要工作进行开源,例如MACE(内部暂定名称)系统,全称MiAI Compute Engine,是专门为移动端优化的神经网络推理引擎,支持CPU、GPU和Hexagon DSP,即将在2018年第二季度内开源。 大公司为何要选择开源自己的系统 尽管开源对于整个行业的意义非常大,但对于公司本身来说,提高技术影响力这一因素并非是让几乎所有的大公司都开始倒向开源的唯一原因。 大家可以看到,像微软这种从软件时代发展过来的巨头企业,也开始对自己的系统进行开源,例如Visual Studio就已经在2015年开源。 业界普遍认为一流公司做标准。而开源,其实就是在定标准,是对话语权的争夺。一旦一个开源系统的生态建立起来,后来者想另起炉灶的难度会非常大。比如HBase項目,其实是基于Google在2006年发表的一篇关于Bigtable的论文开发出来的,但Google在推出自己的云Bigtable服务时,反而不得不提供一个兼容HBase的API,因为大量客户的程序都是基于HBase,他只能选择兼容,这就是生态的力量。 单纯的使用开源系统其实也是有一定风险的,特别是在这个开源系统和公司的核心利益相关的情况下。比如Amazon在AWS上除了支持TensorFlow之外,还一定要强推MXnet来对抗TensorFlow。因为在云上提供深度学习服务时,TensorFlow可以针对Google自家的TPU 进行优化,这一点上Amazon是无法和Google竞争的,如果两家都只使用TensorFlow,Amazon 一定不是Google的对手。 回到小米自身的情况,小米在回馈开源社区的同时,也在逐步增强自己在开源社区的影响力和话语权。 在HBase项目上,小米先后培养出了2位PMC(Project Management Committee)成员,7位committer(包括前面两位PMC成员),在社区已经拥有了一定的话语权。 同时国内的其他公司,比如阿里也培养出了多位HBase的PMC成员和committer,也有了国内公司承办的 HBaseCon Asia,可以说国内公司在HBase这个项目上已经有了相当大的话语权。 |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。