微信扫描登录

雪球大数据体系实践

本篇文章整理自唐福林4月23日在『1024大数据技术峰会』上的分享实录:雪球大数据体系实践。

enter image description here

一个小公司,大数据的体系,什么时候要搞这么一个东西?到底要不要搞?怎么搞这个东西?要买什么样的硬件还是上云还是干什么?搞完之后干吗?怎么推广,几个技术人套搞那套东西不认怎么办?

enter image description here

今天分享下雪球从0到1建设大数据体系,并且在公司内部推广经验。给处于一样阶段的小公司,或者从0到1建设体系的人来说有一个参考,抛砖引玉,我们今天的题目是雪球的大数据体系探索。

enter image description here

雪球是投资者社区,虽然我们公司小才有100个人,技术团队占一半,前端后端在一起,做的事可多了,我们有:

  • web1.0的新闻资信、股价信息、K线图
  • web2.0SN订阅
  • web3.0,移动APP
  • 非互联网资产管理

    enter image description here

技术是Java、Scala、Akka、nodejs,Docker,Docker在2013年用在线上生产环节,所有的服务节点全是在Docker,scala,大家用得少一点。把scala写在业务代码里面,这是一个工程师的选择。

搭建一套CDH,跑了Hadoop,impala、storm。

大部分做了私有云,想做公有云,但是有监管的要求。

enter image description here

简单介绍一下自己,我之前是新浪微博的架构师,一般技术上的问题我都会在微博上跟大家分享和交流,如果有技术交流可以在微博上找我。我以前做微博短链t.cn、微博计数器等等。2015年来到雪球任首席架构师,负责性能稳定性和代码质量改进,我们平台项目基础组件还有微服务中心。

我们用户量不大,在互联网金融这个行业里面,或者在专业投资社区这个行业里面我们算最大。在这种情况下,为什么要搭大数据体系?

enter image description here

起因。2015年上半年行情特别好,用户各种指标往上涨,后来开始做交易,这个时候发现很多问题就出来了。

交易这边的业务跟以前社区或者1.0的业务不一样,需要做很多精细化运营工作。蹭蹭涨就加服务器,服务端有问题也很难排查,机器加到上百台,上服务器就觉得很崩溃。

量在涨,行情变好,有更多产品运营的人员,要做客户端行为日志。之前用别人的东西,要确认一些东西,更细节的数据,反正种种行为加起来,就觉得应该有必要搞一套大数据体系,想法挺好就开始。

其实从现在往回看,这件事情搞得太晚了,应该更早一点,所以在很多场合,但凡问到这个问题,在最后也会说,什么时候该搞?如果你还没有搞的话,现在马上!

enter image description here

定位。

全量数据落地存储。要把我们雪球里面所有的数据全部存起来,存在这个地方,包括重要的各种入了DB的数据,还有log数据,用户行为数据都要落地存储,你也不知道它到底有用没用,万一以后有用呢?

新数据准实时流格式访问。我们想做更有价值玩法出来,后面说到量化投资。

还有大数据交叉关联查询,用户行为分析的东西。

既然这样,就是非常典型大数据的体系,大数据整个生态体系里面有的东西都搭上,也不花钱。

enter image description here

模块组成是这样。数据收集模块,实时直至、离线日志、数据库抽取。

数据存储平台,提供计算,事实实时、离线。业务人员想怎么算,我就提供怎么算。

enter image description here

上面是我们线上业务,服务集群logserver用Kafka捞进来到storm。大家都一样,Hue玩不出花来,我们直接用hue给一个输入框,你去做ppt。

要搭上这个东西,第一步,你要算,多少机器多少人力,搭多久,然后就算机器容量,算接下来一年到半年的数据,把现在的数导进来,把未来一年的增量导进去算。

enter image description here

计算容量,两个礼拜弄好了,放上去做推广,有200+jobs在上面跑。

enter image description here

硬件配置、8台dataeode,10台机器。好多公司没有自己的机房你就按照去云上买也一样。

雪球买高配机器,32core,128G内存,sas硬盘。

enter image description here

软件准备,用CDH5.4.3,parcel包格式全下下来,能装就装上,有的东西全装上,业务要怎么怎么装,不用就卸掉。

在公司里面没必要精细化那种程度,多装一个少装一个不花钱。

enter image description here

我们在用的是sudo的模式,当前的权限控制系统整个体系都非常复杂,如果上连它的权限体系,说不定哪个组件不工作,很费劲特别麻烦,然后就把所有的安全性的考量都外包给运维团队,这个机器如果被人攻破了,上面数据是不保安全,机器安全就保安全,就这样。大家有分工,分工合作。

enter image description here

我们就导了一堆数据进去,也不说了。

enter image description here

数据导入。SNS社区,用户、关系、帖子、评论、组合,社区里所有产生的实体。我们导入实时行情,骨架、盘口、买卖。服务端accesslog。导入app端 用户行为日志,零零总总加起来也不少。

enter image description here

数据清洗。ETL,自己写的shell job。这些事情不是我们的重点或者步骤,你不管怎么做,你能把所有的数据按照你想要组存下来。

enter image description here

Meta信息管理。Hive Metastore,业界没有一个公司发现痛点,库表字段说明、数值约束、数据来源,更新平率等等,只能依靠手工文档,我们觉得这是大问题。

enter image description here

使用方式,给你一个hue账号,你用你自己的账号登录,进去用imbala和Hive给你一个输出框输入,平台好歹做点事,我们就包装了http的API,JavaClient。这也是很简单的封装,主要为了后面要说量化的一些事情做。

enter image description here

数据权限管理。大家说你们太粗放了,但是都是金融数据挺值钱,有一些敏感数据在上面,所以我们做了权限管理,首先使用方用账号登录,数据那边就说,因为我们有一些比较敏感的数据,用不同的HDFS文件属主隔离,普通人查到社区数据,更高权限交易或者基金、私募的一些东西普通人是查不到的,必须有输出的权限查到,简单做了数据权限。

enter image description here

还有一点,零零总总装了一堆组件,为了避免自己人找不到东西在哪儿?我们做了一个入口,hue、spark、node,Kafka,反正一堆东西,插件KPI这是我们做的统计后台的东西。小公司里推这样一套东西,首先这个东西立意要足够高,我们要做大数据,要做商业智能,做更多数据挖掘,但实际上你做出来你只是写了一些简单的shell的job或者画了一些后台验证图。

enter image description here

数据都run起来了,搭个架子就好了。搭起来之后,还得用起来。首先让工程师先用起来,你们去多用用我们的大数据平台,以前可能不太好实现的一些东西,不太好拿的数据可以很容易拿到,去诱惑一下给他们做impalaSQL的培训,大家能写SQL,写什么呢?线上的业务技术指标,线上团队的人写技术指标收集,你负责服务的QBS或者各种东西,监控报警。

enter image description here

这是我从内网截下来的,作者是我,我给大家说,我们要做什么样的数据指标项。

用户服务每周每天注册人成功失败,失败率,分各种类型,分各种渠道来源,失败原因统计,这是每天的统计,用来发周报,每分钟的统计用来做报警。登录人数、失败,列了一堆,大家就开始写,在数据中心平台上写SQL,来发日报。

enter image description here

监控报警。我们把所有的服务,把Exception和Metrics和Accesslog都弄在Kafka的流。一个月之后 技术人员都会了,知道怎么用,知道拿来干吗,知道有什么数据,想起来能用一下。

enter image description here

第一波推广大功告成,接下来推广产品运营人员。首先告诉他,给你做业务指标、用户行为分析,能做各种各样的东西,具体怎么做?

平台的人辛苦给你做,做出来给你结果,要不然每个团队有技术人员会,给他们提需求,做到系统后台也好或者定期发邮件也好。用户行为分析,我们尝试过各种的云服务,最后决定自己去写,写BI系统。

enter image description here

用户行为分析:点击路径、功能漏斗、常用功能、太阳图、火焰图。

enter image description here

用户分类对比,当前活跃拥护和本月流失用户有什么不一样,为什么这个人流失了。当前活跃和本月新增用户,给产品运营人员画了一些图给他们看,运营人员知道有大数据,所有数据在上面,我想知道什么就找他们问一下现成有就看一下,没有就做。所有人都有这个概念了。

enter image description here

再接下来,做点东西放线上,这么多数据上面做点大数据的产品来提升大数据体系价值。

反垃圾、推荐、用户画像、信用体系,广告、量化投资,在没有大数据之前这些东西也有,反垃圾也有,推荐也有,用户画像,广告也有。但是有了大数据这个平台之后,我们就可以把这些东西全部往大数据平台上靠,感觉很高大上。

enter image description here

比如反垃圾,用大数据平台,以前是一个规则系统,可能对所有人来说它的规则基本上是一样的,有了大数据平台之后,我们先给用户做分类,不同类别的用户,各种反垃圾的指标、规则、阈值都不一样;我们还给帖子做分类,比如说这个帖子说它是垃圾,跟它类似的帖子是不是疑似垃圾。

行为聚类,用了大数据把这个概念往上套一套,随手做一些事情。不是说做得多么深刻。做得深刻也是比较纠结的事情,在用户每天发帖量,用户行为,我们还是人工智能来做的。

我们定义的垃圾行为或者对于用户损害最大的事情是什么呢?所有的互联网金融,哪个老师说哪支股票挣钱,对于我们来说这是垃圾。我们符合证监会监管需要互联网金融创新需要。收费见股,没有专业从业资格证就是非法,在雪球上是非法不能干。

enter image description here

推荐给用户做了一些分类,不同的用户推不同的东西。另外我们有用户APP端用户行为确认,我们就可以对效果数据做更准实时的监控,有没有推出这条卡片上停留时间?它没有任何行为只是停了一下,扫了一眼。其实雪球上的推荐效果还是不错的。

enter image description here

有了反垃圾之后,把用户分类做得完善一点,像一个产品,我们做了雪球信用系统,我们筛出好用户好贴好组合。差用户,差贴反垃圾用。普通用户,普通贴,做差异化运营,提升黏性在用。

enter image description here

广告,有了大数据体系之后,可以多维度条件筛选目标用户。雪球上面的广告是这样的,前一阵XC90,雪球上投的广告,他们在筛用户的时候,就会更要求精准一点。

比如说特别有钱的人,近期股市里面挣了钱的人,各种高大上的维度,在不同的分类下面对比广告效果。就比如说特别明显的按地域对比。

enter image description here

量化投资。因为以前真的做投资或者做组合,跟社区数据会比较割裂,有了大数据体系之后,你就会发现所有的数据都存在一起可以做专业查询,可以随地随时各种维度去查,翻来覆去,我们把社区和组合数据做投资决策的来源,我们大数据指数在行情比较好的时候会远超大盘,行情不好的时候,也会稍微超过大盘一点,我们正在筹备大数据基金,中国的证券监管部门是非常厌恶所谓的量化或者用算法操作大数据这种词,他们觉得有风险,我们最后出的基金的名字叫微调,我们叫工程师笔记。

enter image description here

未来的规划,其实大家看到,大数据体系搭起来是很容易的,你想把它用上也是很容易,你有hue后台界面,用到产品上也是很容易,分分钟的事,大家不要太有心理负担,那我们作为技术人员或者做一个公司来说,我们肯定不止于此,未来的规划深入做一些挖掘。

深入业务本质做更多的规则或者算法这种东西,我们现在重点选的就是推荐这个方向去做突破,我们在上面会应用协同过滤提升推荐效果。

寻找更多应用场景。一个公司里面,把需要看效果的场景,比如用户黏性、日活、推荐效果,凡是需要看效果而不是对功能的场景,你把它从1%提升到10% 是很容易,但是类似推荐这种东西,你把10%想提升到15%就非常困难。所以,我们如果在人力资源不够的情况下,更应该去做去寻找哪些东西还在1%,我随便做点什么事情,花一个月,它就到10%了,这个投入产出比是最高的。

所以说寻找更多的应用场景,在简单做一下的情况下能够发挥更大效果的应用场景,而不是说我需要专业深入挖掘,花了好长时间弄了好高深的算法提升1%,对小公司是不划算的。

enter image description here

效果改进是未来的重点,广告效果改进。

量化投资的效果改善,后面直接打了问号。量化投资在股市,不是一个可以用算法或者用某种理论或者某种东西去描述的系统,A股就是浑沌系统,微小的搅动造成大风暴,这是打了问号,即使打了问号,国内的股票市场或者说整个投资市场量化,用量化代替人做决策这个事情,总体的趋势是确定明确的,所有的基金公司所有投资机构后续都会往这方面走,做很多量化策略代替人做决策,避免受到人心情,不确定因素在里边,排除不确定因素,可以继续往下做,但是我个人对效果是持一些怀疑态度。

enter image description here

回过头来做一下简单的思考和总结。我一直分享过程中在说,大数据体系的价值,用数据说话,杜绝拍脑袋。我们现在公司里面用数据说话的这种体系是更好如果没有,就尽快培养体系,不管工程师、技术、产品运营所有东西拿数据来说。

enter image description here

所有的地方都是用数据说话,大数据体系什么开始越早越好,还没有,建议大家回去赶紧搭起来,找三台机器就可以搭建Hadoop。

enter image description here

难点在于什么呢?

我们所有的工程师或者技术人员或者产品运营人员有数据意识,所有的地方会频繁使用数据来给我做决策,分两方面说。一方面你的工程师、产品运营人员要有数据意识,我任何一个产品决策或者技术,都是有各种各样的支撑。

另外,大数据这种团队或者大数据这套系统是否足够易用,足够易用,大家随手用一下,需要什么数据随手拿一下,如果不易用,想要的数据很费劲拿到大家慢慢也就不会去频繁使用了。

后面说全员,努力降低门槛,接下来深度挖掘数据价值,这可能就是我们一些老板、领导需要考虑的事情,数据除了做这些事情,上面列的事情,我们还能做什么?