第十一章

11.1大数据概述

11.1.1大数据产生的背景

大数据的“大”是相对而言的,是指所处理的数据规模巨大到无法通过目前主流数据库软件工具,在可以接受的时间内完成抓取、储存、管理和分析,并从中提取出人类可以理解的资讯。
业界普遍认同大数据具有4个 V特征(数据量大Volume、变化速度快Velocity、多类型Variety与高价值Value)。简而言之,大数据可以被认为是数据量巨大且结构复杂多变的数据集合。
第一个特征Volume是大数据的首要特征,数据体量巨大。当今世界需要进行及时处理以提取有用信息的数据数量级已经从TB级别,跃升到PB甚至EB级别。
第二个特征Variety:数据类型繁多。大数据的挑战不仅是数据量的大,也体现在数据类型的多样化。除了前文提到的网络日志、地理位置信息等具有固定结构的数据之外,还有视频、图片等非结构化数据。
第三个特征Velocity:处理速度快。信息的价值在于及时,超过特定时限的信息就失去了使用的价值。
最后一个特征是Value:商业价值高,但是价值密度低。单个数据的价值很低,只有大量数据聚合起来处理才能借助历史数据预测未来走势,体现出大数据计算的价值所在。

11.1.2大数据的定义

大数据(big data,mega data)或称巨量资料,指的是需要新处理模式才能具有更强的决策力、洞察力和流程优化能力的海量、高增长率和多样化的信息资产。 在维克托·迈尔-舍恩伯格及肯尼斯·库克耶编写的《大数据时代》中大数据指不用随机分析法(抽样调查)这样的捷径,而采用所有数据进行分析处理。大数据的5V特点:Volume(大量)、Velocity(高速)、Variety(多样)、Value(价值密度)、Veracity(真实性)。

11.2大数据存储平台

HDFS(全称Hadoop Distributed File System)原是Apache开源项目Nutch的组件,现在成为是Hadoop的重要组件,它是一款具有高容错性特点的分布式文件系统,它被设计为可以部署在造价低廉的主机集群上。它将一个大文件拆分成固定大小的小数据块,分别存储在集群的各个节点上。因此HDFS可以存储超大的数据集和单个巨大的文件。这样的分布式结构能够进行不同节点的并行读取,提高了系统的吞吐率。同一个数据块存储在不同的数据节点上,保证了HDFS在节点失败时还能继续提供服务,使其具有了容错性。
HDFS副本策略
  HDFS副本放置策略对于HDFS可靠性和性能至关重要。副本放置策略关系到数据的可靠性、可用性和网络带宽的利用率。对于副本放置策略的优化让HDFS在分布式文件系统中脱颖而出,这一调优是需要大量实践经验作为依托的。
HDFS采用基于机架感知的副本放置策略,将副本存放在不同的机架上,即第一个副本放在客户本地节点上,另外两个副本随机放置在远程机架上,这样可以防止当某个机架失效时数据的丢失,如图12-2所示。在一个数据中心中往往不只有一个机架,对于大部分数据中心来说,不同机架上节点之间的通信需要经过多个交换机,其带宽比相同机架节点之间的通信带宽要小。因此,基于机架感知的副本放置策略可以在网络带宽和数据可靠性之间取得平衡。
在这里插入图片描述
HBase简介
  Apache HBase是运行于Hadoop平台上的数据库,它是可扩展的、分布式的大数据储存系统。HBase可以对大数据进行随机而实时的读取和写入操作。它的目标是在普通的机器集群中处理巨大的数据表,数据表的行数和列数都可以达到百万级别。受到Google Bigtable 思想启发,Apache开发出HBase, HBase是一个开源的、分布式的、数据多版本储存的、面向列的大数据储存平台。Google的Bigtable是运行于GFS(Google File System)上的,而HBase是运行与Apache开发的Hadoop平台上。
  HBase的特性包括:
1)线性和模块化的扩展性;
2)严格的读写一致性;
3)自动且可配置的数据表分片机制;
4)RegionServer之间可以进行热备份切换;
5)为MapReduce操作HBase数据表提供方便JAVA基础类;
6)易用的JAVA客户端访问API;
7)支持实时查询的数据块缓存和模糊过滤;
8)提供Trift网关和REST-ful Web服务,并支持XML,Protobuf和二进制编码;
9)可扩展的Jrubyshell;
10)支持通过Hadoop检测子系统或JMX导出检测数据到文件、Ganglia集群检测系统。

11.3MongoDB

MongoDB 是一个面向集合的,模式自由的文档型数据库。
在数据库里每个聚集有一个唯一的名字,可以包含无限个文档。聚集是RDBMS中表的同义词,区别是聚集不需要进行模式定义。
面向文档存储
高效的传统存储方式:支持二进制数据及大型对象(如照片和视频)。
复制及自动故障转移
Auto-Sharding自动分片支持云级扩展性
动态查询
全索引支持
多语言支持。
易存储复杂的文件类型;
模式自由
支持完全索引,包含内部对象。
在这里插入图片描述
功能:
查询:基于查询对象或者类SQL语句搜索文档。查询结果可以排序,进行返回大小限制,可以跳过部分结果集,也可以返回文档的一部分。
插入和更新:插入新文档,更新已有文档。
索引管理:对文档的一个或者多个键(包括子结构)创建索引,删除索引等等。
常用命令:所有MongoDB 操作都可以通过socket传输的DB命令来执行。
MongoDB适用于:
适合实时的插入,更新与查询
适合由数十或数百台服务器组成的数据库
网站数据
适合作为信息基础设施的缓存层
大尺寸,低价值的数据
用于对象及JSON数据的存储
不适用于:1)高度事务性的系统;2)传统的商业智能应用;3)极为复杂的SQL查询;4)高度事务性的系统:例如银行或会计系统。传统的关系型数据库目前还是更适用于需要大量原子性复杂事务的应用程序;5)传统的商业智能应用:针对特定问题的BI数据库会对产生高度优化的查询方式。

11.4大数据计算模式

11.4.1PRAM

PRAM模型,即并行随机存取机,也称之为SIMD-SM(共享存储的单指令流多数据流)模型,是一种应用于并行计算抽象模型。PRAM模型是顺序的冯·诺伊曼存储程序模型的自然扩展,由若干具有本地存储器的处理器和一个具有无限容量的共享存储器组成,处理器由公共的时钟进行控制,以同步方式运行。
在这里插入图片描述
PRAM模型对各个处理机对共享存储器是否可并发读写,可分类为
互斥读和互斥写,简记之为PRAM-EREW;
并行读但互斥写,简记之为PRAM-CREW。
并行读并且并行写,简记之为PRAM-CRCW。
优点:
  RPAM结构简单,简便易行;
  PRAM能够表达大多数并行算法
  PRAM让算法设计变得简单;让并行算法更加容易移植到不同的并行系统上;
  可以按需加入一些诸如同步和通信等功能。
缺点:
  1)PRAM是一个同步模型,其同步过程很费时的;
  2)模型中使用了一个全局共享存储器,且本地存储容量较小,不能很好的体现当前比较多见的分布主存多处理机的性能瓶颈;
  3)单一共享存储器的假定,不适合于异步分布存储的MIMD机器;
  4)假定每个处理器均可在单位时间内访问任何存储单元,因此要求处理机间通信无延迟、无限带宽和无开销,忽略多个处理器在访问同一存储空间的竞争问题以及处理器读写存储单元带宽有限性等实践中普遍存在的问题,这一假设显然是不现实的;
  5)不能很好地描述多线程技术和流水线预取技术,这两种技术当今并行体系结构应用最普遍的技术。

11.4.2BSP

BSP(Bulk Synchronous Parallel)模型,由哈佛大学Viliant和牛津大学Bill McColl提出,希望像冯·诺伊曼体系结构那样,架起计算机程序语言和体系结构间的桥梁,故又称作桥模型(Bridge Model)。本质上,BSP模型是分布存储的MIMD计算模型,被认为是最有前途的并行计算模型。
一个BSP计算机由n个处理机/存储器组成,通过通信网络进行互联,。一台BSP并行计算机包含三个部分组成:
并行计算模块
通信模块
路障同步模块
在这里插入图片描述
优点:
BSP并行模型独立于体系结构,接近现有的并行系统,可以在绝大多数目标体系结构上有效地实现。
BSP并行模型以超步为基本单位进行并行计算,这使得BSP并行程序设计简单清晰,有点类似顺序程序的编写。
BSP并行程序的性能是可以预测的,可以在系统编写之前进行理论分析预测系统是否可行。
局限:
需要算法设计人员显式地将同步机制编入算法中,导致算法设计有难度。
限制每个超级步至多可以传递h条消息,限制了消息传递的效率。
BSP(整体大同步)简化了算法的设计和分析,牺牲了算法运行时间,因为路障延迟意味着所有进程必须等待最慢者。一种改进是采用子集同步,将所有进程按照快慢程度分成若干个子集。如果子集小,其中只包含成对的收发者,则它就变成了异步的个体同步,即logp模型。另一种改进是去除路障同步限制,改用异步模式,即异步BSP(A-BSP)。

11.4.3Logp

LogP模型是一种分布存储的、点到点通信的多处理机模型,其中通信网络由4个主要参数来描述:
L(Latency) 表示源处理机与目的处理机进行消息(一个或几个字)通信所需要的等待或延迟时间的上限,表示网络中消息的延迟。
o(overhead)表示处理机准备发送或接收每个消息的时间开销(包括操作系统核心开销和网络软件开销),在这段时间里处理不能执行其它操作。
g(gap)表示一台处理机连续两次发送或接收消息时的最小时间间隔,其倒数即微处理机的通信带宽
P(Processor)处理机/存储器模块个数。
LogP模型假定一个周期完成一次局部操作,并定义为一个时间单位,那么,L,o和g都可以表示成处理器周期的整数倍。
LogP模型的主要特点有:
  1)抓住了网络与处理机之间的性能瓶颈。
  2)处理机之间异步工作,并通过处理机间的消息传送来完成同步
  3)对多线程技术有一定反映
  4)消息延迟不确定,但延迟不大于L
  5)LogP模型鼓励编程人员采用一些好的策略
  6)可以预估算法的实际运行时间。
LogP模型的不足之处有:
  1)对网络中的通信模式描述的不够深入。
  2)简单地认为远地读操作相当于两次消息传递,未考虑流水线预取技术、Cache引起的数据不一致性以及Cache命中率对计算的影响。
  3)未考虑多线程技术的上下文开销。
  4)LogP模型假设用点对点消息路由器进行通信,这增加了编程者考虑路由器上相关通信操作的负担。

11.4.4MapReduce

MapReduce是Google公司提出的一种用于大规模数据集(大于1TB)的并行运算的编程模型。
软件实现
指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,
指定并发的Reduce(归纳)函数,用来保证所有映射的键值对中的每一个共享相同的键组。
优点:
1、移动计算而不是移动数据,避免了额外的网络负载。
2、任务之间相互独立,实现高容错性。
3、理想状态下可线性扩展的,是为便宜的商业机器而设计的计算模型。
4、MapReduce模型结构简单,终端用户至少只需编写Map和Reduce函数。
5、集群扩展代价曲线平坦。
局限:
1、一个中心用于同步各个任务。
2、用MapReduce模型来实现常见的数据库连接操作效率低下。
3、MapReduce集群管理、调试、部署以及日志收集工作困难。
4、单个Master节点有单点故障的可能性。
5、当中间结果必须给保留的时候,作业的管理并不简单。
6、对于集群的参数配置调优需要较多经验。

11.4.5Spark

Spark 是一种与 Hadoop 相似的而又强于Hadoop的开源集群计算环境,由加州大学伯克利分校 AMP 实验室开发。Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值