大数据技术与实践

大数据存储平台

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

HDFS体系结构

HDFS采用master/slave结构模型,一个 HDFS集群由一个NameNode和多个DataNode组成,除此之外还可以有一个Secondary NameNode。其中,NameNode充当master的角色,管理文件系统的名称空间以及对客户端的访问操作进行控制。DataNode充当slave的角色,通常一个集群中每个结点主机都运行一个DataNode进程,用于管理HDFS存储在本机上的那部分数据。Secondary NameNode主要用于对NameNode的操作进行记录,以便当NameNode崩溃时进行恢复工作。HDFS在用户看来就像-一个类似于Linux原生文件系统,它提供的Shell接口中的各种文件操作也类似于Linux。在内部,它把-个文件分割成许多块,这些数据块被分散存储到集群中的各个DataNode中,由NameNode来执行文件系统中文件和文件夹的打开、关闭、重命名操作。NameNode还负责各个数据块到各个DataNode的布局和映射。DataNode 负责处理来自客户端的对HDFS本地数据块的读取和写人操作,还负责对数据块的生成、删除以及在NameNode的指导下创建数据块的副本。

HBase简介

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

HBase数据模型

云计算与大数据:第十一章
物理视图
云计算与大数据:第十一章

Cassandra

Cassandra是社交网络理想的数据库,适合于实时事务处理和提供交互型数据。以Amazon的完全分布式的Dynamo为基础,结合了Google BigTable基于列族(Column Family)的数据模型,P2P去中心化的存储,目前twitter和digg中都有使用。在CAP特性上(CAP即Consistnecy 一致性,Avaliability 可用性,Partition-tolerance分区容忍性),HBase选择了CP,Cassandra更倾向于AP,而在一致性上有所减弱。
列是数据增量最底层(也就是最小)的部分。
超级列与列的区别就是,标准列的value是一个字节数组,而超级列的value包含多个列,且超级列没有时间戳,超级列中的各个列的时间戳可以是不同的。
列族概念和存储方式与HBase类似。
超级列族概念上和普通列族相似,只不过它是超级列的集合

Cassandra分区策略

在Cassandra中,Token是用来分区数据的关键。每个节点都有一个独一无二的Token,表明该节点分配的数据范围。节点的Token形成一个Token环,如图12-4所示。例如,使用一致性HASH进行分区时,键值对将根据一致性Hash值来判断数据应当属于哪个Token。
云计算与大数据:第十一章

Cassandra一致性级别

云计算与大数据:第十一章

Redis简介

Redis是一种面向“键/值”对类型数据的分布式NoSQL数据库系统,特点是高性能,持久存储,适应高并发的应用场景。
   Redis是一个支持持久化的内存数据库(与Memcache类似),也就是说redis需要经常将内存中的数据同步到磁盘来保证持久化。整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库 数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。
  Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像 memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能。

MongoDB

MongoDB 是一个面向集合的,模式自由的文档型数据库。
在数据库里每个聚集有一个唯一的名字,可以包含无限个文档。聚集是RDBMS中表的同义词,区别是聚集不需要进行模式定义。
面向文档存储
高效的传统存储方式:支持二进制数据及大型对象(如照片和视频)。
复制及自动故障转移
Auto-Sharding自动分片支持云级扩展性
动态查询
全索引支持
多语言支持。
易存储复杂的文件类型;
模式自由
支持完全索引,包含内部对象。

大数据计算模式

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

PRAM优缺点

优点:
  RPAM结构简单,简便易行;
  PRAM能够表达大多数并行算法
  PRAM让算法设计变得简单;让并行算法更加容易移植到不同的并行系统上;
  可以按需加入一些诸如同步和通信等功能。
缺点:
  1)PRAM是一个同步模型,其同步过程很费时的;
  2)模型中使用了一个全局共享存储器,且本地存储容量较小,不能很好的体现当前比较多见的分布主存多处理机的性能瓶颈;
  3)单一共享存储器的假定,不适合于异步分布存储的MIMD机器;
  4)假定每个处理器均可在单位时间内访问任何存储单元,因此要求处理机间通信无延迟、无限带宽和无开销,忽略多个处理器在访问同一存储空间的竞争问题以及处理器读写存储单元带宽有限性等实践中普遍存在的问题,这一假设显然是不现实的;
  5)不能很好地描述多线程技术和流水线预取技术,这两种技术当今并行体系结构应用最普遍的技术。

BSP

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

BSP模型的优缺点

优点:
BSP并行模型独立于体系结构,接近现有的并行系统,可以在绝大多数目标体系结构上有效地实现。
BSP并行模型以超步为基本单位进行并行计算,这使得BSP并行程序设计简单清晰,有点类似顺序程序的编写。
BSP并行程序的性能是可以预测的,可以在系统编写之前进行理论分析预测系统是否可行。
局限:
需要算法设计人员显式地将同步机制编入算法中,导致算法设计有难度。
限制每个超级步至多可以传递h条消息,限制了消息传递的效率。
BSP(整体大同步)简化了算法的设计和分析,牺牲了算法运行时间,因为路障延迟意味着所有进程必须等待最慢者。一种改进是采用子集同步,将所有进程按照快慢程度分成若干个子集。如果子集小,其中只包含成对的收发者,则它就变成了异步的个体同步,即logp模型。另一种改进是去除路障同步限制,改用异步模式,即异步BSP(A-BSP)。

Cloudera Impala平台介绍

Impala是CDH(Cloudera Distribution with Apache Hadoop)的一个组件,是一个对大量数据并行处理(MPP-Massively Parallel Processing)的查询引擎。

MapReduce、Hive与Impala比较

云计算与大数据:第十一章

相关文章: