大数据之路——阿里巴巴大数据实践:日志采集要点
1.基于UT(user visit)采集的“透传参数功能”
透传参数功能,即把当前页面的某些信息,传到下个页面,甚至是下下个页面的日志中。比如:访问淘宝,搜索“连衣裙”->list页面->商品A,分析商品A的时候,顺带着,list页面和“连衣裙”关键字都会被放入A的日志中了,给以后数据分析带来了很大的方便。
2.客户端日志聚合
在客户访问页面时,我们提前在客户端进行日志聚合,减少对日志采集服务器端的请求次数,还可以适当减少日志大小。比如:若商品每次曝光就对应一条日志(商品每次从数据库中加载出来,显示在网页上),那么我们从上往下浏览网页的时候,内容不断的被曝光,日志不断的产生,我们可以将整个页面的所有信息压缩在一起,等到合适的机会在发送到日志采集器上。
3.手机回退功能,可能产生垃圾数据,客户也许只有一次有效访问,因为回退,在此页面出现了很多次,需要对干扰数据特殊处理。
4.因为APP分为两类:纯Native APP和Hybrid APP(既含有Native APP,又有H5页面镶嵌)
很多情况下,Native日志和H5日志互跳,即使关联也无法还原路径,数据丢失严重。为了将日志统一管理,阿里使用Native采集SDK的方式,将H5日志归到Native日志中,主要元婴如下:
- SDK采集更多的设备相关的信息,这与大数据分析和挖掘息息相关
- SDK处理日志会先缓存在本地,而后借机上传,可以避免在网络不佳的情况下,文件选择合适时机顺利上传。
5.WebView作为桥接js的框架,如果未来更改事件,不需要改动WebView层,只需要改动js的部分内容以及移动客户采集日志的SDK。
6.无线设备的识别,通过是否登陆,分为ID标识和UTDID标识,UTDID作为设备的唯一标识。
7.对于很多大型的电商网站而言,数据分析人员对于点击流前端的促销页面和位于后端的商品页面的关注点是不一样的,往往对这两种日志需要分类,阿里巴巴为了满足高频率的更新数据,减少服务器分类日志的压力,将分类任务分配到客户端(使用真正意义的“分布式”)。
8.采集与计算的一体化,以PV为例,对于PV日志的采集,以前是依托URL正则分类,这样会增加服务器分类日志所带来的压力,现在通过SPM(SPM实现了穿透参数)规范,在URL就可以看到SPM参数,通过SPM注册和部署,用户即可讲任意的页面流量进行聚类。
9.大促销,如“双11”采用TT实时消息处理(类似于storm+kafka)保证实时推荐。