大数据技术与实践

大数据概述

  • 大数据的“大”是相对而言的,是指所处理的数据规模巨大到无法通过目前主流数据库软件工具,在可以接受的时间内完成抓取、储存、管理和分析,并从中提取出人类可以理解的资讯。业界普遍认同大数据具有4个 V特征(数据量大Volume、变化速度快Velocity、多类型Variety与高价值Value)。简而言之,大数据可以被认为是数据量巨大且结构复杂多变的数据集合。

大数据存储平台

  1. HDFS(全称Hadoop Distributed File System)原是Apache开源项目Nutch的组件,现在成为是Hadoop的重要组件,它是一款具有高容错性特点的分布式文件系统,它被设计为可以部署在造价低廉的主机集群上。它将一个大文件拆分成固定大小的小数据块,分别存储在集群的各个节点上。因此HDFS可以存储超大的数据集和单个巨大的文件。这样的分布式结构能够进行不同节点的并行读取,提高了系统的吞吐率。同一个数据块存储在不同的数据节点上,保证了HDFS在节点失败时还能继续提供服务,使其具有了容错性。
  2. HBase Apache HBase是运行于Hadoop平台上的数据库,它是可扩展的、分布式的大数据储存系统。HBase可以对大数据进行随机而实时的读取和写入操作。它的目标是在普通的机器集群中处理巨大的数据表,数据表的行数和列数都可以达到百万级别。

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

  1. Redis是一种面向“键/值”对类型数据的分布式NoSQL数据库系统,特点是高性能,持久存储,适应高并发的应用场景。Redis是一个支持持久化的内存数据库(与Memcache类似),也就是说redis需要经常将内存中的数据同步到磁盘来保证持久化。整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库 数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。
  2. MongoDB 是一个面向集合的,模式*的文档型数据库。
    在数据库里每个聚集有一个唯一的名字,可以包含无限个文档。聚集是RDBMS中表的同义词,区别是聚集不需要进行模式定义。

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

大数据计算模式

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

PRAM模型对各个处理机对共享存储器是否可并发读写,可分类为
互斥读和互斥写,简记之为PRAM-EREW;
并行读但互斥写,简记之为PRAM-CREW。
并行读并且并行写,简记之为PRAM-CRCW。

  1. BSP (Bulk Synchronous Parallel)模型,由哈佛大学Viliant和牛津大学Bill McColl提出,希望像冯·诺伊曼体系结构那样,架起计算机程序语言和体系结构间的桥梁,故又称作桥模型(Bridge Model)。本质上,BSP模型是分布存储的MIMD计算模型,被认为是最有前途的并行计算模型。
  2. LogP模型 即是一种分布存储的、点到点通信的多处理机模型,其中通信网络由4个主要参数来描述
  • L(Latency) 表示源处理机与目的处理机进行消息(一个或几个字)通信所需要的等待或延迟时间的上限,表示网络中消息的延迟。
  • o(overhead)表示处理机准备发送或接收每个消息的时间开销(包括操作系统核心开销和网络软件开销),在这段时间里处理不能执行其它操作。
  • g(gap)表示一台处理机连续两次发送或接收消息时的最小时间间隔,其倒数即微处理机的通信带宽
  • P(Processor)处理机/存储器模块个数。
    LogP模型假定一个周期完成一次局部操作,并定义为一个时间单位,那么,L,o和g都可以表示成处理器周期的整数倍。
  1. MapReduce MapReduce是Google公司提出的一种用于大规模数据集(大于1TB)的并行运算的编程模型。

软件实现
指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,
指定并发的Reduce(归纳)函数,用来保证所有映射的键值对中的每一个共享相同的键组。
大数据技术与实践
执行流程
(1)数据分片
(2)Master分配Map任务
(3)分配了map任务的worker读取和处理相关split的内容
(4)Master协调分配reducer到相应Mapper获取数据,期间称为Shuffle,包括一个按Key排序过程。
(5)Reducer对每个Key相应的Value列表进行读取并处理
(6)Reducer将处理后的文件写入HDFS输出文件

  1. Spark Spark是一种与 Hadoop 相似的而又强于Hadoop的开源集群计算环境,由加州大学伯克利分校 AMP 实验室开发。Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。
  2. RDD 弹性分布式数据集RDD提供了一个抽象的数据架构,我们不必担心底层数据的分布式特性,而应用逻辑可以表达为一系列转换处理。通常应用逻辑是以一系列Transformation和Action来表达的。在执行Transformation中原始RDD是不变而不灭的,Transformation后产生的是新的RDD。

大数据分析处理平台

Cloudera Impala平台介绍
  • Impala是CDH(Cloudera Distribution with Apache Hadoop)的一个组件,是一个对大量数据并行处理(MPP-Massively Parallel Processing)的查询引擎。
HadoopDB 平台介绍
  • HadoopDB旨在结合MapReduce的可扩展性优势和并行数据库的性能、效率优势,以管理和分析大数据。HadoopDB背后的基本思想是,连接多个单节点数据库系统 (PostgreSQL),使用 Hadoop 作为任务协调者和网络通信层;查询用 SQL 表达,但是其执行是使用 MapReduce 框架跨节点并行化的,以便将单一查询工作尽可能推送到相应的节点数据库中。

HadoopDB的优点:
结合Hive对SQL强大的支持并直接生成map/reduce任务,不需要再手动编写map/reduce程序;
利用关系数据库查数据利用单节点的性能优势;
利用Hadoop所具有的高容错性、高可用性以及对于高通量计算的性能优越性。
HadoopDB的缺点有:
如果不想手动编写map/reduce程序,则只能查询的SQL语句的数据来源不能来自多张表,原因是因为他目前只相当对一个数据库的多个分块并行查询,所以不能做到多分块的数据关系处理。当然为了实现多表join,可手动改造InputFormat以实现;
其数据预处理代价过高:数据需要进行两次分解和一次数据库加载操作后才能使用;
将查询推向数据库层只是少数情况,大多数情况下,查询仍由Hive 完成.
维护代价过高.不仅要维护Hadoop系统,还要维护每个数据库节点;
目前尚不支持数据的动态划分,需要手工一次划分好。

大数据研究与发展方向

大数据未来发展方向

  • 数据的不确定性与数据质量
  1. 大数据的不确定性要求我们在处理数据时也要应对这种不确定性,包括数据的收集,存储、建模、分析都需要新的方法来应对
  2. 保证有效的数据不丢失,所以需要研究出一种新的计算模式,一种高效的计算模型和方法,这样数据的质量和数据的时效性才能有所保证。
  • 跨领域的数据处理方法的可移植性
  1. 广泛吸纳其他研究领域的原理模型,然后进行有效的结合,从而提高大数据处理的效率
  • 数据处理的时效性保证——内存计算
  1. 新型存储级内存 (storageclass memory, SCM) 器件设计成为新内存体系的一部分,而非作为虚拟内存交换区域的外存补充,计算不仅存在于传统的内存上,也在新型存储级内存上发生。
  2. 电阻存储器 、铁电存储器 、相变存储器等为代表的新兴非易失性随机存储介质 技术的发展,使得传统的内存与存储分离的界限逐渐变得模糊
  3. 新型存储介质的访问性能逐步逼近动态随机存取存储器 (dynamic random access memory, DRAM),但是其容量和单位价格却将远低于 DRAM。
  4. 以新型非易失型存储设备为基础构建混合内存体系以加速计算的模式,称为内存计算。
  • 对于流式数据的实时处理
  1. CluStream、D-Stream等框架
  2. 在资源状态信息的实时监控和调整、资源敏感策略的构建、聚类策略的调整等方面仍需要继续研究完善。
大数据应用

大数据应用方面的例子

  • 医学领域的大数据应用
    临床决策支持系统
    医疗数据透明度
    医学图像挖掘
  • 智能交通领域的大数据应用
    提高交通运行效率。
    提高交通安全水平。
    提供环境监测方式。
  • 智能电网领域的大数据应用
    监测电力设备状态的数据挖掘