大数据技术与实践

11.1 大数据概述

11.1.2 大数据的定义

大数据的“大”是相对而言的,是指所处理的数据规模巨大到无法通过目前主流数据库软件工具,在可以接受的时间内完成抓取、储存、管理和分析,并从中提取出人类可以理解的资讯。

11.1.3 大数据的4V特征

业界普遍认同大数据具有4个 V特征(数据量大Volume、变化速度快Velocity、多类型Variety与高价值Value)。简而言之,大数据可以被认为是数据量巨大且结构复杂多变的数据集合。

  • 第一个特征Volume是大数据的首要特征,数据体量巨大。当今世界需要进行及时处理以提取有用信息的数据数量级已经从TB级别,跃升到PB甚至EB级别。
  • 第二个特征Variety:数据类型繁多。大数据的挑战不仅是数据量的大,也体现在数据类型的多样化。除了前文提到的网络日志、地理位置信息等具有固定结构的数据之外,还有视频、图片等非结构化数据。
  • 第三个特征Velocity:处理速度快。信息的价值在于及时,超过特定时限的信息就失去了使用的价值。
  • 最后一个特征是Value:商业价值高,但是价值密度低。单个数据的价值很低,只有大量数据聚合起来处理才能借助历史数据预测未来走势,体现出大数据计算的价值所在。

11.2 大数据存储平台

11.2.1 HDFS

1. HDFS简介
HDFS(全称Hadoop Distributed File System)原是Apache开源项目Nutch的组件,现在成为是Hadoop的重要组件,它是一款具有高容错性特点的分布式文件系统,它被设计为可以部署在造价低廉的主机集群上。它将一个大文件拆分成固定大小的小数据块,分别存储在集群的各个节点上。因此HDFS可以存储超大的数据集和单个巨大的文件。这样的分布式结构能够进行不同节点的并行读取,提高了系统的吞吐率。同一个数据块存储在不同的数据节点上,保证了HDFS在节点失败时还能继续提供服务,使其具有了容错性。

3.HDFS副本放置策略
这一策略存在以下问题:

  • 在写入时代价过大,需要在不同的机架之间传输大量数据。
  • 当本地副本失效时,从远程结点上恢复数据需要耗费大量数据传输时间。
  • 随机选取存放数据的结点,可能会造成数据存储的负载不均。
11.2.2 HBase

1. HBase简介
Apache HBase是运行于Hadoop平台上的数据库,它是可扩展的、分布式的大数据储存系统。HBase可以对大数据进行随机而实时的读取和写入操作。它的目标是在普通的机器集群中处理巨大的数据表,数据表的行数和列数都可以达到百万级别。受到Google Bigtable 思想启发,Apache开发出HBase, HBase是一个开源的、分布式的、数据多版本储存的、面向列的大数据储存平台。Google的Bigtable是运行于GFS(Google File System)上的,而HBase是运行与Apache开发的Hadoop平台上。

2. 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集群检测系统。

3. HBase体系架构
(1)Client
(2)ZooKeeper
(3)HMaster
(4)HRegionServer
(5)HStore
(6)数据写入HBase的过程
(7)HLog
(8)HBase在HDFS上的存储格式

11.2.4 Redis

1. Redis简介

Redis是一种面向“键/值”对类型数据的分布式NoSQL数据库系统,特点是高性能,持久存储,适应高并发的应用场景。

Redis是一个支持持久化的内存数据库(与Memcache类似),也就是说redis需要经常将内存中的数据同步到磁盘来保证持久化。整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库 数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。

Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像 memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能。

2. Redis的数据类型
Redis并不是简单的键 - 值存储,实际上它是一个数据结构服务器,支持不同类型的值。也就是说,不必仅仅把字符串当作键所指向的值。下列这些数据都可作为值类型:string(字符串)、list(列表)、set(集合)、sorted set(有序集合)、hash(哈希表)。

3. Redis存储机制
Redis能以最快的读写速度将数据读入内存中,并通过异步的方式将数据写入磁盘,所以Redis具有快速和数据持久化的特征。如果不将数据放在内存中,磁盘I / O速度会严重影响Redis的性能。在内存越来越便宜的今天,Redis将会越来越受欢迎。如果设置了最大使用的内存,则数据已有记录数达到内存限值后将不能继续插入新值。
4. Redis分布模式
Redis支持master / slave的模式。在Redis分布模式中,master会将数据同步到slave,而slave不会将数据同步到master。slave启动时会连接master来同步数据。这是一个典型的分布式读写分离模式。我们可以利用master插入数据,利用slave提供检索服务,从而有效减少单个机器的并发访问数量。
通过增加slave数据库的数量,读性能可以线性增长。为了避免master数据库的单点故障,集群一般会采用两台master数据库做双机热备,所以整个集群的读和写的可用性都非常高。

11.2.5 MongoDB

1. MongoDB简介
MongoDB是一个面向集合的、模式自由的文档型数据库。面向集合是指数据被分组到若干集合,这些集合称作聚集(collection)。在数据库中,每个聚集有唯一的名字,可以包含无限个文档。聚集是RDBMS中表的同义词,区别是聚集不需要进行模式定义。模式自由是指数据库并不需要知道将存入到聚集中的文档的任何结构信息。实际上,可以在同一个聚集中存储不同结构的文档。文档型是指存储的数据是键 - 值对的集合,键是字符串,值可以是数据型集合里的任意类型,包括数组和文档。我们把这个数据格式称作BSON(Binary Serialized Document Notation)。

MongoDB特点如下:

  • 面向文档存储
  • 高效的传统存储方式:支持二进制数据及大型对象(如照片和视频)。
  • 复制及自动故障转移
  • Auto-Sharding自动分片支持云级扩展性
  • 动态查询
  • 全索引支持
  • 多语言支持。
  • 易存储复杂的文件类型;
  • 模式自由
  • 支持完全索引,包含内部对象。

2.MongoDB的功能及适用范围
MongoDB的作用如下:

  • 查询:基于查询对象或者类SQL语句搜索文档。查询结果可以排序,进行返回大小限制,可以跳过部分结果集,也可以返回文档的一部分。
  • 插入和更新:插入新文档,更新已有文档。
  • 索引管理:对文档的一个或者多个键(包括子结构)创建索引,删除索引等等。
  • 常用命令:所有MongoDB 操作都可以通过socket传输的DB命令来执行。

MongoDB的适用范围如下:

  • 适合实时的
  • 插入,更新与查询
  • 适合由数十或数百台服务器组成的数据库
  • 网站数据
  • 适合作为信息基础设施的缓存层
  • 大尺寸,低价值的数据
  • 用于对象及JSON数据的存储

MongoDB不适应范围包括:

  • 高度事务性的系统;
  • 传统的商业智能应用;
  • 极为复杂的SQL查询;
  • 高度事务性的系统:例如银行或会计系统。传统的关系型数据库目前还是更适用于需要大量原子性复杂事务的应用程序;
  • 传统的商业智能应用:针对特定问题的BI数据库会对产生高度优化的查询方式。

3.MongoDB数据组织形式
MongoDB组织数据的方式如下:
Key-Value对 > 文档 > 集合 > 数据库。多个Key-Value对组织起来形成类似于JSON格式的文档,多个文档组织成为一个集合,多个集合组织起来,就形成了数据库(database)。单个MongoDB实例可以使用多个数据库。

11.3 大数据计算模式

11.3.1 PRAM

PRAM模型,即并行随机存取机,也称之为SIMD-SM(共享存储的单指令流多数据流)模型,是一种应用于并行计算抽象模型。PRAM模型是顺序的冯•诺伊曼存储程序模型的自然扩展,由若干具有本地存储器的处理器和一个具有无限容量的共享存储器组成,处理器由公共的时钟进行控制,以同步方式运行。
1.PRAM的分类

  • 互斥读和互斥写,简记之为PRAM-EREW。
  • 并行读但互斥写,简记之为PRAM-CREW。
  • 并行读并且并行写,简记之为PRAM-CRCW。

2.PRAM模型的优点

  • RPAM结构简单,简便易行;

  • PRAM能够表达大多数并行算法;

  • PRAM让算法设计变得简单;让并行算法更加容易移植到不同的并行系统上;

  • 可以按需加入一些诸如同步和通信等功能。

3.PRAM模型的缺点

  • PRAM是一个同步模型,其同步过程很费时的;

  • 模型中使用了一个全局共享存储器,且本地存储容量较小,不能很好的体现当前比较多见的分布主存多处理机的性能瓶颈;

  • 单一共享存储器的假定,不适合于异步分布存储的MIMD机器;

  • 假定每个处理器均可在单位时间内访问任何存储单元,因此要求处理机间通信无延迟、无限带宽和无开销,忽略多个处理器在访问同一存储空间的竞争问题以及处理器读写存储单元带宽有限性等实践中普遍存在的问题,这一假设显然是不现实的;

  • 不能很好地描述多线程技术和流水线预取技术,这两种技术当今并行体系结构应用最普遍的技术。

11.3.2 BSP

BSP(Bulk Synchronous Parallel)模型,由哈佛大学Viliant和牛津大学Bill McColl提出,希望像冯•诺伊曼体系结构那样,架起计算机程序语言和体系结构间的桥梁,故又称作桥模型(Bridge Model)。本质上,BSP模型是分布存储的MIMD计算模型,被认为是最有前途的并行计算模型。

1.BSP模型的组成
一个BSP计算机由n个处理机/存储器组成,通过通信网络进行互联。一台BSP并行计算机包含三个部分组成:

  • 并行计算模块
  • 通信模块
  • 路障同步模块

2.BSP模型的优点

  • BSP并行模型独立于体系结构,接近现有的并行系统,可以在绝大多数目标体系结构上有效地实现。
  • BSP并行模型以超步为基本单位进行并行计算,这使得BSP并行程序设计简单清晰,有点类似顺序程序的编写。
  • BSP并行程序的性能是可以预测的,可以在系统编写之前进行理论分析预测系统是否可行。

3.BSP模型的缺点

  • 需要算法设计人员显式地将同步机制编入算法中,导致算法设计有难度。
  • 限制每个超级步至多可以传递h条消息,限制了消息传递的效率。
  • BSP(整体大同步)简化了算法的设计和分析,牺牲了算法运行时间,因为路障延迟意味着所有进程必须等待最慢者。一种改进是采用子集同步,将所有进程按照快慢程度分成若干个子集。如果子集小,其中只包含成对的收发者,则它就变成了异步的个体同步,即logp模型。另一种改进是去除路障同步限制,改用异步模式,即异步BSP(A-BSP)。
11.3.3 LogP

LogP模型是一种分布存储的、点到点通信的多处理机模型,其中通信网络由4个主要参数来描述:

  • L(Latency) 表示源处理机与目的处理机进行消息(一个或几个字)通信所需要的等待或延迟时间的上限,表示网络中消息的延迟。
  • o(overhead)表示处理机准备发送或接收每个消息的时间开销(包括操作系统核心开销和网络软件开销),在这段时间里处理不能执行其它操作。
  • g(gap)表示一台处理机连续两次发送或接收消息时的最小时间间隔,其倒数即微处理机的通信带宽
  • P(Processor)处理机/存储器模块个数。
  • LogP模型假定一个周期完成一次局部操作,并定义为一个时间单位,那么,L,o和g都可以表示成处理器周期的整数倍。

1.LogP模型的特点

  • 抓住了网络与处理机之间的性能瓶颈。
  • 处理机之间异步工作,并通过处理机间的消息传送来完成同步
  • 对多线程技术有一定反映
  • 消息延迟不确定,但延迟不大于L
  • LogP模型鼓励编程人员采用一些好的策略
  • 可以预估算法的实际运行时间。

2.LogP模型的不足

  • 对网络中的通信模式描述的不够深入。
  • 简单地认为远地读操作相当于两次消息传递,未考虑流水线预取技术、Cache引起的数据不一致性以及Cache命中率对计算的影响。
  • 未考虑多线程技术的上下文开销。
  • LogP模型假设用点对点消息路由器进行通信,这增加了编程者考虑路由器上相关通信操作的负担。
11.3.4 MapReduce

MapReduce是Google公司提出的一种用于大规模数据集(大于1TB)的并行运算的编程模型。

1.执行流程

(1)数据分片
(2)Master分配Map任务
(3)分配了map任务的worker读取和处理相关split的内容
(4)Master协调分配reducer到相应Mapper获取数据,期间称为Shuffle,包括一个按Key排序过程。
(5)Reducer对每个Key相应的Value列表进行读取并处理
(6)Reducer将处理后的文件写入HDFS输出文件

2.MapReduce的优点

  • 移动计算而不是移动数据,避免了额外的网络负载。
  • 任务之间相互独立,实现高容错性。
  • 理想状态下可线性扩展的,是为便宜的商业机器而设计的计算模型。
  • MapReduce模型结构简单,终端用户至少只需编写Map和Reduce函数。
  • 集群扩展代价曲线平坦。

3.MapReduce的缺点

  • 一个中心用于同步各个任务。
  • 用MapReduce模型来实现常见的数据库连接操作效率低下。
  • MapReduce集群管理、调试、部署以及日志收集工作困难。
  • 单个Master节点有单点故障的可能性。
  • 当中间结果必须给保留的时候,作业的管理并不简单。
  • 对于集群的参数配置调优需要较多经验。
11.3.5 Spark

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

1.Spark总体架构

  • SparkContext
  • Application
  • Cluster Manager
  • Worker Node
  • Executor
  • Task

2.Spark的优缺点
优点:

  • 在迭代任务方面,Spark的执行效率更高,远超过Hadoop 。
  • Spark能够做到与用户互动式的查询。
  • 快速的故障恢复。RDD的DAG令Spark具有故障恢复的能力。
  • 在不同的Action之间,RDD是可以共享的。

缺点:

  • 对于多用户多作业的集群来说,Spark的Driver很可能形成整个集群性能的瓶颈。
  • Spark不适用于异步更新共享状态、数据的操作,常见的有增量的网络爬虫系统的数据库。

11.4 大数据分析处理平台

11.4.2 HadoopDB 平台

1.HadoopDB原理
HadoopDB旨在结合MapReduce的可扩展性优势和并行数据库的性能、效率优势,以管理和分析大数据。HadoopDB背后的基本思想是,连接多个单节点数据库系统 (PostgreSQL),使用 Hadoop 作为任务协调者和网络通信层;查询用 SQL 表达,但是其执行是使用 MapReduce 框架跨节点并行化的,以便将单一查询工作尽可能推送到相应的节点数据库中。

2.HadoopDB的优缺点
HadoopDB的优点:

  • 结合Hive对SQL强大的支持并直接生成map/reduce任务,不需要再手动编写map/reduce程序;
  • 利用关系数据库查数据利用单节点的性能优势;
  • 利用Hadoop所具有的高容错性、高可用性以及对于高通量计算的性能优越性。

HadoopDB的优点:

  • 如果不想手动编写map/reduce程序,则只能查询的SQL语句的数据来源不能来自多张表,原因是因为他目前只相当对一个数据库的多个分块并行查询,所以不能做到多分块的数据关系处理。当然为了实现多表join,可手动改造InputFormat以实现。
  • 其数据预处理代价过高:数据需要进行两次分解和一次数据库加载操作后才能使用。
  • 将查询推向数据库层只是少数情况,大多数情况下,查询仍由Hive 完成
  • 维护代价过高.不仅要维护Hadoop系统,还要维护每个数据库节点。
  • 目前尚不支持数据的动态划分,需要手工一次划分好。

11.7 大数据研究与发展方向

11.7.1 数据的不确定性与数据质量
  • 大数据的不确定性要求我们在处理数据时也要应对这种不确定性,包括数据的收集,存储、建模、分析都需要新的方法来应对
  • 保证有效的数据不丢失,所以需要研究出一种新的计算模式,一种高效的计算模型和方法,这样数据的质量和数据的时效性才能有所保证。
11.7.2 跨领域的数据处理方法的可移植性

广泛吸纳其他研究领域的原理模型,然后进行有效的结合,从而提高大数据处理的效率。

11.7.3 数据处理的时效性保证——内存计算
  • 新型存储级内存 (storageclass memory, SCM)
    器件设计成为新内存体系的一部分,而非作为虚拟内存交换区域的外存补充,计算不仅存在于传统的内存上,也在新型存储级内存上发生。
  • 电阻存储器 、铁电存储器 、相变存储器等为代表的新兴非易失性随机存储介质 技术的发展,使得传统的内存与存储分离的界限逐渐变得模糊。
  • 新型存储介质的访问性能逐步逼近动态随机存取存储器 (dynamic random access memory,
    DRAM),但是其容量和单位价格却将远低于 DRAM。
  • 以新型非易失型存储设备为基础构建混合内存体系以加速计算的模式,称为内存计算。
11.7.4 流式数据的实时处理
  • CluStream、D-Stream等框架
  • 在资源状态信息的实时监控和调整、资源敏感策略的构建、聚类策略的调整等方面仍需要继续研究完善。
11.7.5 大数据应用

1.医学领域的大数据应用

  • 临床决策支持系统
  • 医疗数据透明度
  • 医学图像挖掘

2.智能交通领域的大数据应用

  • 提高交通运行效率。
  • 提高交通安全水平。
  • 提供环境监测方式。

3.智能电网领域的大数据应用

  • 监测电力设备状态的数据挖掘

你可能感兴趣的:(大数据技术与实践)