大数据之路读书笔记(一)

名词

DataX异构数据库交换服务产品,从不同数据库数据源中获得数据转换为中间状态,并且可以在目标数据系统中再将中间状态的数据转换为对应的格式写入。
TDDL(Taobao distributed Data Layer)分布式数据库访问引擎,通过建立中间状态的逻辑表来整合统一分库分表的访问。
IDB 是用于统一管理Mysql、OceanBase、PostgreSQL、Oracle、SQL Server等关系型数据库的平台,它是一种集数据管理、结构管理、诊断优化、实时监控和系统管理于一体的数据管理服务。在对集群数据库表的统一管理服务中,IDB产出了数据库、表、字段各个级别元数据信息,并且提供了元数据接口服务。
数据存储及计算云平台(离线计算平台MaxCompute与流式计算平台StreamCompute)和数据整合及管理体系(OneData)
pangu 分布式文件系统
fuxi 资源调度系统
nuwa/ZK NameSpace服务
shennong 监控模块
统一开发平台
D2(在云端)集开发、调度、发布、生产任务调度及大数据运维、数据权限申请以及管理等功能的一站式数据开发平台。
SQLSCAN 解决用户编写SQL质量差、性能低、不遵守规范等,总结后形成规则,并通过系统及研发流程保障,事前解决故障隐患,避免事后处理。
DQC(Data Quality center数据质量中心)主要关注数据质量,通过配置数据质量校验规则,自动在数据处理任务过程中进行数据质量方面的监控。
在彼岸 测试发布平台
调度引擎 执行引擎 任务状态机 任务工作流状态机
BI 商业智能

概述

大数据的井喷式爆发加大了数据模型、数据研发、数据质量和运维保障工作的难度。

数据体系主要分为数据采集-》数据计算-》数据服务-》数据应用四大层

数据采集层

建立标准的数据采集体系方案,致力全面、高性能、规范的完成海量数据的采集,并传输到大数据平台。

阿里巴巴技术采集分为两大体系:

Aplus.js WEB端日志采集技术方案与UserTracker是APP端日志采集技术方案。

在采集技术基础上,面向各个场景进行埋点规范,满足通用浏览、点击、特殊交互、APP事件、H5及APP里的H5和Native日志数据打通等多种业务场景。

同时建立一套高性能的、高可靠性的数据传输体系,完成数据从生产业务端到大数据系统的传输。在传输方面,采用TimeTunel(TT),即包括数据库的增量数据传输,也包括日志数据的传输。TT作为数据传输服务的基础架构,同时还支持实时流计算,也支持各种事件窗口的批量计算。另外也可以通过数据同步工具(DataX和同步中心)直连异构数据库(备库)来持有企业各种事件窗口的数据。

数据计算层

数据计算层分包括两大体系。数据存储及计算云平台(离线计算平台MaxCompute与流式计算平台StreamCompute)和数据整合及管理体系(OneData)。即使在这一体系下构建统一、规范、可共享的全域数据体系,避免数据的冗余与重复建设,规避数据烟囱和不一致性,充分发挥在大数据海量、多样性的独特优势。

从数据的计算频率来讲又可将数据仓库分配两大类,离线数据仓库与实时数据仓库。离线数据仓库是指传统的数据仓库概念,数据计算频率主要以天(包含小时、周、月)为单位。例如每天凌晨处理上一天的数据。但随着业务的发展特别是交易过程的缩短,用户对数据产出的实时性要求逐渐提高,所以急产生了实时数据仓库,例如双11的实时数据直播,即使其一个典型的应用案例。

阿里数据仓库的数据加工链路的分层:

1
2
3
4
操作数据层(Operational Data Store,ODS)
明细数据层(Data Warehouse Detail,DWD)
汇总数据层(Data WareHouse Summary,DWS)
应用数据层(Application Data Store,ADS)

通过数据仓库不同层次之间的加工过程实现从数据资产到信息资产的转化,并对整个过程进行有效的元数据管理以及数据质量处理。

大数据系统中,元数据模型整合及应用也是一个重要的组成部分,主要包含数据源元数据、数据仓库元数据、数据链路元数据、工具类元数据、数据质量类元数据等。元数据应用主要面向数据发现、数据管理等,如用于存储、计算和成本管理。

数据技术篇

数据技术篇

日志采集

浏览器日志采集

主要分为两类
(1)即是页面浏览(展现)日志采集。 页面浏览量(PageView,PV),访客数(Unique Visitors,UV)
(2)页面交互日志采集

页面浏览日志采集流程

采集日志的动作的时机非常关键,需要确保用户已确实打开页面,因此需要在用户接收到服务器的响应数据,并开始正确的解析及渲染过程中进行,因此需要在响应正文的HTML文档内的适当的位置增加一个日志采集节点,当浏览器解析到这个节点时,将自动触发一个特定的HTTP请求到日志采集服务器。

基本流程:采集-》发送-》收集-》解析

对于PV和UV的采集是简单,然后多数时候需要进行交互日志的采集,而因业务的不同场景的不同,所需记录的行为类型、行为数据以及数据的结构化程度都是截然不同的,呈现出高度自定义的业务特征,在阿里巴巴中交互日志的采集(即黄金令箭)是以技术服务的形式呈现的,其实是一种开放的基于HTTP协议的日志服务。具体的步骤如下:

页面日志服务端清洗与预处理

通常日志到达服务端后进行粗略的解析,但是这样的数据不能直接提供给下游使用,如果时间比较宽松的应用场合下,一般还需要离线预处理。答题因为如下的原因。

* 识别流量攻击、网络爬虫和流量作弊(虚假流量)
* 数据缺项补正
* 无效数据剔除
* 日志隔离分发

原始日志经过上述的清洗修正,并结构化变形处理后,Web页面日志的采集流程就算完成,此时日志已经具备了结构化或者半结构化的特征,可以方便的被关系型数据库装载使用。

H5&Native日志统一

可以选择将H5日志规范到Native中。H5照常通过埋点通过JS采集即可,Native运用SDK,因为采用SDK可以采集更多的设备相关数据,这在移动端分析中很重要,而是SDK采集的处理日志,会先在本地缓存,而后借机上传,在网络状况不佳的时候延迟上报,保证数据的不丢失。正因为这样的种种优势采用H5日志归到Native中。

日志典型场景注意事项

* 日志分流与定制处理:确保各业务之间不应存在明显的影响,爆发热点不应干扰常规业务的日志处理,日志优先级控制以及根据业务特点实现定制处理
* 采集与计算一体化设计

数据同步

数据采集需要有日志采集和数据库数据同步两部分。数据同步技术既是不同既不同系统间数据流转,主数据库与备份数据库之间的数据备份,以及主系统与子系统之间的数据更新,属于同类型不同集群数据库之间的数据同步。

另外还包不同地域、不同数据库类型之间的数据传输交换,比如分布式业务系统与数据仓库之间的数据同步。包含数据从业务系统同步进入数据仓库和数据从数据仓库同步进入数据服务和数据应用两个方面。

源业务系统的数据类型多种多样,有来源于关系型数据库的结构化数据,如MySQL、Oracle、DB2、SQL Server等。也有来源于非关系型数据库的非结构化数据,如OceanBase、HBase、MongoDB等,这类数据通常存储在数据库表中。

还有来源于文件系统的结构化或非结构化数据,如阿里云对象存储OSS、文件存储NAS等。

同步方式可以分为三种:直连同步、数据文件同步和数据库日志解析同步。

直连同步

直连同步及时通过定义好的规范接口API基和于动态链接库的方式直接连接业务库,如ODBC/JDBC。

这种方式配置简单,实现容易,比较适合操作型业务系统的数据同步。但是业务库的直连方式对于源系统的性能影响较大,当执行大批量数据同步时会降低甚至拖垮业务系统的性能。如果业务库采取主备策略,则可以从备库抽取数据,避免对业务系统产生性能影响,但是当数据量较大时,采取此种抽取方式性能较差,不太适合从业务系统到数据仓库系统的同步。

数据文件同步

数据文件同步通过约定好的文件编码、大小、格式等,直接从源系统生成数据的文本文件,由专门的文件服务器,如FTP服务器传输到目标系统后,加载到目标数据库系统中。当数据源包含多个异构数据库系统(如MySql、Oracle、SQL Server、DB2等),用这种方式比较简单实用。另外互联网的日志类数据,通常是以文本文件形式存在的,也适合使用数据文件同步方式。

但是由于通过文件服务器上传、下载可能会造成丢包或错误,为了确保数据文件同步的完整性,通常除了上传数据文件本身外,还会上传一个校验文件,该检验文件记录了数据文件的数据量以及文件大小等检验信息,以供下游目标系统验证数据同步的准确性。另外在源系统生成数据文件的过程中,可以增加压缩和加密功能,传输到目标系统以后,再对数据进行解压缩和解密,这样可以大大提高文件的传输效率和安全性。

日志解析同步

数据存储

  • 表名设计
    设计规则 汇总标识+数据域+主维度+时间维度

例如:dws_trd_slr_dtr slr卖家主维度+0点截止当日(dtr)进行统计汇总。

这样做的好处是所有主维度相同的数据都放在同一张物理表中,避免表数量过多难以维护,另外可以从表名上只管的看到存储的是什么数据内容,方便排查问题。

  • rowkey设计
    设计规则: MD5+主维度+维度标识+子维度1+时间维度+子维度2

例如:卖家ID的MD5前四位+卖家ID+app+一级类目ID+ddd+二级类目ID。

以MD5的前四位作为rowkey的第一部分,可以把数据散列,让服务器整体负载时均衡的,避免热点问题。在上面例子中,卖家ID是主维度,在查找数据的时候属于必传的,每个统计维度都会生成一个维度标识,以便在rowkey上做区分。

坚持原创技术分享,您的支持将鼓励我继续创作!