大数据之路 阿里巴巴大数据实践 读书笔记

本文详述阿里巴巴大数据体系,涵盖数据采集(页面日志、无线客户端日志)与同步(批量、实时、挑战及解决方案),数据服务与应用,以及挖掘、建模与管理。揭示了阿里巴巴在大数据领域的核心技术和实践经验。
摘要由CSDN通过智能技术生成

一 、总述

人类正在从IT时代走向DT时代。现在的数据呈爆炸式增长,其潜在的巨大价值有待发掘。但是如果不对数据进行有序、有结构的分类组织和存储,它将变成一场灾难。

在阿里内部,数据的存储达到EB级别。这些给数据采集、存储、计算都带来了极大的挑战。随着数阿里内部数据量的剧增,以及日益丰富的业态,这些都给大数据系统的构建提供了更复杂的要求。

本书介绍的阿里巴巴大数据系统架构,就是为了满足不断变化的业务需求,同时实现系统的高度扩展性、灵活性以及数据展现的高性能而设计的。

其系统机构大致包含六层。

数据采集层

阿里巴巴建立了一套标准的数据采集体系方案,致力于全面,高性能,规范的完成海量数据的采集,并将其传输到大数据平台。

其日志采集体系方案主要包括量大体系:

  • Aplus.JS 是Web端日志采集技术方案
  • UserTrack 是APP端日志采集技术方案。
数据计算层

从采集系统收集带大量原始数据,进入数据计算层中被进一步整合和计算。

阿里巴巴的数据计算层包含两大体系:

  • 数据存储及计算云平台
  • 数据整合及管理体系
数据服务层

数据被整合计算好后,需要提供给产品和应用进行数据消费。数据服务层对外提供数据服务主要是通过统一的数据服务平台(OneService)。OneService以数据仓库整合计算好的数据作为数据源,对外通过接口的方式提供数据服务。

数据应用层

阿里对数据的应用表现在各个方面,如搜索、推荐、广告等。商家、阿里内部 的搜索、推荐、广告、金融等平台,阿里内部的运营和管理人员都是数据应用方。


二、日志采集

浏览器的页面日志采集

浏览器的页面日志采集可以分为两大类:

  • 页面浏览(展现日志采集)。
    指当一个页面诶浏览器价值呈现时采集的日志。
    目前阿里巴巴采用的页面浏览日志采集方案的大体流程如下:
  1. 客户端采集日志。由一小段被植入页面HTML文档的JavaScript脚本执行。
  2. 客户端发送日志。采集脚本执行时,会向日志服务器发起一个日志请求,将采集 到的数据发送到日志服务器。
  3. 服务器端日志收集。服务器收到日志后向浏览器回应请求成功响应。并将日志请求内容写入日志缓冲区。
  4. 服务器端日志解析存档。
  • 页面交互日志采集
    用于了解用户在访问某个页面时具体的互动特征。在阿里巴巴,通过一套名为“黄金令箭”的采集方案来解决交互日志的采集问题。
  1. 业务方在元数据管理界面注册需求,系统生成日志采集模板代码。
  2. 业务方将交互日志采集代码植入目标页面
  3. 用户在页面互动时,采集代码被触发
  4. 代码触发后发送日志请求。
无线客户端的日志采集
  • 页面事件
    UserTrack提供页面事件的无痕埋点,无需开发者进行任何编码即可实现。同时UT提供透传参数功能。
  • 控件点击及其他事件
    控件点击相对简单,就是操作页面上的某个控件,因此只需把相关基础信息告诉采集SDK即可。
日志采集挑战
  • 日志分流与定制处理
    采用分治策略作为日志采集体系的基本原则
  • 采集与计算一体化设计
    以PV为例,阿里日志采集针对这个问题使用两套日志规范和与之对应的元数据中心。
  • 大促保证
  1. 首先实现服务器推送配置到客户端
  2. 其次对日志进行分流
  3. 最后,在实时处理方面做优化提高吞吐量

三、数据同步

数据同步技术通用的指的是不同系统之间的数据流转,有多种不同的应用场景。主要有三种直连同步、数据文件同步、数据库日志解析同步。

阿里数据仓库的同步方式

阿里数据仓库的数据同步有两个特点,一是数据来源的多样性,二是体现在在他的数据量上。

批量数据同步

离线类型的数据仓库应用,需要将不同的数据源批量同步到数据仓库,以及将数据仓库处理的数据数据批量同步到业务系统。阿里采用DataX来实现。

数据实时同步

对于日志类数据来,每天产生的日志是源源不断,且分布在不同的服务器,需要实时尽快的将数据同步到数据仓库。大多数情况下,是通过消息订阅模式来实现数据实时同步。阿里的TimeTunnel就是这样的一个数据实时传输平台。

数据同步遇到的问题
分库分表的处理

目前主流的数据库都支持分库分表操作。阿里的TDDL是一个分布式数据库访问引擎,通过建立中间表的逻辑状态来整合统一分库分表的访问。

高效同步和批量同步

阿里研发OneClick产品,对不同数据源的同步配置透明化,简化了数据同步的操作步骤,降低了数据同步技能门槛。实现了数据的一键化和批量化同步。

增量同步与全量同步的合并

随着数据表量的发展,周期的进行全量同步的方式会影响处理效率。此时采用同步更新增量数据与上次的全量数据进行合并,从而获得最版本的全量数据。

同步性能的处理

传统的数据同步模式存在的几个问题导致数据同步的任务运行不稳定。其数据实践团队总结出了一套基于负载均衡的新型数据同步方案。

数据漂移处理

源系统同步进入数据仓库的第一层数据成为ODS。数据漂移通常指的是同一个业务日期数据中包含前一天或后一天凌晨附近的数据或者丢失当天变更的数据。

通常有两种处理方式:

  • 多获取后一天的数据。但此方法有可能出错,比如后一天关闭了前一天支付的订单。</
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
阿⾥巴巴⼤数据之路 阿⾥巴巴⼤数据之路——数据技术篇 数据技术篇 ⼀、整体架构 ⼀、整体架构      从下⾄上依次分为数据采集层、数据计算层、数据服务层、数据应⽤层    数据采集层:以DataX为代表的数据同步⼯具和同步中⼼    数据计算层:以MaxComputer为代表的离线数据存储和计算平台    数据服务层:以RDS为代表的数据库服务(接⼝或者视图形式的数据服务)    数据应⽤层:包含流量分析平台等数据应⽤⼯具 ⼆、数据采集(离线数据同步) ⼆、数据采集(离线数据同步)   数据采集主要分为⽇志采集和数据库采集。⽇志采集暂略(参考书籍原⽂)。我们主要运⽤的是数据库采集(数据库同步)。   通常情况下,我们需要规定原业务系统表增加两个字段:创建时间、更新时间(或者⾄少⼀个字段:更新时间)   数据同步主要可以分为三⼤类:直连同步、数据⽂件同步、数据库⽇志解析同步   1.直连同步     通过规范好的接⼝和动态连接库的⽅式直接连接业务库,例如通过ODBC/JDBC进⾏直连     当然直接连接业务库的话会对业务库产⽣较⼤压⼒,如果有主备策略可以从备库进⾏抽取,此⽅式不适合直接从业务库到数仓的情景   2.数据⽂件同步     从源系统⽣成数据⽂本⽂件,利⽤FTP等传输⽅式传输⾄⽬标系统,完成数据的同步     为了防⽌丢包等情况,⼀般会附加⼀个校验⽂件 ,校验⽂件包含数据量、⽂件⼤⼩等信息     为了安全起见还可以加密压缩传输,到⽬标库再解压解密,提⾼安全性   3.数据库⽇志同步     主流数据库都⽀持⽇志⽂件进⾏数据恢复(⽇志信息丰富,格式稳定),例如Oracle的归档⽇志   (数据库相关⽇志介绍,参考:)    4.阿⾥数据仓库同步⽅式     1)批量数据同步     要实现各种各样数据源与数仓的数据同步,需要实现数据的统⼀,统⼀的⽅式是将所有数据类型都转化为中间状态,也就是字符串类型。以此来实现数据格式的统⼀。     产品——阿⾥DataX:多⽅向⾼⾃由度异构数据交换服务产品,产品解决的主要问题:实现跨平台的、跨数据库、不同系统之间的数据同步及交互。     产品简介:     开源地址:     更多的介绍将会通过新开随笔进⾏介绍!(当然还有其他主流的数据同步⼯具例如kettle等!)     2)实时数据同步     实时数据同步强调的是实时性,基本原理是通过数据库的⽇志(MySQL的bin-log,Oracle的归档⽇志等)实现数据的增量同步传输。     产品——阿⾥TimeTunnel(简称TT)。TT产品本质是⼀个⽣产者、消费者模型的消息中间件     3)常见问题       1.增量数据与全量数据的合并         主要的场景是数据同步中周期全量同步,对应的解决⽅案是每次只同步变更的数据,然后和上⼀周期合并,形成最新的全量数据(选择此⽅案的原因是绝⼤多 数⼤数据平台不⽀持update操作)         具体的⽅案主要有union的联合操作(可以通过⽣成增量中间表detal)与阿⾥主推的全外连接full outer join+全量覆盖insert overwrite的形式。实例参考如下: SQL的Join语法有很多, inner join(等值连接) 只返回两个表中联结字段相等的⾏, left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录, right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录, 假设我们有两张表。Table A 是左边的表。Table B 是右边的表。其各有四条记录,其中有两条记录name是相同的,如下所⽰: A表 id name 1 Pirate 2 Monkey 3 Ninja 4 Spaghetti B表 id name 1 Rutabaga 2 Pirate 3 Darth Vade 4 Ninja 让我们看看不同JOIN的不同。 FULL [OUTER] JOIN (1) SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name TableA.name = TableB.name 的情况,A和B的交集有两条数据,那么 FULL OUTER JOIN的结果集, 应该是2+2+2=6条,即上⾯的交集,再加剩下的四条数据,没有匹配,以null补全。 结果集 (TableA.) (TableB.) id name id name 1 Pirate 2 Pirate 2 Monkey null null 3 Ninja 4 Ninja 4 Spaghetti null null null null 1 Rutabag

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值