从日志统计到大数据分析(四)——盘古开天地三

从日志统计到大数据分析(四)——盘古开天地三

作者:桑文锋,Sensors Data的创始人&CEO,前百度大数据部技术经理


上一篇:

从日志统计到大数据分析(三)——盘古开天地二 - 瓦利哥的机器岁月 - 知乎专栏zhuanlan.zhihu.com图标


平台在2009年4月正式发布后,各个团队的需求铺天盖地而来,日志源的中转上传很快就成了瓶颈。都是所有的日志源完成上传后,才开始统计计算,这样上传期间的几个小时时间就白白浪费掉了。我们首先将日志上传改成每份完成后单独打就绪标记。后来有次和Hadoop团队的同学沟通,我就提起能不能每个Mapper作为一个日志抓取的任务,这样可以让100多台机器同时抓数据,他们说没问题,已经有团队这么干。于是我们很快上线了新版本,实现分布式的抓取。架构改成了这样:



(图1 分布式抓取架构)


这时候的产品,已经是一个比较完整的产品了,我开始在公司范围内推广。本来公司里有十几个类似我们的统计团队,我就是要说服他们把任务迁移到我们平台。记得很深刻的一次是和网页搜索部的统计团队沟通,他们看了演示之后很震惊,说本来他们只是在设想这种系统的可能性,没想到你们已经做出来了。当时我们又入职了一位同学专门负责响应需求,有一天,业务部门的同学反馈说不能加他好友了(我们用的是百度自己的聊天软件Baidu Hi),我们就找Hi团队的同事咨询,他们说这位同学到了好友上限2000人,之前还没遇到过这种情况。他们的解决方案是修改人数配置,重启整个Baidu Hi服务。


在整个推广的过程中,我就像拿着一款先进设备,去拯救那些水深火热的人们。我们一边推广,一边完善整个平台。


从最开始平台是为统计而生,但我渐渐的发现,统计只是一类需求,其他Hadoop任务,也可以通过我们这个平台管理起来。我就想将Log平台发展为Hadoop的壳,所有提交给Hadoop的任务,都能通过Log平台管理起来。Log平台演化成一个通用计算平台。


我前面提到通过三类常见统计的抽象,来解决80%的问题。但当这80%需求解决之后,你会发现又有新的80%的需求冒出来。如果让用户直接写MapReduce任务提交,这个代价太大了。平台开始上线时,提交任务就支持两种模式。一种是简单编辑,就是前面的三类抽象(后来加了更多的类别)。一种就是复杂编辑,直接贴MapReduce代码。对于后者,如果能抽象一个更好用的计算框架,将MapReduce隐藏起来,显然就又可以提升开发效率了。


我就安排一个工程师(目前是我的合伙人之一)出一个方案,只用了一周时间,就设计出来原型了。下面是个例子(我们叫它DQuery):



(图2 DQuery代码样例)


对于一个输入,我们可以去选择某些字段,进行分组,每组在计数,然后输出到一个文件。这样就实现了一个统计任务。这种链式的处理方式,在现代已经很普遍了,特别是Spark里都是采用的类似表示方法。我们在2009底做了这个事情,在2011年公司号召多提交专利时,提交了发明专利。我前段时间查了一下专利的进程,已经进入了终审期。这种将数据流式的进行变换的思想,已经见诸于各大分布式计算系统,尤其在Spark上更是如出一辙。如果专利最终通过了,在国内使用Spark的地方,其实都在和我们的专利相冲突。当然,专利是百度的,只有百度有权利申诉。总之你最早去创造一些东西,是一件很有成就感的事。

在给出DQuery原型后,我觉得团队太弱小了,只能有一个全职参与这件事。于是找基础库团队的同学寻求支持。他们最开始提出何不实现一个Google Sawzall,但我觉得太底层了。最终说服对方安排一位工程师参与进来。结果就是他们两个人花了2个半月,就把这个语言开发出来了。

可能你会问为什么当时不选择使用Hive?事实上,那个时候Hive的工程师也来公司交流和推广了。但有两个需求不好满足:
(1)任务合并:对于同一个数据源,可能有几百个统计任务。这种统计任务可能都很简单,但是都要将数据源读取一遍,也就是一个高IO低CPU的任务。我们当时想直接读取一遍,然后将多个任务同时计算,这样效率会高很多。这在Hive上是不支持的。
(2)用户行为分析:我当时比较乐观,觉得我一年解决统计问题,第二年解决分析问题,第三年解决挖掘问题。事实上到现在分析问题也没解决彻底。我们知道Hive是基于SQL的,而SQL是上下文无关的。也就是说你取出的一批数据,有前后关系的话,是很难操作的。我需要在语言上支持。而在DQuery语言中,我们设计了一个方法叫process,可以嵌入用户的逻辑,非常灵活。这里要说的是DQuery是一个基于PHP语言的框架,这样DQuery表达不了的,都可以写原始PHP代码。

就这样到2010年底的时候,实现了全公司日志统计全部统一到Log平台。这是我在百度八年,干的最有成就感的一件事情。

下一篇:

从日志统计到大数据分析(五)——战国的混乱 - 瓦利哥的机器岁月 - 知乎专栏zhuanlan.zhihu.com图标

编辑于 2018-06-21

文章被以下专栏收录