此书下载传送门http://www.java1234.com/a/javabook/yun/2018/0308/10578.html
第1章 总述
阿里巴巴大数据系统体系主要分为,数据采集、数据计算、数据服务和数据应用四大层次。
数据采集工具:web端、App端、H5
数据计算层:数据存储、云计算平台(离线计算平台、实时计算平台、数据整合管理体系ONE DATA)
数据服务层:以数据仓库整合计算好的数据作为数据源,对外通过接口的方式提供数据服务,主要提供简单数据查询服务,复杂数据查询服务和实时数据推送服务三大特色数据服务。
数据应用:如搜索、推荐、广告……
第2章 日志采集
浏览器的页面日志采集
- 分为两大类:
页面浏览,日志采集。页面浏览量(page view, PV)和访客数(unique visitors, UV)- 页面浏览日志采集流程。
1)客户端日志采集,在HTML文档内植入日志采集脚本的动作可以由业务服务器在响应业务请求时动态直线,也可以在开发页面时有开发人员手动植入。
2)客户端日志发送。采集脚本执行时,会向日志嗯,服务器发起一个日志请求,以将采集到的数据发送到日志服务器。
3)服务器端日志收集。
4)服务端日志解析归档。 - 页面交互日志采集。
需要了解用户在访问某个页面时,具体的互动行为特征,比如鼠标或输入焦点的移动变化。
- 页面浏览日志采集流程。
APP
- 在客户端对这类日志进行适当聚合,以减少对日志采集服务器端的请求,适当减小日志大小。
- 在进行业务分析时,回退同样作为特殊场景而存在。
H5
- 执行时通过加的日志采集javascript脚本采集当前页面参数,包括浏览行为的上下文信息,以及一些运行环境信息。
- 在浏览器日志采集的javascript 脚本中实现将所采集的数据打包到一个对象中。
设备标识
- 历史上, MEI IMSI MAC 苹果禁用前的UDID, 曾经都可以用,如果一个是靠谱的话,那么设备唯一标识就简单了。这些目前设备上都对其进行了设备控制,所以都不可靠。阿里使用自研的UTDID, 应该是不同的设备场景下采用不同的策略,包裹没有权限时的处理,区分同一个设备
日志传输
-
客户端数据上传时是向服务器发送POST请求,服务器端处理上传请求,对请求进行shudsucw,uqf数据追加到本地进行存储,存储方式使用Nginx的access_log, access_log的切分天,即当天日志当天的日志文件中。
-
对于一些技术日志可以使用采样的方式,如页面加载情况、消耗内存等
第3单 数据同步
数据同步基础
- 直连同步:比如说JDBC接口抽数据
- 数据库文件同步:源数据库导出文件,通过FTP或类似方式传输到目标系统加载
- 数据库日志解析同步:例如mysql binlog
- 针对删除这种变更,主要有三种方式
- 不过滤删除流水,下游逻辑删除
- 过滤最后一条删除流水,比如存在手工批量删除或者备份删除,则数据还是有效的不应当置为无效
- 过滤删除流水和之前的流水
阿里数据仓库的同步方式
批量 文件导出,实时查询
实时 binlog解析通过my kafka传输
- 数据漂移的处理,多获取一部分第二天的数据(比如跨日以后的15分钟),然后根据可以判断业务时间的字段,过滤,排序等方式来得到需要的数据
第4章 离线数据开发
数据仓库的清洗采用非侵入式的清洗策略,在数据同步过程中不进行数据清洗,避免影响数据同步的效率。数据进入ODS层后,开始清洗,符合清洗数据清洗掉,并保存到DIRTY表
任务调度系统
数据仓库系统使用crontab定时任务功能进行任务调度处理,缺点:
- 任务之间基于执行时间实现调度,容易造成前面的任务未结束或失败而后面的任务已经运行。
- 任务难以并发执行,增加了整体的处理时间
- 无法设置任务优先级
- 任务的管理维护很不方便,无法进行执行效果分析等
分为调度引擎(phoenix Engine)和执行引擎(Alisa)两个子系统。
- 调度配置:常用的调度配置方式是对具体任务手工依赖的上游任务,阿里的方式是任务提交时,SQL解析引擎自动识别此任务的输入表和输出表,输入表自动关联产出些表的任务。
- 定时调度:可以根据实际需求,设定任务的运行时间,5种时间类型:分钏、小时、日、周、月,具体可以精确到秒。
- 周期调度:无须指定具体的开始运行时间
- 手动运行
- 补数据
- 基线管理:基于充分利用计算资源,保证重点业务数据优先产出,合理安排各类优先级任务的运行,调度系统引入了按优先级分类方法。优先级分类1~9,数字越大代表优先级越高,系统会先保障高优先级任务的运行资源。
- 监控报警; 任务系统做到大都要有这一步
第5章 实时技术
数据时效性一般分为三种:
- 离线:在今天(T)处理N天前(T-N, N>=1)的数据,延迟时间粒度为天
- 准实时:在当前小时(H)处理N小时前(H-N,N>0,如0.5小时)的数据,延迟粒度为小时。
- 实时:在当前时刻处理当前的数据,延迟时间粒度为秒。
实时数据则需要在流式处理系统中完成。简单来说,流失处理技术是指业务系统每产生一条数据,就立即被采集并实时发送到流式任务中进行处理