调研—-小米架构师:亿级大数据实时分析与工具选型

讲师介绍
欧阳辰,超过15年的软件开发和设计经验,目前就职于小米公司,负责小米广告平台的架构研发。

曾为微软公司工作10年,担任高级软件开发主管,领导团队参与微软搜索索引和搜索广告平台的研发工作。曾在甲骨文公司从事数据库和应用服务器的研发工作。热爱架构设计和高可用性系统,特别对于大规模互联 软件的开发,具有丰富的理论知识和实践经验。

大家好,很高兴能跟大家分享一些关于实时数据分析的话题。

刚毕业时我有幸去了Oracle公司做企业软件数据库,成为Oracle中国第一批研发员工。后来做了几年,觉得还是想做互联 软件,就去了微软,工作了十年左右。在那做两个项目,一个是搜索,一个是广告平台。去年一月份加入小米公司,现在主要负责搭建广告平台和大数据平台。

所以今天我会结合我在小米、微软的一些大数据实践,给大家谈谈我对大数据的理解,并介绍一些好用的工具。

本次演讲的内容大致分为以下部分:

大数据和价值

大数据分析工具分类

HBase的应用和改进

Druid的实时分析实践

其它工具的探索

一、大数据和价值

什么是大数据纷纭。大家似乎觉得具备快、多、变化大、种类多四个特征的数据就是大数据,我个人更愿意从另一个角度来定义:只有当你拥有全量的数据,并通过非常多的数据把问题解决得比较完美时,这时候的问题才是叫做大数据问题。

给大家举个例子:比如说计算中国的人口,我们可以通过每省、每市、每区的抽样、采样等方法来获取非常接近真实的数据,很快就能完成这个任务。但是这个通过采样解决人口统计问题的场景是否就是大数据问题呢大家举一个我自己在做的大数据问题——广告系统的推荐。由于每个人看的广告内容、类型都是不一样的,你需要对每个人去做算法,通过数据分析挖掘每个人的数据潜力。假设现在你想通过一些算法找到一些用户喜欢的广告或者内容,而这时你要找到的内容少了一半,你就没法推算出一半用户的数据,这时候你的效果也差了一半。也就是说你的数据量越多,覆盖越多用户,效果越好时,这时候我们可以认为它是一个真正的大数据问题。

大数据外表光鲜亮丽,就像红楼梦里的大观园,但里面其实是很无奈的。做大数据技术的同学都知道,这里面涉及到数据的清洗、整理、存储等很多很多枯燥的事情。此外,大数据还有一个特点,就是当你有了大数据,还得想如何去变现。在我看来,大数据实际上很难找到一个直接的途径来变现,它的确可以去推动业务的智能化,做内容推荐让用户的体验更好,但这些都是一些间接的变现场景,真正大数据能够变现的场景,我自己总结了一下,大概有两个方向:一个是广告,二是银行的征信系统,除了这两个领域之外,很少有公司愿意为数据买单。

下面简单介绍小米的大数据技术框架。

首先是精准营销,我们可以对每个用户做一些画像。用在搜索和推荐上,让它变得更加精准;还有互联 金融,有一些征信体系可以用到;精细化运营;还有防黄牛,因为小米手机的性价比较高,很多时候新品出来时黄牛们会去抢,另一方面,现在的黄牛手段越来越高明了,他们会模拟很多IP、新的账 或者老的账 等一些复杂的购买行为,所以就很需要采取一些手段去防黄牛。还有图片、图像的分析和处理,像小米手机新推出的宝宝相册等。

说到数据分析的步骤,最开始是数据收集,然后处理,清洗,建模,分析,最后可视化。这是大概的基本步骤。

从数据分析的类型来看,也可以分为四个层次:最下面是一个比较基础的层次,叫响应型分析,基本上是按照商业需求出商业 表。第二个层次叫诊断型分析,就是说当你有了很多数据以后,从数据里面挖掘出一些问题,或者通过数据去解释这些问题,像一些竞品分析、趋势分析。第三个层次叫战略分析,这个层次相对前面两个层次来说比较难了,即在做很多公司的分析时,你需要建个模型,然后用数据去得出一些结论,很多咨询公司就提供这种战略分析,像麦肯锡、贝恩等公司很多时候就是在这一层次做事情。最后一个层次也难,叫预测型分析。你不光要建好模,还要想到底怎么做,采用什么样的行动,给出真正的建议。

二、大数据分析工具

小米统计平台承接的数据量非常大,而且对实时的要求非常高,所以在工具的选取上也花了很多时间。下面给大家介绍一下小米在大数据实时处理时一些工具选型的思路。

在选数据分析工具的时候需要考虑很多事情,像一些很重要的数据量,还有就是你需要分析这些数据的维度有多少,你的用户并发度,这些都是实际过程中需要考虑的重要因素。特别是维度,维度越多,系统会越复杂。

刚刚前面讲到小米的统计工具,这里再放一张小米统计后台的架构图,我把它稍微简化了一下:

小米用HBase还是蛮多的,HBase是一个比较有名的列式存储,我们公司也有三个HBase Committer,对HBase做了很多改进。比如对源代码的改进,改完以后我们又会把这些改进返回到开源 区。再如名字服务,以前的话,HBase访问要填很多Server名、端口名,现在用一个名字就可以访问,包括HBase是不支持二级索引的,我们往里面增加了索引功能。

四、Druid的实时分析实践

一开始做小米统计平台时,数据其实也没有做到实时的,都是走上面的一条路,第二个阶段通过MapReduce处理以后,把数据放到关系型数据里面,比如像MySQL这样的数据库。再后来,业务慢慢扩展,RDBMS的容量有限,出现很多问题,所以到第三个阶段我们把RDBMS变成HBase,这个阶段也持续了很久,再后来我们想得到实时的数据,来到第四步,通过Kafka、Storm再到RDBMS或者NoSQL,最后一步我们直接是把数据从Kafka转到Druid。

Druid在小米内部除了应用于小米统计之外,还应用于广告系统。小米的广告系统主要是对每个广告的请求、点击、展现做一些分析,一条线是通过Kafka→Druid→数据可视化显示,另外一条路就是完整数据落盘到HDFS,每天晚上通过数据重放去纠正Druid里的一些数据,覆盖Druid的准确数据,最后做可视化。

五、其它工具的探索

Pinot

Kylin是eBay的开源分析工具,它的优点就是很快,特别适合每天定时 表,缺点也很明显,就是随机查询很慢。它还有一个好处就是支持标准的SQL,与Tableau等BI工具集成,可以直接连到eBay的这个Kylin工具。而且,Kylin在Fast Cubing上做了一些预处理,反应较快。

KUDU

KUDU,走在这两个极端的中间,它既能够保证大吞吐,又可以保证低延时。小米从去年十月份开始使用KUDU,主要用于一些服务质量监控、问题排查,总体感觉还不错。小米也是KUDU现在最大的一个用户,因为我们很多时候需要考虑HBase和Druid综合的一些优点,所以KUDU也是小米目前实验的一个工具。

ElasticSearch

在欧洲,很多公司内部会把数据分成很严格的等级,像个人信息,所有可以关联到个人的信息都是存在一个独立的库,任何人都没有权限去访问。还有一些普通信息,大家是可以用的,还有比如说超过一万人的一些聚合信息,可以拿去做一些算法。但个人信息是坚决不可以访问的。而在2006年4月14日,欧洲当时还推出了一个非常酷的隐私权保护条例,它定义了每个公司要设立首席数据官,来保护数据隐私,并且要求每个公司数据都是可迁移的,也就是说,你的公司虽然拥有数据,但数据有权利把属于他的个人信息从一个服务商转移到另外一个服务商。

分享的最后,总结一下我做数据分析多年来的心得:

1、没有业务应用的大数据都是耍流氓,不要纯粹去找工具,一定要结合业务去选择。

2、技术选型没有想象中那么重要,实用和精通为妙。

3、维度不够是一个永远的痛,无尽的伤。在数据分析的过程中,维度是不断增加的。所以在未来选择工具的同时,一定要考虑维度的增加。

4、像保护你的眼睛一样去保护用户的权利和隐私。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年1月16日
下一篇 2018年1月16日

相关推荐