8 大数据技术
8.1 大数据及其特征
- 典型大数据应用中的数据在如下的一个或多个(4V)方面与传统技术面对的数据表现出显著不同:数据量(Volume)大、类型(Variety)多样、速度(Velocity)快、价值(Value)高而密度稀疏。
- 大数据技术的目标乃是简单、高效并安全地共享大数据,支持大数据应用。
- 大数据技术的关键需求包括:①可伸缩性,能够有效处理越来越多的数据和越来越多的访问。②可靠性,能够容忍实际合理的故障。
大数据技术的关键需求包括:
- 可伸缩性
- 可靠性
- 高效性
大数据关键技术:
- 利用分布式技术实现对结构化、半结构化和非结构化海量数据的可扩展、容错、高可用地存储。
- 利用分布式并行编程模型和计算框架,实现对海量数据的处理和分析。
关键技术:
-
大数据存储
-
- 计算机集群
- 分布式文件系统
- NoSQL数据模型
-
大数据处理和分析
-
- MapReduce批处理
- Storm流计算
8.2 大数据存储
大数据存储:
与早前水平扩展的思想不同,目前面对大数据挑战,可以采用垂直扩展的方式,也可以采用水平拓展的方式
由于大数据的数据规模远远超过单节点存储能力,通常在计算机集群中使用分布式文件系统来存储。
当前大数据应用中的分布式文件系统通常都采用主从结构。
当前大数据应用中的分布式文件系统,当面对数据修改时,需要分布式并发控制、提交和恢复机制来维护多个副本间的一致性,归根结底需要一个异步系统中的分布式共识协议。
Google GFS中每个块的大小为64MB。
为了应对可能随时发生的故障,文件的每个块都存有不同节点上的多个副本。
典型的NoSQL系统可以分为四类:
-
键值存储系统:通过键访问存储值的哈希表。
-
- get:实现按“键”找“值”
- put:在不存在“键”的情况下插入一个键/值对,否则为这个“键”更新“值”
- delete:删除一个键/值对
-
列族存储系统
-
- 列族存储系统,用表来组织数据。表中的每一行由行键来标识,一般是一个字符串。每一行标识出若干列簇,列簇包括若干个列,通常通过“列簇名:列限定符”来标识一个列,也就是一个单元格,一个单元格中的数据可以有多个版本。
- 注意点:物理上按列簇切分存储,以行键为标识,单元格中的数据按时间戳降序排列。
-
文档存储系统:数据模型是包含键/值集合的文档集合。
-
- 在一个文档存储中,“值”可以是嵌套文档、序列、数组、标量值,甚至可以是图片、视频等二进制大对象。
-
图存储系统
-
- 图存储系统使用图作为数据模型,有一个节点集合和表征了节点关系的边集合
8.3 大数据计算
大数据计算的方式
批处理计算模型
- 将需要处理的大批量数据存入磁盘,处理时从磁盘中读取。批处理的I/O操作更加频繁。数据是封闭的。
流式计算模型处理:
- 将数据看成数据流的形式,处理的是瞬时的、有序的数据流。处理过程直接在内存中进行,不涉及对硬盘的访问,只有处理完成后才将结果输出到磁盘。数据是开放的。
区别主要体现在处理数据时是否访问磁盘。
批处理有个方法叫MapReduce
流计算有个框架叫Storm
Storm工作流程
- 客户端提交拓扑到Storm集群
- Nimbus将给Supervisor分配的任务写入Zookeeper
- Supervisor从Zookeeper中获悉所分配的任务,并启动工作进程执行具体任务
Storm流式计算框架结构中包括Spout和Bolt两种组件。
Storm计算框架:
结构组件:Spout——接受数据并喷发给bolt,Bolt——处理数据
集群结构:Nimbus——任务调度,Supervisor——计算,ZooKeeper——保存信息
Nimbus->ZooKeeper->Supervisor
流计算的代表是Storm框架,分为Spout(接收数据)和Bolt(逻辑处理数据)。守护进程Nimbus运行在主结点上,负责代码分发,为工作结点分配任务、故障监测。Supervison运行在工作结点上,负责监听分配给所在工作结点的任务。Zookeeper负责协调并保存状态信息,稳定性。
MapReduce:
MapReduce是一种处理海量数据的并行编程模型和计算框架,采用分而治之的思想,通过处理用户的map和reduce函数,能够自动地并行执行在可伸缩的大规模集群上,从而可以对大规模数据进行处理和分析,具有可扩展、容错等特点。
- Reduce任务接收从不同Map任务得到的键相同的键-值对,执行用户编写的Reduce函数,将键相同的键-值对中的所有值以Reduce函数指定的方式组合起来,得到键-值对并输出。
Reduce:接受任务执行用户编写的Reduce函数,以Reduce函数方式组合起来
Map任务:得到的键相同的键-值对
8.4 大数据应用
推荐:
- 推荐是指根据用户的过往行为、活动、态度等,为用户推荐感兴趣的各种对象的软件系统。
- 在推荐系统中,通常把为用户推荐的对象称为==“物项”==。
推荐方法可以分为基于内容的推荐和协同过滤推荐两种,
其中协同过滤推荐又可以具体划分为基于用户和基于物项两种方法。
基于内容的推荐:
- 分析用户的属性构建兴趣模型。
- 建立物项的特征模型。
- 计算兴趣模型与特征模型之间的相似性。
- 对物项进行标记,推荐给目标用户。
优点:可解释性好,新物项可以得到推荐
模型的重要性:
使用怎样的模型,提取怎样的用户和物项信息,一直是推荐算法研究的重点和难点,并是推荐算法进一步发展的关键。
基于用户的协同过滤推荐:
- 根据用户的历史标注信息,计算用户相似性,发现某一特定用户的“邻居”集合。
- 推荐“邻居”感兴趣的、但此用户尚未选择过的物项给该用户。
基于物项的协同过滤推荐:
- 根据历史标注信息,计算物项相似性,发现某物项的“邻居”集合;
- 推荐“邻居”物项给可能感兴趣的用户。
基于内容推荐方法根据用户兴趣模型与每一个物项特征模型之间的相似性来进行推荐。
基于用户的协同过滤推荐方法是根据用户相似性进行推荐。
基于物项的协同过滤推荐方法是根据物项相似性推荐。
习题:
大数据存储方面,主要涉及关键技术包括:计算机集群、分布式文件系统、NoSQL 数据模型。(对)
与早前水平扩展的思想不同,目前面对大数据挑战,总是采用垂直扩展的方式。(错)垂直扩展和水平拓展
流式计算处理的源数据通常是开放的,都是流数据,也称流式数据,是指将数据看作数据流的形式来处理。(对)
批处理的源数据通常是封闭的,通常将需要处理的大批量数据存入硬盘,处理的时候再从硬盘中读取数据进行一次性处理,如果产生了中间结果,需将中间结果写入外存,再继续后面的处理,因此批处理的 I/O 操作相对更加频繁。(对)
Bolt 用于从外部数据源接收数据,然后将其喷发到拓扑中的相应组件中去。(对)解释:Spout
Storm 集群中守护进程 Supervisor(Nimbus) 运行在主结点上,负责代码分发,为工作结点分配任务故障监测;守护进程 Nimbus(Supervisor) 运行在工作结点上,负责监听分配给所在工作结点的任务,即根据 Nimbus的任务分配来决定启动或停止工作进程执行 Storm 拓扑,一个 Supervisor 可能执行拓扑的一部分,也可能执行完整的拓扑。(错)
Storm 集群中 Supervisor 保存了 Storm 的状态信息。(错)Zookeeper
MapReduce 中,Map(Reduce) 任务接收从不同 Reduce (Map)任务得到的键相同的键-值对,执行用户编写的 Map(Reduce)函数,将键相同的键-值对中的所有值以 Map (Reduce) 函数指定的方式组合起来,得到键-值对并输出。(错)