如何应对大数据应用在存储和展示方面的挑战

个人简介 黄洋成, 曾任BEA 电信技术中心首席架构师,负责WebLogic/Tuxedo等中间件产品的核心研发以及支持工作,Oracle(大中华区) 解决方案部首席架构师,负责战略项目(中国银联支付系统、中国移动梦网等)的架构以及实施工作。 现任北京腾云天下有限公司(专注于移动分析和数据挖据平台)首席架构师, Hive-Mongo DB project (https://github.com/yc-huang/Hive-mongo)的发起人和作者。

QCon是由InfoQ主办的全球顶级技术盛会,每年在伦敦、北京、东京、纽约、圣保罗、杭州、旧金山召开。自2007年3月份首次举办以来,已经有包括传统制造、金融、电信、互联网、航空航天等领域的近万名架构师、项目经理、团队领导者和高级开发人员参加过QCon大会。

   

1. 欢迎洋成来到QCon的采访间,首先请您先介绍一下您在TalkingData作为架构师主要负责些什么吧?

黄洋成:我在我们公司主要是负责的内容是两块,一块是公司的所有产品的技术选择以及技术架构的设计这一块;另外一块,就是对于一些新的技术以及方向的一些探索。

   

2. 能简单说一下你们公司的业务吗?

黄洋成:TalkingData的话,主要是关注为移动开发者提供一些数据的支撑服务;我们提供的主要产品的话目前有四个,其中一个是一个通用的一个数据统计、分析的一个平台,它是以SaaS服务的形式提供的,是一个免费的服务;另外一块,就是我们专门针对游戏这个行业有一个垂直的版本,专门针对游戏开发者,主打做游戏的运营分析的一个SaaS的平台;然后还有一块是我们称为TalkingData Campaign,这一块主要是用于应用开发者在推广他的应用的时候,如何去监测他的推广效果,提供数据支撑的一个产品;最后一块我们叫TalkingData Insight,这块主要是咨询服务的形式提供的,目前我们主要会帮助其他的一些合作伙伴,去提供一些包括像推荐服务,以及一些像游戏里边的经济系统设计之类的一些咨询服务。

   

3. 那么其实根据你分享中所介绍的,就移动数据的处理流程一共有五个步骤,就是收集然后清洗、处理、存储然后展示。您目前感觉这五个方面哪个方面做的比较成熟?然后哪些需要比较大的改进?

黄洋成:反正成熟应该还谈不上,我们毕竟还只做了两年的时间。但就我们以前主要相对关注比较多的话,应该还是在靠前边这三步,就说在数据的收集以及清洗还有处理这一块。就目前的话,正在加强的是在后边这两方面,就是存储和展示这一块。

   

4. 能简单介绍一下这个步骤用的什么技术吗?

黄洋成:其实技术这一块的话我们也是在不停的演变,就我们以前采用的技术跟现在的来说,就有很多根本不一样的地方。从前面收集这一块的话,相对来说可能会变化会比较小。但就从清洗跟处理这一块的话,我们以前主要是基于像Hadoop上的Hive来进行这种批量处理。但现在的话,就是在我们最新的这个系统里边,基本上就说把以前的这种批量的模式逐渐变成了一种微批量、一种小批量的模式,就是相当于我们用了自己重新开发的一套计算的体系。这一块的话跟以前的主要区别在于,还是批量的,但这个批量它是以分钟级来记的,就是说,可以看作是一个准实时的一个系统。说它是准实时,就是说因为它这种latency基本上是在分钟级别的,所以它基本上能满足大家对于普通的这种对实时的一种要求。同时它又是一种批量的处理的系统。批量的话就意味着相对来说,从计算的复杂度,以及计算代价上,会要比那种真正的流式的实时处理会要小一些。也就是我们试图在实时性跟处理的效率上找一种平衡。

   

5. 那它其实相应的也是会对存储造成压力?

黄洋成:对,相对我们目前来说,存储就还是基于Hadoop的HDFS。但只不过我们目前的话把计算从Hadoop的Map Reduce上在逐渐往外挪。从展示这一块的话来说,我们以前从用户可定制化这一块来说的话不是特别好。就我们目前正在这块的努力,主要是在于让用户可以更灵活的去定制他想看到的东西是什么样的,他想要怎么看这个数据。从我们内部的话,就是一个用户自定义的一种报表的这种概念。这是我们目前在展示这一块主要在努力的方向。

   

6. 其实对数据分析人员来说信息量越大的情况,它噪音其实是越大的,就是不太容易识别那些是真正的信号。那比如对于广告主来说,然后它投放一个广告,他的效果究竟怎么样,你们是怎么去给他做这个评估的?

黄洋成:这一块的话,因为我们主要是做移动互联网行业的,所以对互联网广告来说相对我们某种意义上是外行,所以我主要谈谈在移动互联网这一块,我们所做的一些工作。从移动互联网来说,它跟以前互联网不一样,不太一样的地方在于就说,移动互联网目前最主要的广告,还是那种直接效果广告,也就是说大家目前最主要在移动上投广告的目的,是为了推广自己的移动应用,也就是希望通过投广告来带来自己移动应用的安装和注册,以及的后续的可能会带来自己的业务,比如电商有购买,像游戏有注册、付费,这些业务的增长。从这一块,确实从广告主的需求和目前这些主流的广告网络能提供能力来说,确实它们中间是有一些鸿沟,一些Gap的,主要表现在于,目前的主要的计费形式从广告网络那边的话,可能大家能做到得是像CPC,也就是按点击付费,有少数可能会做到按安装付费,按下载付费。实际上他,就是说基本上广告网络那边的话,他没办法知道,比如说用户点了这个广告以后,最终他有没有真的安装这个广告所推广的这个应用。他也没办法,去知道比如这个用户装了应用以后,有没有真的去注册帐号,或者去购买产品。因为这超出了广告网络他的能力范围之内,所以他提供不了这种,就说比如按CPI,或者CPA,或者CPS这种结算的广告。但从广告主的话,其实他根本的需求,他并不是需要用户去点广告。他真正的需求是需要用户去安装它的应用,去使用它的服务,甚至为使用它的服务付费。所以这一块,刚才提到了我们TalkingData Campaign这个产品,其实就是为了帮助来弥补这个鸿沟的。这块我们会跟主流的广告网络都有合作,然后目前也有国内的一线的大的厂商,包括像金山,包括百度,他们都在使用我们这个服务。我们这个服务的话是帮助他可以来衡量,就说他在不同的这些广告网络、推广渠道上,最终他这个广告真正的投放效果。也就说比如他在广告网络上比如用户点击了以后,他最后是不是真的变成了它的一个安装激活用户。我们TalkingData Campaign这个产品就是来帮他做这种匹配。而且在广告主授权的情况下,我们因为跟广告网络有合作,实际上广告主说是可以授权我们把这个信息,激活信息回传给广告网络,这样的话就是在广告主跟广告网络结算上,实际上会带来很大的一个方便。因为目前的话,就是说虽然广告网络,他能力只能提供到CPC。但其实从广告主的话,他真正需要的是CPI。而且从势力上的话,肯定是广告主有钱,广告主是强势的,所以真正最后结算的话,肯定就是还是按广告主提供的数据说,你到底真的给我带来多少激活,来给广告网络结钱。像以前的话他们都需要广告网络把它所有点击过他这个广告主的广告的一些信息,比如设备的ID传给广告主,广告主然后自己去做一种匹配,然后告诉广告网络说,你这一天的点击里最后真正给我激活,比如说是五百个。但实际上这两边就带来一个问题,就说他这个过程很不透明,实际上,广告网络他可能会作弊,广告主也可能会扣量,因为他没有一个公平的一个平台。实际上我们TalkingData Campaign主要提供的,既是提供了这个服务,其实也是构建了一个相对于透明的一个平台,大家都公平的在上面来玩就可以。实际上最后对于大家来说,总体成本是最低的。

   

7. 就是说你们是从广告平台那里获取?

黄洋成:相当我们作为一个第三方,一个独立的第三方,一个中立的第三方。相当于我们既不偏广告主,也不偏广告网络。但是我们只是提供一个数据的服务,实际上提供一种数据匹配的服务。

   

8. 通过其他的服务再获取这种安装数据?

黄洋成:相当于广告网络会把它的点击的信息会传给我们,然后广告主的话,他会把他的安装信息传给我们。但是最后传的形式不一定是他主动传,一种可能比如合作的形式从后台传;另外一种的话像比如,像我们也提供SDK给广告主,这样的话SDK可以自动去收集这些信息。

InfoQ:然后双方做一个匹配?

黄洋成:对。

   

9. 好的,那么你还提到数据展示方面的难点,就是您提到有三个部分,就是有这个一个是安全问题,然后是页面比较复杂的问题,然后就是性能也是有问题。那么它是否指的是说有很多的数据,然后要以这种简单的方式呈现,还要提供一个比较直观的UI、UX,这方面比较困难,现在有没有好的样本可以借鉴?

黄洋成:这块的话其实首先是安全了,因为实际上数据对一个公司来说其实是很重要的,所以就说数据首先它在公司里边肯定还是需要保密的,不是说谁都能看,所以当然说安全那一块很重要。从复杂这一块的话,其实说一块是像我们通常就说很多的用户发现他们有一种需求,特别像他们的像日报、周报、月报这种需求的话,他们会在同一个页面,一个报表页面里边的,它几乎会展示他几乎所有的数据。但这首先带来了一个问题就说,这一个报表上的数据太多了,当然首先的话就是说你怎么从后台去取,怎么能够快速高效提供这个数据,这肯定就是一个问题;另外一个问题就在于这些数据怎么来把它有机的组织起来,然后让用户能够方便的来看,来能看的懂。我想看什么的时候,我一眼能找的到。但这一块的话,一方面就是从产品设计上,从交互上怎么能让他更方便;另外一方面就说可能用户的需求也是多种多样的,其实最好的方式就是,每个用户可能他看的时候,就有他自己的一个看报表的思路,或者说组织报表的思路。但这个思路可能每家都会不太一样,所以最好的方式,是比如我们提供一个工具,他可以按照他自己的思路去组织它的报表。

   

10. 所谓组织报表的意思是说在比较数据上面?

黄洋成:对,就是比如你,比如说第一你想展示什么数据,你是以什么形式展示。比如你说是想,比如第一排比如你觉得很重要,希望放一些最重要的数据,可能你希望以那种Dashboard类的比如很大的数字,你也能很清晰的看到这种方式来展示。还是说比如我是希望有些图表的线图,或者柱图、饼图的形式来展示,这个展示什么,比如接下来展示什么,这块可能每一家可能都有,他的传统一些思路。但这个确实每一家可能还是有一些区别。就我们目前正在试图做的,刚刚说的自定义报表,其实一方面就是满足这种需求,也就是说我用户可以根据自己的思路,就是最后来组织这个报表。比如这一块的话我想添加一块我想放的东西。比如那一块我觉得对我不重要我把它挪掉。你要另外的话就是说,就说从,因为我们更多的话还是关注于就是用户能够深度去分析它的数据。从这一块的话,就说就涉及到复杂的另外一方面,也就是说你怎么能够最合适的选出用户想看的数据,也以最合适的形式展现出来。前面就选出他想看的数据的话,实际也就说,我们需要能够有一种能力让用户以任何的一个角度、一个视角、一个维度来看一种数据。而且他可以比如就是说看了这个数据,看了某一个数据的情况下,比如它还有能力,比如我可以再把它再切分开来,按另外某个维度再分开来看,相当于把,你可以理解为把一个数据,一个物体可能你看的表面,可能你觉得某一地方有一些你奇怪的东西,这会你光看表面是不知道的,你只能把这个东西拿刀给它抛开来,看看里面到底是什么样。这样的话就我们提供这种从数据分析角度来说也就是那种一种多维分析,比如像数据的切片、钻取这块的能力;你要另外一块,就是说比如你选出了,就是说你查出来这个数据,怎么能够以比较好的形式展现出来。就比如即使是同一个,比如说你拿线图来展示,其实就是如果你要让用户看起来最方便的话,其实也是有很多需要优化的,比如可能有两个数据可能差别很大,或者比如说某个你关注的点,就说从线上的话,他那种幅度很小的话,这会可能比如说你可能拿一个线性坐标不一定合适,或者你可能得换一个指数形的坐标,或者给你某一个地方,你可以让他去自动去放大或者什么之类的,这个像这一块,还是有很多需要继续去优化的地方。

   

11. 现在不是D3比较火,就是做这个的。

黄洋成:对,它有很多很丰富很有表现力的图表。

InfoQ:你觉得哪些比较好?

黄洋成:这个的话确实还是在不同的应用场景可能会有不一样。比如像他有一些那种图的形式的话,就说可能会表现的那种,比如像聚类的分析的结果,这方面可能会比较很有效果,但具体那种可能会就说跟具体的业务还是更相关一些。

   

12. 就是还是自己研发?

黄洋成:从我们来说,其实这一块基础图表的话,我们其实自己研发的也会比较少,其实主要还是会尽量去利用这些开源的组件。我们可能会在上面再去做一些封装,包括样式上的优化之类这一块。

   

13. 那像您觉得与传统的这种Web相比,移动大数据的特点和分析这种挑战在什么地方?

黄洋成:其实的话互联网从我看来,互联网普及的过程的话,从另外一个方面看,实际上就是,人这个个体把自己的生活把它数字化的一个过程,把它数字化以及开放出去的一个过程。以前的话就是移动Web的时候,因为大家不可能把电脑随身扛着,所以觉得你能够数字化的部分相对会少一些。但随着移动设备的普及的话,就说意味着你会有越来越多的生活的部分被数字化。这一块的话就说可能会带来两个方面的影响,首先的影响它会带来很多更多的数据,以前的话你从Web上能收集到用户的数据,说实话还是很少的,现在随着移动设备的兴起,实际上你是可以收集到更多的,比如说用户真实的位置呀,甚至有很多他的一些当时所处的场景的信息,甚至你可以去预测比如,猜测用户在使用你这个应用的时候,他是在公交车上,还是在家里。你还可以通过比如像现在有很多还有气压传感器,你可以知道比如他玩你这个应用的时候,当时的天气可能会是什么样,甚至你进而可以去猜测他用户的心情或者什么,甚至都有可能的。所以这一块就说首先就带来了更多维度的数据,就是比以前Web上的数据要丰富很多。丰富的话也就意味着一个数据量大了,另外一个最主要的影响还是数据维度多了。做数据处理都知道,实际上数据最主要倒不是怕量大,而最主要还是怕它维度多。因为维度它最后算出来是一种呈指数级。你量大的话,它毕竟还是一个线性的,所以就维度更多的话,就说导致你处理起来会更加困难;另外一方面也就是在于就说,现在移动上很多数据都是这种传感器的数据,从数据形式上跟我原来Web上不一样,Web更多大家看到更多可以看做偏Log型的数据。而传感器的这种数据更多的是一种流式的,就是它不停的会出来,这种从处理角度来说,这两种实际上还是会有一些不一样的地方。可能对于流式的处理,可能你更多需要有一些信号处理的一些技能的背景;另外的话,就说比如这种信号处理器,实际上它可能会涉及很多以前大家做互联网做软件你可能涉及不到的一些业务,或者一些专业。就比如说现在有很多手环,可以把你的心跳,你的像手的这种导电率,把这些数据都可以抓到,就是把它收集起来,像这种数据的话很明显不是说咱们传统做这种软件的人,他是有能力去分析的。实际上他是需要一些很专业的人来做这种前期的分析。但可能那些做专业的人,他可能他能知道比如怎么从一个心电图来推导出,比如你这个人到底是什么样的心率,你可能身体有什么问题。他可能对于后期的话对于别的数据,可能他也,就说他又未必理解怎么处理。所以就说这一块我觉得以后可能另外一个趋势,就是可能需要更多的协作,也就是可能不同的专业的人、公司或者人才来共同协作,然后才能够达到这个对于这种移动的数据,它的这个处理最有效,以及它能够达到最大价值。另外同时可能也就需要数据会需要更多的移动,像以前Web上的话,相对来说比各个厂商之间的数据的交换的这种还是会比较少的,像以后的话,你需要跨界来,就互相利用大家不同专业的能力来共同处理这些数据,同时肯定就意味着这些数据需要在不同的公司之间能够比较顺畅的流动起来。反正我觉得这可能是Web跟移动的话带来的两个主要的区别。

   

14. 那我接下来最后的一个问题,就是想了解一下TalkingData团队现在的人员分工大概是怎么构成?就是包括数据分析、建模这一块,怎么跟其他的研发人员去进行沟通呢?

黄洋成:从我们这边就说基本上从技术这一块,就不算前端那一块的话,这个主要还是就分成两部分,一部分是产品,一部分是研发。产品的话,他们会接触所有前端来的需求,就包括一些数据分析的需求。当然有的需求可能不一定是来自于外部,是来自于产品团队自己内部。他们会去研究怎么能够从数据中比如发掘出一些好玩儿的东西。研发这边的话更多是提供技术支撑的,像比如前边产品那边的话,可能会从内部来的需求,从外部从前端来的需求,可能还会有一些报表的数据分析的需求。然后他可能会主导这个产品的,从就是从建模一块,首先是产品他会主导,因为产品他是更了解业务的。就是建模这一块,主要还是需要业务人员来参与。但同时的话,技术这一边会去辅导、支撑,就是辅助产品来做建模这一块。就说具体分析这一块的话,实际上我们最开始也是可能产品那边提需求,然后研发这边根据产品的需求,然后看技术这边能怎么能够去实现这个需求,有的时候可能不一定有现成的还需要去写程序。这种的话就涉及到两个不同部门的沟通,就涉及到因为两个部门的目标是不一样的,往往这种沟通成本会比较高,导致就说可能比如产品需求过来,这边满足这种周期会比较长。像现在的话,我们技术这边,基本上就是提供了一个平台,一个查询的平台给前端、给产品,给产品人员,这样的话就说产品那边他可以自己去分析需求,然后他自己写出一些SQL类的这种查询的条件。当然就说写查询条件这一块的话就说,有的时候可能需要技术人员来辅助产品帮这个SQL写出来,然后就产品自己去执行这个SQL,拿到结果,他去分析结果,再根据结果再去调整它的查询,这些工作相当于产品自己去做了。像研发的话,更多是提供支撑,而尽量少参与到他们这个分析的具体的过程那边。确实这样的话效率会比原来会好很多。

   

15. 所以说产品可能专注于这种数据?

黄洋成:对,因为产品它更了解,比研发相对来说更了解业务。

InfoQ:他们可能是有些数据背景的人,研发可能是有前端数据库啊、存储这些。这种工作还是挺不错的。那我今天就到这里,十分感谢洋成接受我们的采访。

你可能感兴趣的:(如何应对大数据应用在存储和展示方面的挑战)