### **一、大数据和他的朋友们**
#### **1. 大数据和数据库的关系**
这里直接引用厦门大学林子雨老师的比喻,“池塘捕鱼”好比传统数据库时代的数据管理方式,而“大海捕鱼”则对应着大数据时代的数据管理方式。“鱼”是要处理的数据,而“捕鱼”环境的变化直接导致了“捕鱼”方式的变更。
1. 数据规模:“池塘”规模较小,即便是比较大的“池塘”,如VLDB(Very Large Database),和“大海”的XLDB(Extremely Large Database)相比仍旧偏小。**数据库的处理对象通常是以 MB 为单位,而大数据则动辄 GB,TB、PB乃至ZB也不为过**。
2. 数据类型:“池塘”中“鱼”的种类一般只有一种或几种,以结构化数据为主。**而“大海”中“鱼”的种类繁多,不仅包含结构化数据,还有半结构化和非结构化数据,而且后两者的比例越来越高**。
3. 数据模式:模式,即Schema。传统数据库是先有模式,再产生数据。好比先建好“池塘”,然后再投放适合在其中生长的“鱼苗”。**而大数据时代往往难以预料模式,模式只有在数据产生之后才能确定,而且还会随着数据规模的变化而不断演变**。随着时间的推移,“鱼”在不断增长和变化,从而推动了“大海”成分和环境也在不断变化。
4. 处理对象:在“池塘”中捕鱼,纯粹就是捕鱼,这就是最终目的。而在“大海”中捕鱼,除了捕鱼,还可以通过某些“鱼”来预测其他“鱼”的存在。也就是说,传统数据库中的数据仅作为处理对象,**而大数据时代,数据是一种资源,关键是进行分析、挖掘、预测和解决领域问题**。
5. 处理工具:在“池塘”捕鱼,少数几种工具就可以应对,也就是所谓的“One Size Fits All”。而在“大海”中捕鱼,**可能要针对不同类型的“鱼”采用不同的工具,也就是所谓的 “No Size Fits All”**。
图灵奖获得者、著名数据库专家 Jim Gray 博士观察并总结人类自古以来, 在科学研究上先后历经了**实验、理论和计算**三种范式。当数据量不断增长和累积到今天,传统的三种范式在科学研究,特别是一些新的研究领域已经无法很好的发挥作用。Jim Gray 提出了一种新的“数据探索型”研究方式,称其为科学研究“第四种范式”(The Fourth Paradigm)。
对于这四种范式:
* **实验范式**,数千年的历史,大部分时间都是依靠实验范式对自然现象的描述进行科学研究。
* **理论范式**,随着文艺复兴与工业革命的到来,科学研究不再满足于简单自然现象的阐述,而是希望通过缜密的理论找到因果关系,大概拥有几百年的历史。
* **计算范式**,随着计算机的发明,用强大的计算能力实现曾经难以触及的领域,这也就是过去几十年发生的事情。
* **数据探索范式**,今天正在发生,依靠对大量数据的分析,预测事情发展的规律。
第四种范式的实质就是**从以计算为中心,转变到以数据处理为中心,也就是我们所说的数据思维,这是一种根本的思维转变**。比如计算社会科学,基于特定社会需求,在特定的社会理论指导下,收集、整理和分析数据足迹(data print),以便进行社会解释、监控、预测与规划的过程和活动。
#### **2. 大数据和云计算的关系**
1. 大数据和云计算是相辅相成的。**大数据聚焦“数据”,云计算聚焦“计算”**。没有大数据的积淀,计算能力无用武之地;没有云计算的处理能力,大数据也只是镜花水月。
2. 大数据在技术方面根植于云计算。比如**MapReduce编程模型**(分布式编程模型,可用于并行处理大规模数据集的软件框架)、**海量数据存储技术**(分布式数据存储,冗余机制保证系统可靠性)、**海量数据管理技术**(NoSQL数据库,进行海量数据管理和数据分析)等技术。
#### **3. 大数据和物联网的关系**
物联网(IoT - Internet of Things)通过智能感知、识别技术、泛在网络的融合应用,被称为继计算机、互联网之后世界信息产业发展的第三次浪潮。
物联网架构大致可分为三层:
1. 感知层:由各种各样的传感器(Sensor)构成,如温湿度传感器、二维码标签读写器、GPS、摄像头、穿戴设备等。**这是物联网信息数据的来源**。
2. 网络层:由各种网络,如互联网、广电网、通讯网、专用承载网、网管系统、云计算平台等组成。**这是物联网的中枢,负责传递和处理感知层获取的信息**。
3. 应用层:**是物联网和用户的接口**,与行业需求相结合,实现物联网智能应用。
物联网用途广泛,遍及交通、环境保护、政府工作、公共安全、家居、消防、工业监测、环境监测、照明管控、老人护理、个人健康、水系监测、食品溯源、敌情侦查和情报搜集等多个领域。物联网每天都在产生海量数据,需要利用大数据技术对数据进行筛选、处理和分析,提取出有用的信息,以便支撑自身的创新。而大数据领域的一些专业公司,也非常渴望获取物联网领域丰富多彩的数据信息,丰富自身的内容样本库。
#### **4. 大数据和人工智能的关系**
正在辛苦的写作中……
***
### **二、大数据是多种技术协同的体系**
>[info] ***大数据价值的完整体现需要多种技术的协同。文件系统提供最底层存储能力的支持。为了便于数据管理,需要在文件系统之上建立数据库系统。通过索引等的构建,对外提供高效的数据查询等常用功能。最终通过数据分析技术从数据库中的大数据提取出有益的知识。***
>
> ---- 摘自《大数据技术基础》(厦门大学 林子雨)
大数据不是单一的技术,文件系统、数据库系统、数据挖掘与分析系统、数据呈现系统、大数据应用系统自下而上构成了一套技术体系和生态链。同时,虽然底层数据来源多种多样,应用诉求和数据类型不尽相同,但基本的处理流程却基本相同:
>[info] ***整个大数据的处理流程可以定义为:在合适工具的辅助下,对广泛异构的数据源进行抽取和集成,结果按照一定的标准进行统一存储,并利用合适的数据分析技术对存储的数据进行分析,从中提取有益的知识并利用恰当的方式将结果展现给终端用户。***
>
> ---- 摘自《大数据技术基础》(厦门大学 林子雨)
简单总结就是:异构数据源 ----> 数据抽取与集成 ----> 数据分析 ----> 数据呈现
***
### **三、大数据处理的基本流程**
#### **1. 数据抽取与集成**
由于数据来源的多样性,在处理数据之前,需要先对数据进行预处理,从中提取出关系或对象实体,经过关联和聚合之后采用统一定义的逻辑结构进行存储。同时也要进行一定的清洗工作,以保证数据的质量和可信度。
数据抽取与集成不是全新的技术,在数据库时代已有成熟的研究和方法论。比如以下常用的几种数据集成方式:
1. **数据整合(Data Consolidation)**:通过工具将不同数据源批量集成到同一个物理仓库,当数据量较大时,数据整合的代价也可能较高。
2. **数据联邦(Data Federation)**:在多个数据源之上建立一个逻辑视图,提供一个统一的数据访问入口,对外屏蔽不同数据源的分布细节,被请求时临时从不同数据源获取数据。
3. **数据传播(Data Propagation)**:通过技术手段实现数据在多个应用之间可传播。
#### **2. 数据分析**
数据分析是大数据的核心。大数据的目的就是为了通过分析,作出预测,给出决策建议。传统的数据分析技术如数据挖掘、机器学习、统计分析在大数据时代面临新的挑战,需要作出一定调整:
1. 数据量变得巨大不代表价值的增加,反而可能提升噪音。**数据清洗难度变高,代价变大**。
2. 算法需要与时俱进。比如大数据应用往往对实时性较高要求,而对准确性的要求可能降低,**这就要求算法在准确率与实时性上取一个均衡**。再比如大数据主要依托云计算,云计算的重要特征之一是分布式和高扩展,**算法能否匹配与适应基础设施的变化**?
3. 数据分析结果好坏难以评价。给出分析结果并不难,但由于大数据的数据来源分布广,数据结构类型多,数据量大,**如何证明该结果的准确性和价值高低是困难的**。
#### **3. 数据呈现**
再好的分析结果,如果没有良好的呈现,用户可能难以理解,甚至受到误导,这就背离了大数据的初衷。大数据时代要呈现的数据量很大,相互关联关系又变得更为复杂,可以考虑从如下两个方面提升呈现效果:
1. **可视化技术**:诸如标签云(Tag Cloud)、历史流 (History Flow)、空间信息流(Spatial Information Flow)等,而且有很多专业公司致力于此。
2. **让用户参与和了解数据分析过程**。
***
### **四、大数据处理模型**
#### **1. 大数据唯快不破**
>[info] ***设想我们站在某个时间点上,背后是静静躺着的老数据,面前是排山倒海扑面而来的新数据。在令人窒息的数据海啸面前,我们的数据存储系统如同一个小型水库,而数据处理系统则可以看作是水处理系统。数据涌入这个水库,如果不能很快处理,只能原封不动地排出。对于数据拥有者来说,除了付出了存储设备的成本,没有收获任何价值。***
>
> ---- 摘自《大数据技术基础》(厦门大学 林子雨)
在老板眼中,数据是成本,是投资,是价值回报。:
1. **时间就是金钱**:数据是矿产,“挖矿”效率就是竞争力。
2. **数据价值会折旧**:
>[info] ***等量数据在不同时间点上价值不等。NewSQL 的先行者 VoltDB 发明了一个概念叫做 Data Continuum,即数据存在于一个连续时间轴(time continuum)上,每一个数据项都有它的年龄,不同年龄的数据有不同的价值取向,“年轻”(最近)时关注个体的价值,“年长”(久远) 时注重集合价值。***
>
> ---- 摘自《大数据技术基础》(厦门大学 林子雨)
3. **数据具有时效性**:
>[info] ***炒股软件免费版给你的数据有十几秒的延迟,这十几秒是快速猎食者宰割散户的机会;而华尔街大量的机构使用高频机器交易(70%的成交量来自高频交易),能发现微秒级交易机会的吃定毫秒级的;物联网这块,很多传感器的数据,产生几秒之后就失去意义了;美国国家海洋和大气管理局的超级计算机能够在日本地震后 9 分钟计算出海啸的可能性,但 9 分钟的延迟对于瞬间被海浪吞噬的生命来说还是太长了。***
>
> ---- 摘自《大数据技术基础》(厦门大学 林子雨)
#### **2. 大数据的两种处理模式**
数据可能是静止的,也可能是动态的,这也分别对应了批处理和流处理两种处理范式:
###### **第一,静止的:数据像水库中的水,静静地躺在那里,等待输入不同的逻辑对其进行处理,计算完将价值留下。对应批处理范式。**
批处理范式下最核心的思想就是数据不动逻辑动,简单看下 Google 的 MapReduce 思想:
:-: ![](https://box.kancloud.cn/e518bfb9775ee3452380c5ea1f1313cf_567x382.png)
首先,MapReduce 模型的核心思想是:
* 将待处理问题分而治之。
* 把计算推到数据而不是把数据推到计算,避免数据传递过程中大量的通讯开销。
MapReduce 模型的处理过程基本上可以分成三部分:
* MapReduce 模型将用户的原始数据源进行分块,交给不同的 Map 任务处理。
* Map 任务从输入中解析出 Key/Value 对集合,对这些集合执行用户自行定义的 Map 函数,并将执行结果写入本地硬盘。
* Reduce 任务从硬盘上读取数据,根据 key 值进行排序,将具有相同 key 值的数据组织在一起,对组织好的数据执行用户自定义的 Reduce 函数,并输出最终结果。
>[info] ***Hadoop 就是典型的批处理范式:HDFS存放已经沉淀下来的数据,MapReduce的作业调度系统把处理逻辑送到每个节点进行计算。这非常合理,因为搬动数据比发送代码更昂贵。***
>
> ----摘自《大数据技术基础》(厦门大学 林子雨)
##### **第二,动态的:数据像流动的小溪,从外界不断涌进,而逻辑保持不变,计算完将价值留下,原始数据或加入静态数据中,或丢弃。对应流处理范式。**
流处理范式的基本理念是数据的价值会随时间的流逝而降低,因此需要尽快对最新的数据进行处理。
流处理范式看重数据处理的实时性,而数据流本身可能会很大很快,因此不太可能对数据进行持久化,而是直接在内存中进行处理,内存也进而成为流处理的瓶颈点。
:-: ![](https://box.kancloud.cn/80de4e34583e342c794100301f0b53b2_1632x586.png =400x)
>[info] ***流处理品类繁多,包括传统的消息队列(绝大多数名字以 MQ 结尾)、事件流处理(Event Stream Processing)、复杂事件处理(Complex Event Processing 或 CEP)(如 Tibco 的 BusinessEvents 和 IBM 的 InfoStreams)、分布式发布/订阅系统(如 Kafka)、专注于日志处理的(如 Scribe 和 Flume)、通用流处理系统(如 Storm 和 S4)等。***
>
> ----摘自《大数据技术基础》(厦门大学 林子雨)
##### **第三,动静态数据和处理逻辑之间的关系**
下面这张图体现了静态和动态两种数据和各自的处理逻辑之间的关系
:-: ![](https://box.kancloud.cn/94e92a533dc5f6a642a294d69e36e1fb_591x436.png =400x)
这两种范式没有谁更好一说,好比生活中,有人喜欢把事情攒成一堆儿一起做,而有些人则喜欢来一件事就处理一件事。一般认为,流处理范式更快一些,但流处理模式往往对应最近的一个数据窗口,只能获得实时智能,而难以实现全时智能,而此又恰恰是批处理范式的优势所在。因此这两种范式常常配合使用,甚至形成了这样的定式:
* **流处理范式作为批处理范式的前端**,先用流范式过滤噪音,留下感兴趣的数据,保存下来以待批处理范式进行后续处理。
* **流处理范式与批处理范式分工协作**,流处理范式负责动态数据和实时智能,皮处理范式则负责静态的历史数据和历史智能,实时智能与历史智能共同组成全时智能。
#### **3.怎么快起来**
前面说了大数据唯快不破,也讲了大数据的两种处理范式,那如何才能做到“快”呢?这同时是商业决策者和系统架构师的巨大挑战。
1. **首先,快是要付出代价的**。所以,要先搞清楚什么是“快”,需要多“快”。是毫秒级,秒级,分钟级,小时级,天级……快无止境,适度即可。
2. **其次,要考虑当前的系统是否有潜力做到更快,还是要重新重构**。基于传统的关系型数据库,大概能做到TB量级,并可以通过分库分表(sharding)以及缓存(memcached)来延续传统数据库架构的生命。但如果有更高的要求,就需要考虑新的架构,是批处理范式,还是流处理范式,或者是两者的结合?这就需要量身定做了。
>[info] ***Intel 有一位老法师说:any big data platform needs to be architected for particular problems (任何一个大数据平台都需要为特定的问题度身定做)。这是非常有道理的。为什么呢?比如说大方向决定了要用流处理架构,落实到具体产品少说有上百种,所以要选择最适合的流处理产品。再看批处理架构,MapReduce 也不能包打天下,碰到多迭代、交互式计算就无能为力了;NoSQL更是枝繁叶茂,有名有姓的 NoSQL 数据库好几十种。***
>
> ----摘自《大数据技术基础》(厦门大学 林子雨)
上面说的是原则,实际上还是有一些通用的方法论让大数据“快起来”:
1. 如果判断前端流入数据量过大,**及时采用流处理范式过滤非重要数据**。
2. **通过预处理把数据分成适于快速处理的格式**。如谷歌大数据引擎 Dremel 就是把只读的嵌套数据转成类似于列式数据库的形式,实现了 PB 级数据的秒级查询。当然,也需要注意预处理需要消耗一定的资源。
3. 增量计算,**把重点放在新增的数据之上,先满足“快”,抽空再把新数据更新回老的数据系统中**。谷歌的 Web 索引服务自2010年起从老的 MapReduce 批量系统升级成新的增量索引系统,就极大地缩短网页被爬虫爬到(新增数据)和被搜索到(产生大数据分析结果)之间的延迟。
4. **用内存计算(In-memory Comuputing)代替基于磁盘I/O的计算**。最简单的就是内存缓存,复杂一点的涉及内存数据库和分析平台,比如伯克利的开源内存计算框架Spark,斯坦福的内存数据库系统RAMCloud。未来随着非易失性内存(断电数据不会丢失)的成熟,内存计算会大行其道。
5. **降低精确性要求。大体量、精确性和快,三者最多得其二**。不能太贪心,将精确性控制在一定误差范围内,能够满足商业要求即可。
***
#### **参考材料**
* 《大数据技术基础》,林子雨
* 《人工智能和大数据的关系及中国在AI领域如何赶超世界》,钛极客
* 《一张图看懂AI与大数据》,中国科技网