既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
5.2.2 SQLSCAN
SQLSCAN将在任务开发中遇到的各类问题,如用户编写的SQL质量差、性能低、不遵守规范等,总结形成规则,并通过系统及研发流程保障,事前解决故障隐患,避免时候故障。
5.2.3 DQC
DQC(数据质量中心)主要关注数据质量,通过配置数据质量校验规则,自动在数据处理任务过程中进行数据质量方面的监控。
其主要有数据监控和数据清洗两大功能,数据监控主要是设置规则并报警,有强规则和弱规则之分,强规则可以阻断任务执行,数据清洗的方式跟我们的大致类似,在引入过程中不进行清洗,入库后,再基于配置的规则进行清洗。
5.2.4 在彼岸
主要将通用的、重复性的操作沉淀在测试平台中,避免人肉,提高测试效率。在彼岸的功能包括数据对比(支持不同集群、异构数据库的表做数据对比,比如数据量、字段统计值SUM、AVG、MAX MIN等)、数据分布、数据脱敏等
从阿里的统一开发平台可以看出来,其不仅提供了从任务开发到运维的整套工具,还特别注重体系的完整性和规则的沉淀,这类平台工具实际很难由第三方公司提供,而传统企业除了自身研发力量不够,往往由于业务需求的压力导致在IT这类基础平台层面的研发投入不足,一味靠资源和人力的投入去解决一些其实无解的问题,同时将报表取数人员和产品开发人员混编在一起,造成疲于应对需求的局面,这是值得深思的。
5.3 任务调度系统
- 调度系统分为调度引擎( Phoenix Engine )和执行引擎(Alisa)。
- 状态机分为工作流状态机与任务状态机,工作流包含待提交、已创建、正在执行、成功、失败等各个工作节点;而任务状态则是在工作流之下的一系列状态,例如执行中的等待状态。
- 通过事件驱动,生成调度实例,在两种状态机之间切换执行调度,根据状态的不同也在调度引擎和执行引擎之间切换。
六、实时技术
阿里巴巴基于TimeTunnel来进行实时数据的采集,原理和Kafka等消息中间件类似,采用StreamCompute进行流式处理,跟Storm类似,对于实时统计的问题,它提的些方案值得借鉴。
6.1 流式技术架构
架构分为数据采集、数据处理、数据存储、数据服务四部分。
6.1.1 数据采集
从数据源采集数据均已文件的形式保存,通过监控文件内容的变化,使用数据大小的限制和间隔时间阈值的限制来共同决定采集的频率。
将数据落到数据中间件之后,可由流计算平台来订阅数据。
时效性和吞吐量是数据处理中的两个矛盾体 ,很多时候需要从业务的角度来权衡使用什么样的系统来做数据中转。
6.1.2 数据处理
SQL语义的流式数据分析能力。
- 流式处理的原理:多个数据入口、多个处理逻辑,处理逻辑可分为多个层级逐层执行。
- 数据倾斜:数据量非常大时,分桶执行。
- 去重处理:精确去重使用数据倾斜的方式,模糊去重使用哈希来减少内存占用。
- 事物处理:超时补发、每批数据自带ID、将内存数据备份到外部存储。
在商业智能统计类实时任务中,对于资源消耗有一类是非常高的,那就是去重指标,实时任务为了追求性能,计算逻辑一般在内存完成,在计算去重时,势必要把去重的明细数据保留下来,当去重的明细数据达到上亿时,内存中放不小,怎么办?
精确去重可以通过数据倾斜来进行处理,把一个节点的内存压力分到多个节点,在模糊去重的前提下,可以采用相关的去重算法,把内存使用量降到千分之一甚至万分之一,布隆过滤器就是一种,其简单来讲就是不保存明细数据,只保留明细数据对应哈希值的标记位,当然会出现哈希值碰撞的情况。
6.1.3 数据存储
- 实时系统要求数据存储满足多线程多并发以及毫秒级的低延时。
- 表名设计和rowkey设计遵循数据均衡分布、同一主维度的数据在同一张物理表。
实时任务在运行中会计算很多维度和指标,这些数据如何存呢?由于实时任务大多是多线程处理的,意味着数据存储必须能够较好的支持多并发读写,并且延时需要在毫秒级才能满足实时的性能要求,一般使用HBase、Tair等列式数据存储系统。
当然诸如HBase等系统缺点也比较明显,必须使用rowkey,而rowkey的规则限制了读写的方式,显然没有关系型数据库那么方便,但对于海量数据的实时计算和读写,一般还是适用的,针对HBase阿里提供了表名和rowkey设计的一些实践经验。
比如rowkey可以采取MD5+主维度+维度标识+字维度+时间维度+子维度2,例如卖家ID的MD5的前四位+卖家ID+app+一级类目+ddd+二级类目ID,以MD5的前四位作为rowkey的第一部分,可以把数据散列,让服务器整体负载均衡,避免热点的问题。
6.2 流式数据模型
数据模型设计是贯通数据处理过程的,流式数据处理也 样,需要对数据流建模分层。实时建模跟离线建模非常类似,数据模型整体上分为五层( ODS DWD DWS ADS DIM )。
由于实时计算的局限性,每一层中并没