全网最全大数据面试提升手册!
目录
1.1 浏览器的页面日志采集
1.2 无线客户端的日志采集
1.3 日志采集的挑战案例
二、数据同步
2.1 数据同步基础
2.2 数据同步策略
2.2.1 批量数据同步
2.2.2 实时数据同步
2.3 数据同步问题
2.3.1 分库分表处理
2.3.2 高效同步和批量同步
2.3.3 增量与全量同步的合并
2.3.4 数据同步性能
2.3.5 数据漂移
三、离线数据开发
3.1 统一计算平台
3.2 统一开发平台
3.3 任务调度系统
3.4 特点
四、实时技术
4.1 流式技术架构
4.1.1 数据采集
4.1.2 数据处理
4.1.3 数据存储
4.2 流式数据模型
4.2.1 数据分层
4.2.2 多流关联
五、数据服务
5.1 服务架构演进
5.1.1 DWSOA
5.1.2 OpenAPI
5.1.3 SmartDQ
5.1.4 OneService
5.2 性能优化
5.2.1 资源分配
5.2.2 缓存优化
5.2.3 查询能力
六、数据挖掘
一、日志采集
本章主要介绍数据采集中的日志采集部分,阿里巴巴的日志采集体系方案包括两大体系:
本章从浏览器的页面日志采集、无线客户端的日志采集以及我们遇到的日志采集挑战三块内容来阐述阿里巴巴的日志采集经验。
1.1 浏览器的页面日志采集
(1)页面浏览(展现)日志采集
顾名思义,页面浏览日志是指当一个页面被浏览器加载呈现时采集的日志。此类日志是最基础的互联网日志,也是目前所有互联网产品的两大基本指标:页面浏览量(Page View,PV)和访客数(UniqueVisitors,UV)的统计基础。页面浏览日志是目前成熟度和完备度最高,同时也是最具挑战性的日志采集任务,我们将重点讲述此类日志的采集。
(2)页面交互日志采集
当页面加载和渲染完成之后,用户可以在页面上执行各类操作。随着互联网前端技术的不断发展,用户可在浏览器内与网页进行的互动已经丰富到只有想不到没有做不到的程度,互动设计都要求采集用户的互动行为数据,以便通过量化获知用户的兴趣点或者体验优化点。交互日志采集就是为此类业务场景而生的。
除此之外,还有一些专门针对某些特定统计场合的日志采集需求,如专门采集特定媒体在页面被曝光状态的曝光日志、用户在线状态的实时监测等,但在基本原理上都脱胎于上述两大类。
1.2 无线客户端的日志采集
众所周知,日志采集多是为了进行后续的数据分析。
移动端的数据采集,一是为了服务于开发者,协助开发者分析各类设备信息;二是为了帮助各APP更好地了解自己的用户,了解用户在APP上的各类行为,帮助各应用不断进行优化,提升用户体验。
无线客户端的日志采集采用采集SDK来完成,在阿里巴巴内部,多使用名为UserTrack的SDK来进行无线客户端的日志采集。无线客户端的日志采集和浏览器的日志采集方式有所不同,移动端的日志采集根据不同的用户行为分成不同的事件,“事件”为无线客户端日志行为的最小单位。基于常规的分析,UserTrack(UT)把事件分成了几类,常用的包括页面事件(同前述的页面浏览)和控件点击事件(同前述的页面交互)等。
对事件进行分类的原因,除了不同事件的日志触发时机、日志内容和实现方式有差异之外,另一方面是为了更好地完成数据分析。在常见的业务分析中,往往较多地涉及某类事件,而非全部事件;故为了降低后续处理的复杂性,对事件进行分类尤为重要。要更好地进行日志数据分析,涉及很多方面的内容,如需要处理Hybrid应用,实现H5和Native日志的统一;又如识别设备,保证同一设备上各应用获取到的设备信息是唯一的。除此之外,对于采集到的数据如何上传,以及后续又如何合理处理等,每个过程都值得我们进行深入的研究和探索。
1.3 日志采集的挑战案例
对于目前的互联网行业而言,互联网日志早已跨越初级的饥饿阶段(大型互联网企业的日均日志收集量均以亿为单位计量),反而面临海量日志的淹没风险。各类采集方案提供者所面临的主要挑战已不是日志采集技术本身,而是如何实现日志数据的结构化和规范化组织,实现更为高效的下游统计计算,提供符合业务特性的数据展现,以及为算法提供更便捷、灵活的支持等方面。
这里介绍两个最典型的场景和阿里巴巴所采用的解决方案。
二、数据同步2.1 数据同步基础
数据同步的三种方式:
2.2 数据同步策略2.2.1 批量数据同步2.2.2 实时数据同步2.3 数据同步问题2.3.1 分库分表处理
建立了一个中间层的逻辑表来整合分库分表。使得外部访问中间层的时候,与访问单库单表一样简洁。中间层介于应用持久层和JDBC驱动之间。
2.3.2 高效同步和批量同步
统一管理不同源数据库的元数据信息,强化版的元数据管理平台,要求数据同步配置透明化。通过库名和表名即可通过元数据管理平台唯一定位,再由自动化的数据同步平台完成建表、配置任务、发布、测试的一键化处理。
2.3.3 增量与全量同步的合并
全外连接与insert overwrite代替merge与update。
采用分区,每天保持一个最新的全量版本,每个版本仅保留较短的时间周期如3天至一周。
方式为当天的增量数据与前一天的全量数据合并,生成当天的全量数据。
2.3.4 数据同步性能2.3.5 数据漂移
常见于0点时分左右,数据按照日期划分跨天的问题。冗余获取0点左右的数据,根据多种时间字段来排序去重,重新划分和补录数据。
三、离线数据开发3.1 统一计算平台
(1)在逻辑层有 Worker Sc heduler Executor 三个角色:
(2)MaxCompute 能保证数据的正确性,如对数据的准确性要求非常高的蚂蚁金服小额贷款业务,就运行于Max Compute 平台之上。
3.2 统一开发平台
包括开发调试与发布平台、代码质量控制平台、数据质量监控平台、测试平台。
两张图对应起来看:
(1) 在彼岸:多路分支进行测试和完成数据脱敏(将敏感数据模糊化)
(2) SQLSCAN:对用户的SQL进行规范,检查代码的规范性
(3) 开发平台(D2)发布系统:实现和用户的IDE对接,用户可以通过IDE在D2上创建工作节点。
(4) DQC:清洗和监控数据,接收到到的数据与规则库对比,监控相关数据的可用性和对无用的数据进行清洗。
3.3 任务调度系统
3.4 特点四、实时技术4.1 流式技术架构
架构分为数据采集、数据处理、数据存储、数据服务四部分。
4.1.1 数据采集4.1.2 数据处理4.1.3 数据存储4.2 流式数据模型4.2.1 数据分层4.2.2 多流关联
多个流关联时,只有能匹配上的数据会被输出到下游,否则存储到外部存储系统中,当有更新进来的时候,从外部存储系统中重新读取数据到内存,从已执行完成的部分继续执行。
五、数据服务5.1 服务架构演进
5.1.1 DWSOA5.1.2 OpenAPI5.1.3 SmartDQ5.1.4 OneService5.2 性能优化5.2.1 资源分配5.2.2 缓存优化5.2.3 查询能力六、数据挖掘
数据挖掘过程包括商业理解、数据准备、特征工程、模型训练、模型测试、模型部署、线上应用、效果反馈等环节。
数据中台分为特征层(Featural Data Mining Layer, FDM)、中间层、应用层(Application-oriented Data Mining Layer, ADM),其中中间层分为个体中间层(Individual Data Mining Layer, IDM)、关系中间层(Relational Data Mining Layer, RDM)。
不同数据层的作用的区别:
常见数据挖掘应用:
1.个体挖掘应用
2.关系挖掘应用
如果这个文章对你有帮助,不要忘记「在看」「点赞」「收藏」三连啊喂!
2022年全网首发|大数据专家级技能模型与学习指南(胜天半子篇)
互联网最坏的时代可能真的来了
我在B站读大学,大数据专业
我们在学习Flink的时候,到底在学习什么?
193篇文章暴揍Flink,这个合集你需要关注一下
Flink生产环境TOP难题与优化,阿里巴巴藏经阁YYDS
Flink CDC我吃定了耶稣也留不住他!| Flink CDC线上问题小盘点
我们在学习Spark的时候,到底在学习什么?
在所有Spark模块中,我愿称SparkSQL为最强!
硬刚Hive | 4万字基础调优面试小总结
数据治理方法论和实践小百科全书
标签体系下的用户画像建设小指南
4万字长文 | ClickHouse基础&实践&调优全视角解析
【面试&个人成长】2021年过半,社招和校招的经验之谈
大数据方向另一个十年开启 |《硬刚系列》第一版完结
我写过的关于成长/面试/职场进阶的文章
当我们在学习Hive的时候在学习什么?「硬刚Hive续集」