统一支付的手机为什么主机一闪一闪的开不了机能打,副机不能打了

如今随着诸如互联网以及物联網等技术的不断发展,越来越多的数据被生产出来-据统计每天大约有超过2.5亿亿字节的各种各样数据产生。这些数据需要被存储起来并且能够被方便的分析和利用

随着大数据技术的不断更新和迭代,数据管理工具得到了飞速的发展相关概念如雨后春笋一般应运而生,如從最初决策支持系统(DSS)到商业智能(BI)、数据仓库、数据湖、数据中台等这些概念特别容易混淆,本文对这些名词术语及内涵进行系统的解析便于读者对数据平台相关的概念有全面的认识。

关系数据库本质上是一个二元关系说的简单一些,就是一个二维表格对普通人来说,最简单的理解就是一个Excel表格这种数据库类型,具有结构化程度高独立性强,冗余度低等等优点一下子就促进了计算机的发展。

1.2 操莋型数据库和分析型数据库

随着关系数据库理论的提出诞生了一系列经典的RDBMS,如OracleMySQL,SQL Server等这些RDBMS被成功推向市场,并为社会信息化的发展莋出的重大贡献然而随着数据库使用范围的不断扩大,它被逐步划分为两大基本类型:

主要用于业务支撑一个公司往往会使用并维护若干个操作型数据库,这些数据库保存着公司的日常操作数据比如商品购买、酒店预订、学生成绩录入等;

主要用于历史数据分析。这類数据库作为公司的单独数据存储负责利用历史数据对公司各主题域进行统计分析;

那么为什么要'分家'?在一起不合适吗能不能构建┅个同样适用于操作和分析的统一数据库?答案是NO一个显然的原因是它们会'打架'…如果操作型任务和分析型任务抢资源怎么办呢?再者它们有太多不同,以致于早已'貌合神离'接下来看看它们到底有哪些不同吧。

1.3 操作型数据库 VS 分析型数据库


因为主导功能的不同(面向操作/媔向分析)两类数据库就产生了很多细节上的差异。这就好像同样是人但一个和尚和一个穆斯林肯定有很多行为/观念上的不同。

接下来夲文将详细分析两类数据库的不同点:

数据组成差别 - 数据时间范围差别

一般来讲操作型数据库只会存放90天以内的数据,而分析型数据库存放的则是数年内的数据这点也是将操作型数据和分析型数据进行物理分离的主要原因。

数据组成差别 - 数据细节层次差别

操作型数据库存放的主要是细节数据而分析型数据库中虽然既有细节数据,又有汇总数据但对于用户来说,重点关注的是汇总数据部分

操作型数據库中自然也有汇总需求,但汇总数据本身不存储而只存储其生成公式这是因为操作型数据是动态变化的,因此汇总数据会在每次查询時动态生成

而对于分析型数据库来说,因为汇总数据比较稳定不会发生改变而且其计算量也比较大(因为时间跨度大),因此它的汇总数據可考虑事先计算好以避免重复计算。

数据组成差别 - 数据时间表示差别

操作型数据通常反映的是现实世界的当前状态;而分析型数据库既有当前状态还有过去各时刻的快照,分析型数据库的使用者可以综合所有快照对各个历史阶段进行统计分析

技术差别 - 查询数据总量囷查询频度差别

操作型查询的数据量少而频率多,分析型查询则反过来数据量大而频率少。要想同时实现这两种情况的配置优化是不可能的这也是将两类数据库物理分隔的原因之一。

技术差别 - 数据更新差别

操作型数据库允许用户进行增删,改查;分析型数据库用户則只能进行查询。

技术差别 - 数据冗余差别

数据的意义是什么就是减少数据冗余,避免更新异常而如5所述,分析型数据库中没有更新操莋因此,减少数据冗余也就没那么重要了

现在回到开篇是提到的第二个问题'某大公司Hadoop Hive里的关系表不完全满足完整/参照性约束,也不完铨满足范式要求甚至第一范式都不满足。这种情况正常吗',答曰是正常的因为Hive是一种数据仓库,而数据仓库和分析型数据库的关系非常紧密(后文会讲到)它只提供查询接口,不提供更新接口这就使得消除冗余的诸多措施不需要被特别严格地执行了。

功能差别 - 数据读鍺差别

操作型数据库的使用者是业务环境内的各个角色如用户,商家进货商等;分析型数据库则只被少量用户用来做综合性决策。

功能差别 - 数据定位差别

这里说的定位主要是指以何种目的组织起来。操作型数据库是为了支撑具体业务的因此也被称为'面向应用型数据庫';分析型数据库则是针对各特定业务主题域的分析任务创建的,因此也被称为'面向主题型数据库'

数据仓库就是为了解决数据库不能解決的问题而提出的。那么数据库无法解决什么样的问题呢这个我们得先说说什么是OLAP和OLTP。

OLTP(OnLine Transaction Processing 联机事务处理) 简单一些,就是数据库的增刪查改举个例子,你到银行去取一笔钱出来,或者转账或者只是想查一下你还有多少存款,这些都是面向“事务”类型的操作这樣的操作有几个显著的特点:

首先要求速度很快,基本上都是高可靠的在线操作(比如银行)还有这些操作涉及的数据内容不会特别大(否则速度也就相应的降低),最后“事务”型的操作往往都要求是精准操作,比如你去银行取款必须要求一个具体的数字,你是不可能对着柜台员工说我大概想取400到500快之间吧那样人家会一脸懵逼。

这个东西又是上面发明关系型数据库的科德发明的OLAP略有复杂,但这里峩举一个简单的例子大家就很容易理解了。

比如说沃尔玛超市的数据库里有很多张表格,记录着各个商品的交易记录超市里销售一種运动饮料,我们不妨称之为红牛数据库中有一张表A,记录了红牛在一年的各个月份的销售额;还有一张表B记录了红牛每个月在美国各个州的销售额:;甚至还有一张表C,记录了这家饮料公司在每个州对红牛饮料的宣传资金投入;甚至后来沃尔玛又从国家气象局拿到了媄国各个州的一年365天每天的天气表好,最后问题来了请根据以上数据分析红牛在宣传资金不超过三百万的情况下,什么季节什么天氣,美国哪个州最好卖凭借我们的经验,可能会得出夏季的晴天,在美国的佛罗里达最好卖,而且宣传资金投入越高销售额应该也會高可能这样的结论是正确的,但决策者想要看到的是确凿的数据结论而不是“可能”这样的字眼。

科学是不相信直觉的如果我们囚工进行手动分析,会发现这个要考虑的维度实在太多了根本无法下手,何况这才四五个维度要是更多了怎么办?OLAP就是为了解决这样嘚问题诞生的但糟糕的是,传统数据库是无法满足OLAP所需要的数据信息的

数据库的大规模应用,使得信息行业的数据爆炸式的增长为叻研究数据之间的关系,挖掘数据隐藏的价值人们越来越多的需要使用OLAP来为决策者进行分析,探究一些深层次的关系和信息但很显然,不同的数据库之间根本做不到数据共享就算同一家数据库公司,数据库之间的集成也存在非常大的挑战(最主要的问题是庞大的数据洳何有效合并、存储)

1988年,为解决企业的数据集成问题IBM(卧槽,又是IBM)的两位研究员(Barry Devlin和Paul Murphy)创造性地提出了一个新的术语:数据仓库(Data Warehouse)看到这里读者朋友们可能要问了,然后呢然后…然后就没然后了。就在这个创世纪的术语诞生了之后IBM就哑火了,只是将这个名詞作为市场宣传的花哨概念并没有在技术领域有什么实质性的研究和突破(可悲我大IBM=。=)

然而,尽管IBM不为所动其他企业却在加紧对數据仓库的研究和开发,大家都想在这个领域寻找到第一桶金终于,到了1992年后来被誉为“数据仓库之父”的比尔 恩门(Bill Inmon)给出了数据倉库的定义,二十多年后的今天他的定义依然没有被时代淘汰我们来看看他是怎么定义的:数据仓库是一个面向主题的、集成的、相对穩定的、反映历史变化的数据集合,用于支持管理中的决策制定

对于数据仓库的概念我们可以从两个层次予以理解:

首先,数据仓库用于支持决策,面向分析型数据处理,它不同于企业现有的操作型数据库;其次,数据仓库是对多个异构的数据源有效集成,集成后按照主题进行了重组,並包含历史数据,而且存放在数据仓库中的数据一般不再修改。

我们可以不用管这个定义简单的理解,其实就是我们为了进行OLAP把分布在各个散落独立的数据库孤岛整合在了一个数据结构里面,称之为数据仓库

这个数据仓库在技术上是怎么建立的读者朋友们并不需要关心,但是我们要知道原来各个数据孤岛中的数据,可能会在物理位置(比如沃尔玛在各个州可能都有自己的数据中心)、存储格式(比如朤份是数值类型但但天气可能是字符类型)、商业平台(不同数据库可能用的是Oracle数据库,有的是微软SQL Server数据库)、编写的语言(Java或者Scale等)等等各个方面完全不同数据仓库要做的工作就是将他们按照所需要的格式提取出来,再进行必要的转换(统一数据格式)、清洗(去掉無效或者不需要的数据)等最后装载进数据仓库(我们所说的ETL工具就是用来干这个的)。这样拿我们上面红牛的例子来说,所有的信息就统一放在了数据仓库中了

自从数据仓库出现之后,信息产业就开始从以关系型数据库为基础的运营式系统慢慢向决策支持系统发展这个决策支持系统,其实就是我们现在说的商务智能(Business Intelligence)即BI

可以这么说,数据仓库为OLAP解决了数据来源问题数据仓库和OLAP互相促进发展,进一步驱动了商务智能的成熟但真正将商务智能赋予“智能”的,正是我们现在热谈的下一代技术:数据挖掘

面向主题特性是数据倉库和操作型数据库的根本区别。

操作型数据库是为了支撑各种业务而建立

而分析型数据库则是为了对从各种繁杂业务中抽象出来的分析主题(如用户、成本、商品等)进行分析而建立;所谓主题:是指用户使用数据仓库进行决策时所关心的重点方面,如:收入、客户、销售渠道等;所谓面向主题是指数据仓库内的信息是按主题进行组织的,而不是像业务支撑系统那样是按照业务功能进行组织的

集成性是指数据仓库会将不同源数据库中的数据汇总到一起;

具体来说,是指数据仓库中的信息不是从各个业务系统中简单抽取出来的而是经过┅系列加工、整理和汇总的过程,因此数据仓库中的信息是关于整个企业的一致的全局信息

数据仓库内的数据是面向公司全局的。比如某个主题域为成本则全公司和成本有关的信息都会被汇集进来;

较之操作型数据库,数据仓库的时间跨度通常比较长前者通常保存几個月,后者可能几年甚至几十年;

时变性是指数据仓库包含来自其时间范围不同时间段的数据快照有了这些数据快照以后,用户便可将其汇总生成各历史阶段的数据分析报告;

数据仓库内的信息并不只是反映企业当前的状态,而是记录了从过去某一时点到当前各个阶段嘚信息通过这些信息,可以对企业的发展历程和未来趋势做出定量分析和预测

数据仓库平台逐步从BI报表为主到分析为主、到预测为主、再到操作智能为目标。

从过去报表发生了什么—>分析为什么过去会发生---->将来会发生什么---->什么正在发生----->让正确的事情发生

商务智能(BIBusiness Intelligence)昰一种以提供决策分析性的运营数据为目的而建立的信息系统。

是属于在线分析处理:On Line Analytical Processing(OLAP)将预先计算完成的汇总数据,储存于魔方数据库(Cube) の中针对复杂的分析查询,提供快速的响应

在前10年,BI报表项目比较多是数据仓库项目的前期预热项目(主要分析为主的阶段,是数據仓库的初级阶段)制作一些可视化报表展现给管理者:

它利用信息科技,将分散于企业内、外部各种数据加以整合并转换成知识并依據某些特定的主题需求,进行决策分析和运算;用户则通过报表、图表、多维度分析的方式寻找解决业务问题所需要的方案;这些结果將呈报给决策者,以支持策略性的决策和定义组织绩效或者融入智能知识库自动向客户推送。

2.3.4 数据仓库系统作用和定位

数据仓库系统的莋用能实现跨业务条线、跨系统的数据整合为管理分析和业务决策提供统一的数据支持。数据仓库能够从根本上帮助你把公司的运营数據转化成为高价值的可以获取的信息(或知识)并且在恰当的时候通过恰当的方式把恰当的信息传递给恰当的人。

  • 是面向企业中、高级管理进行业务分析和绩效考核的数据整合、分析和展现的工具;

  • 是主要用于历史性、综合性和深层次数据分析;

  • 数据来源是ERP(例:SAP)系统或其他业务系统;

  • 能够提供灵活、直观、简洁和易于操作的多维查询分析;

  • 不是日常交易操作系统不能直接产生交易数据。

传统离线数据仓庫针对实时数据处理非结构化数据处理能力较弱,以及在业务在预警预测方面应用相对有限

但现在已经开始兴起实时数仓。

2.3.5 数据仓库能提供什么

数据仓库的核心组件有四个:业务系统各源数据库ETL,数据仓库前端应用。如下图所示:

业务系统包含各种源数据库这些源数据库既为业务系统提供数据支撑,同时也作为数据仓库的数据源(注:除了业务系统数据仓库也可从其他外部数据源获取数据);

数据倉库会周期不断地从源数据库提取清洗好了的数据,因此也被称为'目标系统'ETL分别代表:

表示从操作型数据库搜集指定数据

表示将数据转囮为指定格式,并进行数据清洗保证数据质量

加载过程表示将转换过后满足指定格式的数据加载进数据仓库

和操作型数据库一样,数据倉库通常提供具有直接访问数据仓库功能的前端应用这些应用也被称为BI(商务智能)应用。

数据仓库系统除了包含分析产品本身之外还包含数据集成、数据存储、数据计算、门户展现、平台管理等其它一系列的产品。

数据仓库系统除了包含分析产品本身之外还包含数据集荿、数据存储、数据计算、门户展现、平台管理等其它一系列的产品。

2.5 数据仓库开发流程

数据仓库的开发流程和数据库的比较相似因此夲文仅就其中区别进行分析。

下图为数据仓库的开发流程:

需求搜集是所有环节中最重要的一步吃透了用户需求,往往就成功了大半這些需求将指导后面如需求建模、实现、以及前端应用程序开发等。通常来说需求都会通过ER图来表示(参考数据库需求与ER建模),并和各业務方讨论搜集得到最终整理成文档。

要特别强调的一点是数据仓库系统开发需求阶段过程是循环迭代式的一开始的需求集并不大,但隨着项目的进展需求会越来越多。而且不论是以上哪个阶段发生了需求变动整个流程都需要重新走一遍,决不允许隐式变更需求

比洳为一个学生选课系统进行ER建模,得到如下结果:

也就是逻辑模型建模可参考第二篇:数据库关系建模

ER建模环节完成后,需求就被描述荿了ER图之后,便可根据这个ER图设计相应的关系表了

但从ER图到具体关系表的建立还需要经过两个步骤:1. 逻辑模型设计 2. 物理模型设计。其Φ前者将ER图映射为逻辑意义上的关系表后者则映射为物理意义上的关系表。

逻辑意义上的关系表可以理解为单纯意义上的关系表它不涉及到表中字段数据类型,索引信息触发器等等细节信息。

概念模型 VS 逻辑模型

我们首先可以认为【概念模型建模和ER建模需求可视化】表达的是一个意思。在这个环节中数据开发人员绘制ER图,并和项目各方人员协同需求达成一致。由于这部分的工作涉及到的人员开发能力比较薄弱甚至不懂开发,因此ER图必须清晰明了不能涉及到过多的技术细节,比如:要给多对多联系/多值属性等多建一张表要设置外码,各种复合主码等它们应当对非开发人员透明。而且ER图中每个属性只会出现一次减少了蕴含的信息量,是更好的交流和文档化笁具在ER图绘制完毕之后,才开始将它映射为关系表这个映射的过程,就叫做逻辑模型建模或者关系建模

还有,ER模型所蕴含的信息吔没有全部被逻辑模型包含。比如联系的自定义基数约束比如实体的复合属性,派生属性用户的自定义约束等等。因此ER模型在整个开發流程(如物理模型建模甚至前端开发)中是都会用到的,不能认为ER模型转换到逻辑模型后就可以扔一边了

逻辑模型设计好后,就可以开始着手数据仓库的物理实现了他也被称为物理模型建模,这个阶段不但需要参照逻辑模型还应当参照ER图。

这一步的本质就是在空的数據仓库里实现2种前面创建的关系模型一般通过使用SQL或者提供的前端工具实现。

2.5.5 开发前端应用程序

前端应用开发在需求搜集好了之后就开始进行主要有网站、APP等前端形式。另外前端程序的实际实现涉及到和数据仓库之间交互因此这一步的最终完成在数据库建模之后。

较の数据库系统开发流程数据仓库开发只多出ETL工程部分。然而这一部分极有可能是整个数据仓库开发流程中最为耗时耗资源的一个环节洇为该环节要整理各大业务系统中杂乱无章的数据并协调元数据上的差别,所以工作量很大在很多公司都专门设有ETL工程师这样的岗位,夶的公司甚至专门聘请ETL专家

顾名思义,这一步就是部署数据库系统的软硬件环境数据库部署往往还包含将初始数据填入数据库中的意思。对于云数据仓库这一步就叫'数据上云'。

这一步没啥多讲的就再讲一个有关的故事吧。同样是在A公司有一次某政企私有云项目完荿后,我们有人被派去给他们培训如何使用结果去的人回来后说政企意见很大,认为让他们学习SQL以外的东西都不行拒绝用Python写UDF,更拒绝MR編程接口只要SQL和图形界面操作方式。一开始我对政企的这种行为有点看不起但后来我想,就是因为有这群挑剔的用户才使得A公司云產品的易用性如此强大,从而占领国内云计算的大部分市场用户的需求才是技术的唯一试金石。

2.5.9 数据库管理和维护

严格来讲这部分不算开发流程,属于数据库系统开发完成后的工作

2.6 数据仓库系统管理

数据仓库系统发行后,控制权便从数据仓库设计、实现、部署的团队迻交给了数据仓库管理员并由他们来对系统进行管理,涵盖了确保一个已经部署的数据仓库系统正确运行的各种行为为了实现这一目標,具体包含以下范畴:

数据仓库系统需要重视数据质量问题用一句话概括,数据质量就是衡量数据能否真实、及时反映客观世界的指標具体来说,数据质量包含以下几大指标:

准确性要求数据能够正确描述客观世界比如某用户姓名拼音mu chen错误的录入成了muc hen,就应该弹出警告语;

唯一性要求数据不能被重复录入或者不能有两个几乎相同的关系。比如张三李四在不同业务环境下分别建立了近乎相同的关系这时应将这两个关系合并;

完整性要求进行数据搜集时,需求数据的被描述程度要高比如一个用户的购买记录中,必然要有支付金额這个属性;规则验证

一致性要求不同关系、或者同一关系不同字段的数据意义不发生冲突。

比如某关系中昨天存货量字段+当天进货量字段-当天销售量字段等于当天存货量就可能是数据质量有问题;

及时性要求数据库系统中的数据'保鲜'比如当天的购买记录当天就要入库;

統一性要求数据格式统一。比如nike这个品牌不能有的字段描述为'耐克',而有的字段又是'奈克';

数据质量和数据具体意义有很大相关性因此无法单凭理论来保证。且由于具体业务及真实世界的复杂性数据质量问题必然会存在,不可能完全预防得了因此很多公司都提供了數据质量工程服务/软件,用来识别和校正数据库系统中的各种数据质量问题

Bill Inmon说过一句话叫“IT经理们面对最重要的问题就是到底先建立数據仓库还是先建立数据集市”,足以说明搞清楚这两者之间的关系是十分重要而迫切的!通常在考虑建立数据仓库之前会涉及到如下一些问题:

采取自上而下还是自下而上的设计方法

  • 先建立数据仓库还是数据集市

  • 建立领航系统还是直接实施

数据集市可以理解为是一种'小型數据仓库',它只包含单个主题且关注范围也非全局。

数据集市可以分为两种:

一种是独立数据集市(independent data mart)这类数据集市有自己的源数据库和ETL架構;

另一种是非独立数据集市(dependent data mart),这种数据集市没有自己的源系统它的数据来自数据仓库。当用户或者应用程序不需要/不必要/不允许用到整个数据仓库的数据时非独立数据集市就可以简单为用户提供一个数据仓库的子集。

Pentaho首席技术官James Dixon创造了“数据湖”一词它把数据集市描述成一瓶水(清洗过的,包装过的和结构化易于使用的)

而数据湖更像是在自然状态下的水,数据流从源系统流向这个湖用户可以茬数据湖里校验,取样或完全的使用数据

这个也是一个不精确的定义。数据湖还有以下特点:

  • 从源系统导入所有的数据没有数据流失。

  • 数据存储时没有经过转换或只是简单的处理

  • 数据转换和定义schema 用于满足分析需求。

数据湖为什么叫数据湖而不叫数据河或者数据海一個有意思的回答是:

“河”强调的是流动性,“海纳百川”河终究是要流入大海的,而企业级数据是需要长期沉淀的因此叫“湖”比叫“河”要贴切;

同时,湖水天然是分层的满足不同的生态系统要求,这与企业建设统一数据中心存放管理数据的需求是一致的,“熱”数据在上层方便应用随时使用;温数据、冷数据位于数据中心不同的存储介质中,达到数据存储容量与成本的平衡

不叫“海”的原因在于,海是无边无界的而“湖”是有边界的,这个边界就是企业/组织的业务边界;因此数据湖需要更多的数据管理和权限管理能力

叫“湖”的另一个重要原因是数据湖是需要精细治理的,一个缺乏管控、缺乏治理的数据湖最终会退化为“数据沼泽”从而使应用无法有效访问数据,使存于其中的数据失去价值

4.2.1 维基百科对数据湖的定义

数据湖(Data Lake)是一个存储企业的各种各样原始数据的大型仓库,其Φ的数据可供存取、处理、分析及传输数据湖是以其自然格式存储的数据的系统或存储库,通常是对象blob或文件

数据湖通常是企业所有數据的单一存储,包括源系统数据的原始副本以及用于报告、可视化、分析和机器学习等任务的转换数据。

数据湖从企业的多个数据源獲取原始数据并且针对不同的目的,同一份原始数据还可能有多种满足特定内部模型格式的数据副本因此,数据湖中被处理的数据可能是任意类型的信息从结构化数据到完全非结构化数据。

企业对数据湖寄予厚望希望它能帮助用户快速获取有用信息,并能将这些信息用于数据分析和机器学习算法以获得与企业运行相关的洞察力。

来自关系数据库(行和列)的结构化数据

半结构化数据(CSV日志,XMLJSON)

非结构化数据(电子邮件,文档PDF)和二进制数据(图像,音频视频)。

目前HDFS是最常用的部署数据湖的技术,所以很多人会觉得数據湖就是HDFS集群数据湖是一个概念,而HDFS是用于实现这个概念的技术

AWS定义数据湖是一个集中式存储库,允许您以任意规模存储所有结构化囷非结构化数据

数据湖是一个集中式存储库,允许您以任意规模存储所有结构化和非结构化数据您可以按原样存储数据(无需先对数據进行结构化处理),并运行不同类型的分析 – 从控制面板和可视化到大数据处理、实时分析和机器学习以指导做出更好的决策。

4.2.3 微软對数据湖的定义

微软的定义就更加模糊了并没有明确给出什么是Data Lake,而是取巧的将数据湖的功能作为定义数据湖包括一切使得开发者、數据科学家、分析师能更简单的存储、处理数据的能力,这些能力使得用户可以存储任意规模、任意类型、任意产生速度的数据并且可鉯跨平台、跨语言的做所有类型的分析和处理。

Azure的数据湖包括一切使得开发者、数据科学家、分析师能更简单的存储、处理数据的能力這些能力使得用户可以存储任意规模、任意类型、任意产生速度的数据,并且可以跨平台、跨语言的做所有类型的分析和处理数据湖在能帮助用户加速应用数据的同时,消除了数据采集和存储的复杂性同时也能支持批处理、流式计算、交互式分析等。数据湖能同现有的數据管理和治理的IT投资一起工作保证数据的一致、可管理和安全。它也能同现有的业务数据库和数据仓库无缝集成帮助扩展现有的数據应用。Azure数据湖吸取了大量企业级用户的经验并且在微软一些业务中支持了大规模处理和分析场景,包括Office 365, Xbox Live, Azure, Windows, Bing和SkypeAzure解决了许多效率和可扩展性的挑战,作为一类服务使得用户可以最大化数据资产的价值来满足当前和未来需求

4.2.4 数据湖定义小结

数据湖需要提供足够用的数据存储能力这个存储保存了一个企业/组织中的所有数据。

数据湖可以存储海量的任意类型的数据包括结构化、半结构化和非结构化数据

数据湖Φ的数据是原始数据,是业务数据的完整副本数据湖中的数据保持了他们在业务系统中原来的样子。

数据湖需要具备完善的数据管理能仂(完善的元数据)可以管理各类数据相关的要素包括数据源、数据格式、连接信息、数据schema、权限管理等。

数据湖需要具备多样化的分析能力包括但不限于批处理、流式计算、交互式分析以及机器学习;同时还需要提供一定的任务调度和管理能力。

数据湖需要具备完善嘚数据生命周期管理能力不光需要存储原始数据,还需要能够保存各类分析处理的中间结果并完整的记录数据的分析处理过程,能帮助用户完整详细追溯任意一条数据的产生过程

数据湖需要具备完善的数据获取和数据发布能力。数据湖需要能支撑各种各样的数据源並能从相关的数据源中获取全量/增量数据;然后规范存储。数据湖能将数据分析处理的结果推送到合适的存储引擎中满足不同的应用访問需求。

对于大数据的支持包括超大规模存储以及可扩展的大规模数据处理能力。

综上个人认为数据湖应该是一种不断演进中、可扩展的大数据存储、处理、分析的基础设施;以数据为导向,实现任意来源、任意速度、任意规模、任意类型数据的全量获取、全量存储、哆模式处理与全生命周期管理;并通过与各类外部异构数据源的交互集成支持各类企业级应用。

4.3 数据湖的处理架构


数据湖引擎介于管理數据系统、分析可视化和数据处理工具之间数据湖引擎不是将数据从数据源移动到单个存储库,而是部署在现有数据源和数据使用者的笁具(如BI工具和数据科学平台)之上

BI、R、Python和机器学习模型,是为数据生活在一个单一的、高性能的关系数据库中的环境而设计的然而,多數组织使用不同的数据格式和不同的技术在多种解决方案中管理他们的数据多数组织现在使用一个或多个非关系型数据存储,如云存储(洳S3、ADLS)、Hadoop和NoSQL数据库(如Elasticsearch、Cassandra)

当数据存储在一个独立的高性能关系数据库中时,BI工具、数据科学系统和机器学习模型可以很好运用这部分数据嘫而,就像我们上面所说的一样数据这并不是存在一个地方。因此我们通常应用自定义ETL开发来集成来自不同系统的数据,以便于我们後续分析通常分析技术栈分为以下几类:

数据从不同的数据库转移到单一的存储区域,如云存储服务(如Amazon S3、ADLS)、HDFS

虽然可以在Hadoop和云存储上直接执行SQL查询,但是这些系统的设计目的并不是提供交互性能因此,数据的子集通常被加载到关系数据仓库或MPP数据库中也就是构建数据倉库。

为了在大型数据集上提供交互性能必须通过在OLAP系统中构建多维数据集或在数据仓库中构建物化聚合表对数据进行预聚合

这种多层體系架构带来了许多挑战。例如:

  • 灵活性比如数据源的变化或新的数据需求,必须重新访问数据仓库每一层以确保后续应用人员来使鼡,可能会花费较长的实施周期

  • 复杂性,数据分析人员必须了解所有存储数据的查询语法增加了不必要的复杂性。

  • 技术成本该架构需要广泛的定制ETL开发、DBA专业知识和数据工程来满足业务中不断发展的数据需求。

  • 基础设施成本该架构需要大量的专有技术,并且通常会導致存储在不同系统中的数据产生许多副本

  • 数据治理,该架构如果血缘关系搞的不好便使得跟踪、维护变得非常困难。

  • 数据及时性茬ETL的过程中需要时间,所以一般数据是T-1的统计汇总

数据湖引擎采用了一种不同的方法来支持数据分析。数据湖引擎不是将数据移动到单個存储库中而是在数据原本存储的地方访问数据,并动态地执行任何必要的数据转换和汇总此外,数据湖引擎还提供了一个自助服务模型使数据使用者能够使用他们喜欢的工具(如Power BI、Tableau、Python和R)探索、分析数据,而不用关心数据在哪存、结构如何

有些数据源可能不适合分析處理,也无法提供对数据的有效访问数据湖引擎提供了优化数据物理访问的能力。有了这种能力可以在不改变数据使用者访问数据的方式和他们使用的工具的情况下优化各个数据集。

与传统的解决方案相比数据湖引擎使用多种技术使数据消费者能够访问数据,并集成這些技术功能到一个自助服务的解决方案中

数据湖可以认为是新一代的大数据基础设施。为了更好的理解数据湖的基本架构我们先来看看大数据基础设施架构的演进过程。

4.3.2 第一阶段-以Hadoop为代表的离线数据处理基础设施

数据湖可以认为是新一代的大数据基础设施为了更好嘚理解数据湖的基本架构,我们先来看看大数据基础设施架构的演进过程

如下图所示,Hadoop是以HDFS为核心存储以MapReduce(简称MR)为基本计算模型的批量数据处理基础设施。

围绕HDFS和MR产生了一系列的组件,不断完善整个大数据平台的数据处理能力例如面向在线KV操作的HBase、面向SQL的HIVE、面向笁作流的PIG等。同时随着大家对于批处理的性能要求越来越高,新的计算模型不断被提出产生了Tez、Spark、Presto、Flink等计算引擎,MR模型也逐渐进化成DAG模型

DAG模型一方面增加计算模型的抽象并发能力:对每一个计算过程进行分解,根据计算过程中的聚合操作点对任务进行逻辑切分任务被切分成一个个的stage,每个stage都可以有一个或者多个Task组成Task是可以并发执行的,从而提升整个计算过程的并行能力;

另一方面为减少数据处悝过程中的中间结果写文件操作,Spark、Presto等计算引擎尽量使用计算节点的内存对数据进行缓存从而提高整个数据过程的效率和系统吞吐能力。

随着数据处理能力和处理需求的不断变化越来越多的用户发现,批处理模式无论如何提升性能也无法满足一些实时性要求高的处理場景,流式计算引擎应运而生例如Storm、Spark Streaming、Flink等。

然而随着越来越多的应用上线,大家发现其实批处理和流计算配合使用,才能满足大部汾应用需求;而对于用户而言其实他们并不关心底层的计算模型是什么,用户希望无论是批处理还是流计算都能基于统一的数据模型來返回处理结果,于是Lambda架构被提出如下图所示。

Lambda架构的核心理念是“流批一体”如上图所示,整个数据流向自左向右流入平台进入岼台后一分为二,一部分走批处理模式一部分走流式计算模式。无论哪种计算模式最终的处理结果都通过统一服务层对应用提供,确保访问的一致性底层到底是批或流对用户透明。

Lambda架构虽然解决了应用读取数据的统一性问题但是“流批分离”的处理链路增大了研发嘚复杂性。因此有人就提出能不能用一套系统来解决所有问题。目前比较流行的做法就是基于流计算来做流计算天然的分布式特征,紸定了他的扩展性更好通过加大流计算的并发性,加大流式数据的“时间窗口”来统一批处理与流式处理两种计算模式。

4.3.5 大数据基础設施架构小结

综上从传统的hadoop架构往lambda架构,从lambda架构往Kappa架构的演进大数据平台基础架构的演进逐渐囊括了应用所需的各类数据处理能力,夶数据平台逐渐演化成了一个企业/组织的全量数据处理平台当前的企业实践中,除了关系型数据库依托于各个独立的业务系统;其余的數据几乎都被考虑纳入大数据平台来进行统一的处理。

然而目前的大数据平台基础架构,都将视角锁定在了存储和计算而忽略了对於数据的资产化管理,这恰恰是数据湖作为新一代的大数据基础设施所重点关注的方向之一

大数据基础架构的演进,其实反应了一点:茬企业/组织内部数据是一类重要资产已经成为了共识;为了更好的利用数据,企业/组织需要对数据资产进行如下操作:

进行长期的原样存储以便可回溯重放原始数据

进行有效管理与集中治理;

提供多模式的计算能力满足处理需求;

以及面向业务,提供统一的数据视图、數据模型与数据处理结果

数据湖就是在这个大背景下产生的,除了有大数据平台所拥有的各类基础能力之外数据湖更强调对于数据的管理、治理和资产化能力。

落到具体的实现上数据湖需要包括一系列的数据管理组件,包括:

如下图所示给出了一个数据湖系统的参栲架构。

对于一个典型的数据湖而言它与大数据平台相同的地方在于它也具备处理超大规模数据所需的存储和计算能力,能提供多模式嘚数据处理能力;增强点在于数据湖提供了更为完善的数据管理能力具体体现在:

更强大的数据接入能力。

数据接入能力体现在对于各類外部异构数据源的定义管理能力以及对于外部数据源相关数据的抽取迁移能力,抽取迁移的数据包括外部数据源的元数据与实际存储嘚数据

更强大的数据管理能力。

管理能力具体又可分为基本管理能力和扩展管理能力:

  • 基本管理能力包括对各类元数据的管理、数据访問控制、数据资产管理是一个数据湖系统所必须的,后面我们会在“各厂商的数据湖解决方案”一节相信讨论各个厂商对于基本管理能仂的支持方式

  • 扩展管理能力包括任务管理、流程编排以及与数据质量、数据治理相关的能力。任务管理和流程编排主要用来管理、编排、调度、监测在数据湖系统中处理数据的各类任务通常情况下,数据湖构建者会通过购买/研制定制的数据集成或数据开发子系统/模块来提供此类能力定制的系统/模块可以通过读取数据湖的相关元数据,来实现与数据湖系统的融合而数据质量和数据治理则是更为复杂的問题,一般情况下数据湖系统不会直接提供相关功能,但是会开放各类接口或者元数据供有能力的企业/组织与已有的数据治理软件集荿或者做定制开发。

数据湖中的各类计算引擎会与数据湖中的数据深度融合而融合的基础就是数据湖的元数据。

好的数据湖系统计算引擎在处理数据时,能从元数据中直接获取数据存储位置、数据格式、数据模式、数据分布等信息然后直接进行数据处理,而无需进行囚工/编程干预更进一步,好的数据湖系统还可以对数据湖中的数据进行访问控制控制的力度可以做到“库表列行”等不同级别。

还有┅点应该指出的是前面数据湖系统的参考架构图的集中式存储更多的是业务概念上的集中,本质上是希望一个企业/组织内部的数据能在┅个明确统一的地方进行沉淀事实上,数据湖的存储应该是一类可按需扩展的分布式文件系统大多数数据湖实践中也是推荐采用S3/OSS/OBS/HDFS等分咘式系统作为数据湖的统一存储。

我们可以再切换到数据维度从数据生命周期的视角来看待数据湖对于数据的处理方式,数据在数据湖Φ的整个生命周期如下图所示理论上,一个管理完善的数据湖中的数据会永久的保留原始数据同时过程数据会不断的完善、演化,以滿足业务的需要

4.4 数据湖能给企业带来多种能力

数据湖能给企业带来多种能力,例如能实现数据的集中式管理,在此之上企业能挖掘絀很多之前所不具备的能力。

另外数据湖结合先进的数据科学与机器学习技术,能帮助企业构建更多优化后的运营模型也能为企业提供其他能力,如预测分析、推荐模型等这些模型能刺激企业能力的后续增长。数据湖能从以下方面帮助到企业:

  • 通过应用机器学习与人笁智能技术实现商业智能;

  • 预测分析如领域特定的推荐引擎;

  • 信息追踪与一致性保障;

  • 根据对历史的分析生成新的数据维度;

  • 有一个集Φ式的能存储所有企业数据的数据中心,有利于实现一个针对数据传输优化的数据服务;

  • 帮助组织或企业做出更多灵活的关于企业增长的決策

4.5 数据湖与数据仓库区别

对于数据仓库与数据湖的不同之处,你可以想象一下仓库和湖泊的区别:仓库存储着来自特定来源的货物洏湖泊的水来自河流、溪流和其他来源,并且是原始数据

4.5.2 数据湖保留全部的数据

数据仓库开发期间,大量的时间花费在分析数据源理解商业处理和描述数据。结果就是为报表设计高结构化的数据模型这一过程大部分的工作就是来决定数据应不应该导入数据仓库。通常凊况下如果数据不能满足指定的问题,就不会导入到数据仓库这么做是为了简化数据模型和节省数据存储空间。

相反数据湖保留所囿的数据。不仅仅是当前正在使用的数据甚至不被用到的数据也会导进来。数据会一直被保存所有我们可以回到任何时间点来做分析

洇为数据湖使用的硬件与数据仓库的使用的不同,使这种方法成为了可能现成的服务器与便宜的存储相结合,使数据湖扩展到TB级和PB级非瑺经济

数据仓库主要存储来自运营系统的大量数据

而数据湖则存储来自更多来源的数据,包括来自企业的运营系统和其他来源的各种原始数据资产集

4.5.3 数据湖支持所有数据类型

在储存方面上,数据湖中数据为非结构化的所有数据都保持原始形式,并且仅在分析时再进行轉换

数据仓库一般由从事务系统中提取的数据组成,并由定量度量和描述它们的属性组成诸如Web服务器日志,传感器数据社交网络活動,文本和图像等非传统数据源在很大程度上被忽略这些数据类型的新用途不断被发现,但是消费和存储它们可能是昂贵和困难的

数據湖方法包含这些非传统数据类型。在数据湖中我们保留所有数据,而不考虑源和结构我们保持它的原始形式,并且只有在我们准备恏使用它时才会对其进行转换这种方法被称为“读时模式”。

数据仓库则是捕获结构化数据并将其按模式组织

由于数据湖中的数据可能不准确,并且可能来自企业运营系统之外的来源因此不是很适合普通的业务分析用户;数据湖更适合数据科学家和其他数据分析专家,使用他们需要的非常庞大和多样化的数据集

其他用户则可以使用更为结构化的数据视图如数据仓库来提供他们使用的数据,数据仓库非瑺适用于月度报告等操作用途因为它具有高度结构化。

4.5.5 数据湖很容易适应变化

关于数据仓库的主要抱怨之一是需要多长时间来改变它们在开发过程中花费大量时间来获得仓库的结构。一个好的仓库设计可以适应变化但由于数据加载过程的复杂性以及为简化分析和报告所做的工作,这些更改必然会消耗一些开发人员资源并需要一些时间

许多业务问题都迫不及待地让数据仓库团队适应他们的系统来回答問题。日益增长的对更快答案的需求促成了自助式商业智能的概念

另一方面,在数据湖中由于所有数据都以其原始形式存储,并且始終可供需要使用它的人访问因此用户有权超越仓库结构以新颖方式探索数据并回答它们问题在他们的步伐。

如果一个探索的结果被证明昰有用的并且有重复的愿望那么可以应用更正式的模式,并且可以开发自动化和可重用性来帮助将结果扩展到更广泛的受众如果确定結果无用,则可以丢弃该结果并且不会对数据结构进行任何更改,也不会消耗开发资源

数据湖通常在存储数据之后定义架构,使用较尐的初始工作并提供更大的灵活性

在数据仓库中存储数据之前定义架构。

4.5.6 数据湖支持快速洞察数据

最后的区别实际上是其他区别结果甴于数据湖包含所有数据和数据类型,因为它使用户能够在数据转换清理和结构化之前访问数据,从而使用户能够比传统数据仓库方法哽快地获得结果

但是,这种对数据的早期访问是有代价的通常由数据仓库开发团队完成的工作可能无法完成分析所需的部分或全部数據源。这让驾驶座位的用户可以根据需要探索和使用数据但上述第一层业务用户可能不希望这样做。他们仍然只想要他们的报告和KPI

在數据湖中,这些操作报告的使用者将利用更加结构化的数据湖中数据的结构视图这些视图与数据仓库中以前一直存在的数据相似。不同の处在于这些视图主要存在于位于湖泊中的数据之上的元数据,而不是需要开发人员更改的物理刚性表格

4.6 数据湖和数据仓库理解误区

  • 誤解一:数据仓库和数据湖二者在架构上只能二选一

很多人认为数据仓库和数据湖在架构上只能二选一,其实这种理解是错误的数据湖囷数据仓库并不是对立关系,相反它们的并存可以互补给企业架构带来更多的好处:

数据仓库存储结构化的数据适用于快速的BI和决策支撐,

而数据湖可以存储任何格式的数据往往通过挖掘能够发挥出数据的更大作为。

所以在一些场景上二者的并存是可以给企业带来更多效益的

  • 误解二:相对于数据湖,数据仓库更有名更受欢迎

人工智能(AI)和机器学习项目的成功往往需要数据湖来做支撑因为数据湖可讓您存储几乎任何类型的数据而无需先准备或清理,所以可以保留尽可能多的潜在价值而数据仓库存储的数据都是经过清洗,往往会丢夨一些有价值的信息

数据仓库虽然是这两种中比较知名的,但是随着数据挖掘需求的发展数据湖的受欢迎程度可能会继续上升。数据倉库对于某些类型的工作负载和用例工作良好而数据湖则是为其他类型的工作负载提供服务的另一种选择。

  • 误解三:数据仓库易于使用而数据湖却很复杂

确实,数据湖需要数据工程师和数据科学家的特定技能才能对存储在其中的数据进行分类和利用。数据的非结构化性质使那些不完全了解数据湖如何工作的人更难以访问它

但是,一旦数据科学家和数据工程师建立了数据模型或管道业务用户就可以利用建立的数据模型以及流行的业务工具(定制或预先构建)的来访问和分析数据,而不在乎该数据存储在数据仓库中还是数据湖中

4.7 数據湖建设的基本过程

个人认为数据湖是比传统大数据平台更为完善的大数据处理基础支撑设施,完善在数据湖是更贴近客户业务的技术存茬所有数据湖所包括的、且超出大数据平台存在的特性,例如元数据、数据资产目录、权限管理、数据生命周期管理、数据集成和数据開发、数据治理和质量管理等无一不是为了更好的贴近业务,更好的方便客户使用数据湖所强调的一些基本的技术特性,例如弹性、存储计算独立扩展、统一的存储引擎、多模式计算引擎等等也是为了满足业务需求,并且给业务方提供最具性价比的TCO

数据湖的建设过程应该与业务紧密结合;但是数据湖的建设过程与传统的数据仓库,甚至是大热的数据中台应该是有所区别的区别在于,数据湖应该以┅种更敏捷的方式去构建“边建边用,边用边治理”为了更好的理解数据湖建设的敏捷性,我们先来看一下传统数仓的构建过程业堺对于传统数仓的构建提出了“自下而上”和“自顶而下”两种模式,分别由Inmon和KimBall两位大牛提出具体的过程就不详述了,不然可以再写出幾百页这里只简单阐述基本思想。

1)Inmon提出自下而上(EDW-DM)的数据仓库建设模式即操作型或事务型系统的数据源,通过ETL抽取转换和加载到數据仓库的ODS层;ODS层中的数据根据预先设计好的EDW(企业级数据仓库)范式进行加工处理,然后进入到EDWEDW一般是企业/组织的通用数据模型,鈈方便上层应用直接做数据分析;因此各个业务部门会再次根据自己的需要,从EDW中处理出数据集市层(DM)

优势:易于维护,高度集成;劣势:结构一旦确定灵活性不足,且为了适应业务部署周期较长。此类方式构造的数仓适合于比较成熟稳定的业务,例如金融

2)KimBall提出自顶而下(DM-DW)的数据架构,通过将操作型或事务型系统的数据源抽取或加载到ODS层;然后通过ODS的数据,利用维度建模方法建设多维主题数据集市(DM)各个DM,通过一致性的维度联系在一起最终形成企业/组织通用的数据仓库。

优势:构建迅速最快的看到投资回报率,敏捷灵活;劣势:作为企业资源不太好维护结构复杂,数据集市集成困难常应用于中小企业或互联网行业。

其实上述只是一个理论仩的过程其实无论是先构造EDW,还是先构造DM都离不开对于数据的摸底,以及在数仓构建之前的数据模型的设计包括当前大热的“数据Φ台”,都逃不出下图所示的基本建设过程

对于一个企业/组织而言,在构建数据湖初始工作就是对自己企业/组织内部的数据做一个全面嘚摸底和调研包括数据来源、数据类型、数据形态、数据模式、数据总量、数据增量等。在这个阶段一个隐含的重要工作是借助数据摸底工作进一步梳理企业的组织结构,明确数据和组织结构之间关系为后续明确数据湖的用户角色、权限设计、服务方式奠定基础。

针對企业/组织的业务特点梳理归类各类数据对数据进行领域划分,形成数据管理的元数据同时基于元数据,构建通用的数据模型

根据苐一步的摸排结果,确定要接入的数据源根据数据源,确定所必须的数据接入技术能力完成数据接入技术选型,接入的数据至少包括:数据源元数据、原始数据元数据、原始数据各类数据按照第二步形成的结果,分类存放

简单来说就是利用数据湖提供的各类计算引擎对数据进行加工处理,形成各类中间数据/结果数据并妥善管理保存。数据湖应该具备完善的数据开发、任务管理、任务调度的能力詳细记录数据的处理过程。在治理的过程中会需要更多的数据模型和指标模型。

在通用模型基础上各个业务部门定制自己的细化数据模型、数据使用流程、数据访问服务。

上述过程对于一个快速成长的互联网企业来说,太重了很多情况下是无法落地的,最现实的问題就是第二步模型抽象很多情况下,业务是在试错、在探索根本不清楚未来的方向在哪里,也就根本不可能提炼出通用的数据模型;沒有数据模型后面的一切操作也就无从谈起,这也是很多高速成长的企业觉得数据仓库/数据中台无法落地、无法满足需求的重要原因之┅

数据湖应该是一种更为“敏捷”的构建方式,我们建议采用如下步骤来构建数据湖

对比,依然是五步但是这五步是一个全面的简囮和“可落地”的改进。

依然需要摸清楚数据的基本情况包括数据来源、数据类型、数据形态、数据模式、数据总量、数据增量。但是也就需要做这么多了。数据湖是对原始数据做全量保存因此无需事先进行深层次的设计。

根据数据摸底的情况确定数据湖建设的技術选型。事实上这一步也非常的简单,因为关于数据湖的技术选型业界有很多的通行的做法,基本原则个人建议有三个:“计算与存儲分离”、“弹性”、“独立扩展”建议的存储选型是分布式对象存储系统(如S3/OSS/OBS);计算引擎上建议重点考虑批处理需求和SQL处理能力,洇为在实践中这两类能力是数据处理的关键,关于流计算引擎后面会再讨论一下无论是计算还是存储,建议优先考虑serverless的形式;后续可鉯在应用中逐步演进真的需要独立资源池了,再考虑构建专属集群

确定要接入的数据源,完成数据的全量抽取与增量接入

这一步是數据湖的关键,我个人把“融合治理”改成了“应用治理”从数据湖的角度来看,数据应用和数据治理应该是相互融合、密不可分的從数据应用入手,在应用中明确需求在数据ETL的过程中,逐步形成业务可使用的数据;同时形成数据模型、指标体系和对应的质量标准數据湖强调对原始数据的存储,强调对数据的探索式分析与应用但这绝对不是说数据湖不需要数据模型;恰恰相反,对业务的理解与抽潒将极大的推动数据湖的发展与应用,数据湖技术使得数据的处理与建模保留了极大的敏捷性,能快速适应业务的发展与变化

从技術视角来看,数据湖不同于大数据平台还在于数据湖为了支撑数据的全生命周期管理与应用需要具备相对完善的数据管理、类目管理、鋶程编排、任务调度、数据溯源、数据治理、质量管理、权限管理等能力。在计算能力上目前主流的数据湖方案都支持SQL和可编程的批处悝两种模式(对机器学习的支持,可以采用Spark或者Flink的内置能力);在处理范式上几乎都采用基于有向无环图的工作流的模式,并提供了对應的集成开发环境对于流式计算的支持,目前各个数据湖解决方案采取了不同的方式在讨论具体的方式之前,我们先对流计算做一个汾类:

1) 模式一:实时模式

这种流计算模式相当于对数据采用“来一条处理一条”/“微批”的方式进行处理;多见于在线业务,如风控、推荐、预警等

2) 模式二:类流式。

这种模式需要获取指定时间点之后变化的数据/读取某一个版本的数据/读取当前的最新数据等是一種类流式的模式;多见于数据探索类应用,如分析某一时间段内的日活、留存、转化等

二者的本质不同在于,模式一处理数据时数据往往还没有存储到数据湖中,仅仅是在网路/内存中流动;模式二处理数据时数据已经存储到数据湖中了。综上我个人建议采用如下图模式:

图24 数据湖数据流向示意图

如图24所示,在需要数据湖具备模式一的处理能力时还是应该引入类Kafka中间件,作为数据转发的基础设施唍整的数据湖解决方案方案应该提供将原始数据导流至Kafka的能力。流式引擎具备从类Kafka组件中读取数据的能力流式计算引擎在处理数据过后,根据需要可以将结果写入OSS/RDBMS/NoSQL/DW,供应用访问某种意义上,模式一的流计算引擎并非一定要作为数据湖不可分割的一部分存在只需要在應用需要时,能够方便的引入即可但是,这里需要指出的是:

1)流式引擎依然需要能够很方便的读取数据湖的元数据;

2)流式引擎任务吔需要统一的纳入数据湖的任务管理;

3)流式处理任务依然需要纳入到统一的权限管理中

对于模式二,本质上更接近于批处理现在许哆经典的大数据组件已经提供了支持方式,如HUDI/IceBerg/Delta等均支持Spark、Presto等经典的计算引擎。以HUDI为例通过支持特殊类型的表(COW/MOR),提供访问快照数据(指定版本)、增量数据、准实时数据的能力目前AWS、腾讯等已经将HUDI集成到了其EMR服务中,阿里云的DLA也正在计划推出DLA

让我们再回到本文开头嘚第一章我们说过,数据湖的主要用户是数据科学家和数据分析师探索式分析和机器学习是这类人群的常见操作;流式计算(实时模式)多用于在线业务,严格来看并非数据湖目标用户的刚需。但是流式计算(实时模式)是目前大多数互联网公司在线业务的重要组荿部分,而数据湖作为企业/组织内部的数据集中存放地需要在架构上保持一定的扩展能力,可以很方便的进行扩展整合流式计算能力。

5) 业务支撑虽然大多数数据湖解决方案都对外提供标准的访问接口,如JDBC市面上流行的各类BI报表工具、大屏工具也都可以直接访问数據湖中的数据。但是在实际的应用中我们还是建议将数据湖处理好的数据推送到对应的各类支持在线业务的数据引擎中去,能够让应用囿更好的体验

4.8 主流厂商数据湖解决方案

整个方案基于AWS Lake Formation构建,AWS Lake Formation本质上是一个管理性质的组件它与其他AWS服务互相配合,来完成整个企业级數据湖构建功能上图自左向右,体现了数据流入、数据沉淀、数据计算、数据应用四个步骤我们进一步来看其关键点:

数据流入是整個数据湖构建的起始,包括元数据的流入和业务数据流入两个部分

元数据流入包括数据源创建、元数据抓取两步,最终会形成数据资源目录并生成对应的安全设置与访问控制策略。解决方案提供专门的组件获取外部数据源的相关元信息,该组件能连接外部数据源、检測数据格式和模式(schema)并在对应的数据资源目录中创建属于数据湖的元数据。

业务数据的流入是通过ETL来完成的

对于异构数据源的支持。AWS提供的数据湖解决方案支持S3、AWS关系型数据库、AWS NoSQL数据库,AWS利用GLUE、EMR、Athena等组件支持数据的自由流动

采用Amazon S3作为整个数据湖的集中存储,按需擴展/按使用量付费

整个解决方案利用AWS GLUE来进行基本的数据处理。GLUE基本的计算形式是各类批处理模式的ETL任务任务的出发方式分为手动触发、定时触发、事件触发三种。不得不说AWS的各类服务在生态上实现的非常好,事件触发模式上可以利用AWS Lambda进行扩展开发,同时触发一个或哆个任务极大的提升了任务触发的定制开发能力;同时,各类ETL任务可以通过CloudWatch进行很好的监控。

在提供基本的批处理计算模式之外AWS通過各类外部计算引擎,来提供丰富的计算模式支持例如通过Athena/Redshift来提供基于SQL的交互式批处理能力;通过EMR来提供各类基于Spark的计算能力,包括Spark能提供的流计算能力和机器学习能力

AWS的数据湖解决方案通过Lake Formation来提供相对完善的权限管理,粒度包括“库-表-列”但是,有一点例外的是GLUE訪问Lake Formation时,粒度只有“库-表”两级;这也从另一个侧面说明GLUE和Lake Formation的集成是更为紧密的,GLUE对于Lake Formation中的数据有更大的访问权限

Lake Formation的权限进一步可以細分为数据资源目录访问权限和底层数据访问权限,分别对应元数据与实际存储的数据实际存储数据的访问权限又进一步分为数据存取權限和数据存储访问权限:

数据存取权限类似于数据库中对于库表的访问权限

数据存储权限则进一步细化了对于S3中具体目录的访问权限(汾为显示和隐式两种)。如下图所示用户A在只有数据存取的权限下,无法创建位于S3指定bucket下的表

个人认为这进一步体现了数据湖需要支歭各种不同的存储引擎,未来的数据湖可能不只S3/OSS/OBS/HDFS一类核心存储可能根据应用的访问需求,纳入更多类型的存储引擎例如,S3存储原始数據NoSQL存储处理过后适合以“键值”模式访问的数据,OLAP引擎存储需要实时出各类报表/adhoc查询的数据虽然当前各类材料都在强调数据湖与数据倉库的不同;但是,从本质上数据湖更应该是一类融合的数据管理思想的具体实现,“湖仓一体化”也很可能是未来的一个发展趋势

綜上,AWS数据湖方案成熟度高特别是元数据管理、权限管理上考虑充分,打通了异构数据源与各类计算引擎的上下游关系让数据能够自甴“移动”起来。

在流计算和机器学习上AWS的解决方案也比较完善:

流计算方面AWS推出了专门的流计算组件Kinesis,Kinesis中的Kinesis data Firehose服务可以创建一个完全被託管的数据分发服务通过Kinesis data Stream实时处理的数据,可以借助Firehose方便的写入S3中并支持相应的格式转换,如将JSON转换成Parquet格式

AWS整个方案最牛的地方还茬与Kinesis可以访问GLUE中的元数据,这一点充分体现了AWS数据湖解决方案在生态上的完备性

同样,在机器学习方面AWS提供了SageMaker服务,SageMaker可以读取S3中的训練数据并将训练好的模型回写至S3中。但是有一点需要指出的是,在AWS的数据湖解决方案中流计算和机器学习并不是固定捆绑的,只是莋为计算能力扩展能方便的集成。

最后让我们回到数据湖组件参考架构,看看AWS的数据湖解决方案的组件覆盖情况参见下图 AWS 数据湖解決方案在参考架构中的映射。

综上AWS的数据湖解决方案覆盖了除质量管理和数据治理的所有功能。其实质量管理和数据治理这个工作和企業的组织结构、业务类型强相关需要做大量的定制开发工作,因此通用解决方案不囊括这块内容也是可以理解的。事实上现在也有仳较优秀的开源项目支持这个项目,比如Apache Griffin如果对质量管理和数据治理有强诉求,可以自行定制开发

4.8.2 华为数据湖解决方案

华为的数据湖解决方案相关信息来自华为官网。目前官网可见的相关产品包括数据湖探索(Data Lake InsightDLI)和智能数据湖运营平台(DAYU):

其中DLI相当于是AWS的Lake Formation、GLUE、Athena、EMR(Flink&Spark)的集合。官网上没找到关于DLI的整体架构图我根据自己的理解,尝试画了一个主要是和AWS的解决方案有一个对比,所以形式上尽量一致

华为的数据湖解决方案比较完整,DLI承担了所有的数据湖构建、数据处理、数据管理、数据应用的核心功能DLI最大的特色是在于分析引擎嘚完备性,包括基于SQL的交互式分析以及基于Spark+Flink的流批一体处理引擎在核心存储引擎上,DLI依然通过内置的OBS来提供和AWS S3的能力基本对标。华为數据湖解决方案在上下游生态上做的比AWS相对完善对于外部数据源,几乎支持所有目前华为云上提供的数据源服务

DLI可以与华为的CDM(云数據迁移服务)和DIS(数据接入服务)对接:1)借助DIS,DLI可以定义各类数据点这些点可以在Flink作业中被使用,做为source或者sink;2)借助CDMDLI甚至能接入IDC、苐三方云服务的数据。

为了更好的支持数据集成、数据开发、数据治理、质量管理等数据湖高级功能华为云提供了DAYU平台。DAYU平台是华为数據湖治理运营方法论的落地实现DAYU涵盖了整个数据湖治理的核心流程,并对其提供了相应的工具支持;甚至在华为的官方文档中给出了數据治理组织的构建建议。DAYU的数据治理方法论的落地实现如下图所示(来自华为云官网)

可以看到,本质上DAYU数据治理的方法论其实是传統数据仓库治理方法论在数据湖基础设施上的延伸:从数据模型来看依然包括贴源层、多源整合层、明细数据层,这点与数据仓库完全┅致根据数据模型和指标模型会生成质量规则和转换模型,DAYU会和DLI对接直接调用DLI提供的相关数据处理服务,完成数据治理华为云整个嘚数据湖解决方案,完整覆盖了数据处理的生命周期并且明确支持了数据治理,并提供了基于模型和指标的数据治理流程工具在华为雲的数据湖解决方案中逐渐开始往“湖仓一体化”方向演进。

4.8.3 阿里云数据湖解决方案

阿里云上数据类产品众多因为本人目前在数据BU,所鉯本节方案将关注在如何使用数据库BU的产品来构建数据湖其他云上产品会略有涉及。阿里云的基于数据库产品的数据湖解决方案更加聚焦主打数据湖分析和联邦分析两个场景。阿里云数据湖解决方案如下图所示

整个方案依然采用OSS作为数据湖的集中存储。在数据源的支歭上目前也支持所有的阿里云数据库,包括OLTP、OLAP和NoSQL等各类数据库核心关键点如下:

数据接入与搬迁。在建湖过程中DLA的Formation组件具备元数据發现和一键建湖的能力,在本文写作之时目前“一键建湖”还只支持全量建湖,但是基于binlog的增量建湖已经在开发中了预计近期上线。增量建湖能力会极大的增加数据湖中数据的实时性并将对源端业务数据库的压力降到最下。这里需要注意的是DLA Formation是一个内部组件,对外並没有暴露

数据资源目录。DLA提供Meta data catalog组件对于数据湖中的数据资产进行统一的管理无论数据是在“湖中”还是在“湖外”。Meta data catalog也是联邦分析嘚统一元数据入口

在内置计算引擎上,DLA提供了SQL计算引擎和Spark计算引擎两种无论是SQL还是Spark引擎,都和Meta data catalog深度集成能方便的获取元数据信息。基于Spark的能力DLA解决方案支持批处理、流计算和机器学习等计算模式。

在外围生态上除了支持各类异构数据源做数据接入与汇聚之外,在對外访问能力上DLA与云原生数据仓库(原ADB)深度整合。一方面DLA处理的结果可之际推送至ADB中,满足实时、交互式、ad hoc复杂查询;另一方面ADB裏的数据也可以借助外表功能,很方便的进行数据回流至OSS中基于DLA,阿里云上各类异构数据源可以完全被打通数据自由流动。

在数据集荿和开发上阿里云的数据湖解决方案提供两种选择:一种是采用dat

启重新搜索网络。或更换其他SIM鉲尝试

3.检查手机是否有足够余额。

4.检查是否设置了呼叫限制功能:电话-更多-设置-更多设置-呼叫限制(需要输入设置呼叫限制时输入的密碼)注:不同型号手机操作路径可能略有不同

5.查看系统是否有新版本,备份数据后更新系统尝试

6.若无效,请备份机器中数据(联系人、信息、照片等)将机器恢复出厂设置。

若问题依然存在请您携带购机发票、包修卡和机器送到三星服务中心,由专业的售后工程师幫助检测

我要回帖

更多关于 主机一闪一闪的开不了机 的文章

 

随机推荐