大数据之路

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据之路相关的知识,希望对你有一定的参考价值。

参考技术A

人类从“IT时代”进入“DT时代”。本书介绍了阿里巴巴的大数据系统架构,为了满足不断变化的业务需求,同时实现系统的 高扩展性 灵活性 以及 数据展现的高性能
数据体系主要包括: 数据采集 数据计算 数据服务 数据应用 四大层次。

事实表包括引用的 维度 和描述具体业务的 度量

事实表中一条记录描述的业务的细节程度称为 粒度 。粒度可以使用两种方式来表示:(1)维度属性组合(2)所表示的具体业务含义。

事实包括可加性、半可加性和不可加性三种类型:
半可加性:只可以针对特定维度做聚合,例如库存(不能按照日期,可按照仓库聚合)。
可加性:可以按照任意维度聚合。
不可加性:完全不具备可加性。(例如:比率,事实表可以拆分存储分子分母)

维度属性也可以存到事实表中,称为 退化维度

事实表有三种类型:事务事实表、周期快照事实表、累计快照事实表。
事务事实表描述的是业务过程上的原子事务,也称为 原子事实表
周期快照事实表是按照周期性规律的时间间隔记录事实。
累计快照事实表:累计快照事实表用来表示过程开始和结束过程之间的关键步骤事件,覆盖整个生命周期,通常用多个日期字段记录关键时间点,记录会随着时间变化而修改。

事实表设计原则:
原则1: 尽可能包含所有与业务过程相关的事实。
即时存在冗余,也尽可能存储。

原则2:只选择与业务过程相关的事实。

原则3:分解不可加事实为可加的组件。
例如:不存成单率,转而存储成单数和提单数。

原则4:选择维度和事实前,必须先声明粒度。
建议粒度设置的越细越好,这样可以最大限度的提高灵活性。可以通过业务描述或者维度属性组合的方式来定义粒度。

原则5:在同一个事实表中,不应该有不同粒度的事实。
例如:一个事实表中不应该包含某些精确到订单粒度的度量,同时又包含只精确到城市的度量。

原则6:事实的单位一致。

原则7:尽量处理掉事实表中的null值。
SQL中大于,小于的条件不适用与null值,所以尽量用数值替代null,例如0.

原则8:使用退化维度增加事实表的易用性。
在Kimball的维度设计模型中,分拆出单独的维度表,为了节省存储。但是为了减少使用时的关联次数,可以多使用退化维度提供事实表易用性。

事实表设计方法:
1.选择业务过程及确定事实表类型。2. 声明粒度。3.确定维度。4.确定事实。5.冗余维度(设计退化维度)。

事务事实表,即针对业务过程构建的一类事实表,用来跟踪定义业务过程的个体行为,提供丰富的分析能力,作为数据仓库原子的明细数据。

单事务事实表,即针对每一个业务过程设计一个事实表,这样可以方便地对每一个业务过程进行分析研究。

表示同一个事实表包含不同的业务过程。多事务事实表有两种实现方法:(1)使用两个不同的事实字段来保存各自业务过程。(2)使用同一个字段保存,但是增加一个业务过程标签。
下面举例说明,淘宝交易事务事实表同时包含下单、支付和成功完结三个过程,三个过程粒度一致,可以放在一个事实表。下面确定维度和事实,该表中的下单度量、支付度量和成功完结度量信息分别存在不同字段,如果不是当前业务处理,则用0来处理。
当不同业务过程的度量比较相似、差异不大时使用第二种事实表(使用一个字段保存),当不同业务过程的度量差异大时,使用第一种(多字段保存)。

对于单事务事实表和多事务事实表的选择上,可以从以下一些方面来区分:
业务过程、粒度和维度(不同业务过程粒度相同,并且维度相似时,可以选用单事务事实表)、事实、下游业务使用、计算存储成本。电商环境下,有父子订单的概念,店铺多商品各生成一个订单,在一个店铺合成一个父订单。

1.事实完整性:事实表包含与其描述的过程有关的所有事实。
2.事实一致性:明确存储每一个事实以确保度量一致性。例如,有下单商品数和商品价格2个事实,同时保存下单金额(价格*商品数)。这样下游使用时,直接取下单金额,而不是再次计算,以保证指标的一致性。
3.事实可加性:为确保下游使用时,指标的可聚合性,尽量保存原始数,而不是计算后的比率指标。

对于事务度量,事务性事实表可以很好地表征。但是对于一些 状态度量 ,例如买卖家累计交易金额、商品库存、买卖家星级、温度(事务事实表无法聚合得到)等,事务事实表的效率较低或者无法处理。为了解决状态度量问题,引入周期性快照事实表(也称为 快照事实表 )。

1.用快照采样状态:快照事实表以预定的间隔采样状态度量。
2.快照粒度:快照事实表通常总是被多维声明,即快照需要采样的周期以及什么将被采样。
3.密度和稠密性:稠密性是快照事实表的重要特征。事务事实表一般都是稀疏的,只要发生业务才会有相应记录。
4.半可加性:快照事实表的状态度量都是半可加的,例如商品库存,只针对商品维度可加,对日期维度不可加。

设计快照事实表,首先确定快照粒度,然后确定采样的状态度量。下面介绍几个快照事实表实例。
单维度每天快照事实表、混合维度每天快照事实表,这两种快照表都可以从事务事实表汇总得到。另外的一种产出模式是直接使用操作型系统作为数据源来加工,例如淘宝卖家的星级评分是在操作型系统中计算得出的,仓库直接拿来这部分数据加入事实表。全量快照事实表,是特殊类型的周期快照表,例如设计无事实的事实表来记录评论的状态度量。

对于研究事件之间的时间间隔需求时,累计快照事实表能较好符合需求。
特点:
1.数据不断更新:例如,在下单、支付和确认收货三个业务过程中,事务事实表会生成3条记录,而累计快照表会不断更新一条记录(不生成新记录)。
2.多业务过程日期:
累计快照表适用于具有较明确起止时间的短生命周期的实体,对于每个实体都经历从诞生到消亡等步骤。
3.存储历史全量数据。

1.事件类的,例如浏览日志。
2.条件范围资格类的,例如客户和销售人员的分配情况。

主要是提前聚合,为了增加数据访问的效率(不用再聚合了),减少数据不一致的情况。这类聚集汇总数据,被称为“公共汇总层”。
聚集的基本步骤:1.确定聚集维度。2.确定一致性上钻。3.确定聚集事实。

元数据主要记录数据仓库中模型的定义、各层级间映射关系、监控数据仓库的数据状态及ETL任务的运行状态。元数据分为 技术元数据 业务元数据
阿里巴巴技术元数据包括:
数据表、列等信息;ETL作业的信息;数据同步、任务调度、计算任务等信息。数据质量和运维相关元数据。
阿里巴巴业务元数据包括:
维度属性、业务过程、指标等。数据应用元数据,例如数据报表、数据产品等。

元数据价值:
元数据在数据管理方面为集团数据在计算、存储、成本、质量、安全、模型等治理领域上提供数据支持。

阿里MaxCompute提供了archive压缩方法,采用了具有更高压缩比压缩算法,将数据以RAID file的形式存储。这样可以节省空间,但是恢复起来也更复杂,所以适用于冷备份的数据。

MaxCompute基于列存储,通过修改表的数据重分布,避免列热点,将会节省一定存储空间。

存储治理项以元数据为基础,列出例如“62天内未访问的分区”、“数据无更新的任务列表”等等管理项推动ETL优化。形成现状分析、问题诊断、管理优化、效果反馈的存储治理项优化的闭环。

生命周期管理的目的是用最少的存储成本来满足最大业务需求,实现数据价值最大化。
1.周期性删除策略:
2.彻底删除策略:主要针对无用表,ETL中间过程表。
3.永久保存策略:
4.极限存储策略:
5.冷数据管理策略:针对重要且访问频率低的数据。
6.增量表merge全量表策略:

将一个数据表的成本分为存储成本和计算成本,除此之外,上游表对该表的扫描成本也应该计入。相应的计费分别核算为:计算付费、存储付费和扫描付费。数据资产的成本管理分为数据成本计量和数据使用计费。

大数据学习之路

大数据从入门到入土

  语言基础:java(Java se,javaweb)

  Linux 基础:Linux(shell,高并发架构,lucene,solr)

  框架学习:Hadoop(Hadoop,HDFS,Mapreduce,yarn,hive,hbase,sqoop,zookeeper,flume)

  机器学习(R,mahout)

  Storm(Storm,kafka,redis)

  Spark(scala,spark,spark core,spark sql,spark streaming,spark mllib,spark graphx)

  Python(python,spark python)

  云计算平台(docker,kvm,openstack)

  名词解释

  对于小白学习大数据需要注意的点有很多,但无论如何,既然你选择了进入大数据行业,那么便只顾风雨兼程。正所谓不忘初心、方得始终,学习大数据你最需要的还是一颗持之以恒的心。

  一、Linux

  lucene: 全文检索引擎的架构

  solr: 基于lucene的全文搜索服务器,实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面。

  今天为大家整理了部分大数据学习教程与大家共享,每个人可以根据自己的需要来选择,需要的小伙伴可以+下学习资料分享裙 943加上064最后是644数字连起来就是了。

  二、Hadoop

  HDFS: 分布式存储系统,包含NameNode,DataNode。NameNode:元数据,DataNode。DataNode:存储数据。

  yarn: 可以理解为MapReduce的协调机制,本质就是Hadoop的处理分析机制,分为ResourceManager NodeManager。

  MapReduce: 软件框架,编写程序。

  Hive: 数据仓库 可以用SQL查询,可以运行Map/Reduce程序。用来计算趋势或者网站日志,不应用于实时查询,需要很长时间返回结果。

  HBase: 数据库。非常适合用来做大数据的实时查询。Facebook用Hbase存储消息数据并进行消息实时的分析

  ZooKeeper: 针对大型分布式的可靠性协调系统。Hadoop的分布式同步等靠Zookeeper实现,例如多个NameNode,active standby切换。

  Sqoop: 数据库相互转移,关系型数据库和HDFS相互转移

  Mahout: 可扩展的机器学习和数据挖掘库。用来做推荐挖掘,聚集,分类,频繁项集挖掘。

  Chukwa: 开源收集系统,监视大型分布式系统,建立在HDFS和Map/Reduce框架之上。显示、监视、分析结果。

  Ambari: 用于配置、管理和监视Hadoop集群,基于Web,界面友好。

  二、Cloudera

  Cloudera Manager: 管理 监控 诊断 集成

  Cloudera CDH:(Cloudera‘s Distribution,including Apache Hadoop) Cloudera对Hadoop做了相应的改变,发行版本称为CDH。

  Cloudera Flume: 日志收集系统,支持在日志系统中定制各类数据发送方,用来收集数据。

  Cloudera Impala: 对存储在Apache Hadoop的HDFS,HBase的数据提供直接查询互动的SQL。

  Cloudera hue: web管理器,包括hue ui,hui server,hui db。hue提供所有CDH组件的shell界面的接口,可以在hue编写mr。

  三、机器学习/R

  R: 用于统计分析、绘图的语言和操作环境,目前有Hadoop-R

  mahout: 提供可扩展的机器学习领域经典算法的实现,包括聚类、分类、推荐过滤、频繁子项挖掘等,且可通过Hadoop扩展到云中。

  四、storm

  Storm: 分布式,容错的实时流式计算系统,可以用作实时分析,在线机器学习,信息流处理,连续性计算,分布式RPC,实时处理消息并更新数据库。

  Kafka: 高吞吐量的分布式发布订阅消息系统,可以处理消费者规模的网站中的所有动作流数据(浏览,搜索等)。相对Hadoop的日志数据和离线分析,可以实现实时处理。目前通过Hadoop的并行加载机制来统一线上和离线的消息处理

  Redis: 由c语言编写,支持网络、可基于内存亦可持久化的日志型、key-value型数据库。

  五、Spark

  Scala: 一种类似java的完全面向对象的编程语言。

  jblas: 一个快速的线性代数库(JAVA)。基于BLAS与LAPACK,矩阵计算实际的行业标准,并使用先进的基础设施等所有的计算程序的ATLAS艺术的实现,使其非常快。

  Spark: Spark是在Scala语言中实现的类似于Hadoop MapReduce的通用并行框架,除了Hadoop MapReduce所具有的优点,但不同于MapReduce的是job中间输出结果可以保存在内存中,从而不需要读写HDFS,因此Spark能更好的适用于数据挖掘与机器学习等需要迭代的MapReduce算法。可以和Hadoop文件系统并行运作,用过Mesos的第三方集群框架可以支持此行为。

  Spark SQL: 作为Apache Spark大数据框架的一部分,可用于结构化数据处理并可以执行类似SQL的Spark数据查询

  Spark Streaming:一种构建在Spark上的实时计算框架,扩展了Spark处理大数据流式数据的能力。

  Spark MLlib: MLlib是Spark是常用的机器学习算法的实现库,目前(2014.05)支持二元分类,回归,聚类以及协同过滤。同时也包括一个底层的梯度下降优化基础算法。MLlib以来jblas线性代数库,jblas本身以来远程的Fortran程序。

  Spark GraphX: GraphX是Spark中用于图和图并行计算的API,可以在Spark之上提供一站式数据解决方案,可以方便且高效地完成图计算的一整套流水作业。

  Fortran: 最早出现的计算机高级程序设计语言,广泛应用于科学和工程计算领域。

  BLAS: 基础线性代数子程序库,拥有大量已经编写好的关于线性代数运算的程序。

  LAPACK: 著名的公开软件,包含了求解科学与工程计算中最常见的数值线性代数问题,如求解线性方程组、线性最小二乘问题、特征值问题和奇异值问题等。

  ATLAS: BLAS线性算法库的优化版本。

  Spark Python: Spark是由scala语言编写的,但是为了推广和兼容,提供了java和python接口。

  六、Python

  Python: 一种面向对象的、解释型计算机程序设计语言。

  七、云计算平台

  Docker: 开源的应用容器引擎

  kvm: (Keyboard Video Mouse)

  openstack: 开源的云计算管理平台项目

  以上就是个人关于大数据的学习心得和路线推荐。本片文章对大数据技术栈做了比较狭义的限定,随着学习的深入,大家也可以把 Python 语言、推荐系统、机器学习等逐步加入到自己的大数据技术栈中。

以上是关于大数据之路的主要内容,如果未能解决你的问题,请参考以下文章

入门大数据领域需要哪些技能|大数据工程师学习之路

大数据学习之路(跟着大神学习一波)

大数据分析学习之路

大数据之学习之路

大数据架构师之路如何养成?

大数据之路阿里巴巴实践