《分布式计算、云计算与大数据》第十一章

第11章 大数据技术与实践

1、大数据概述:大数据:指无法在可承受的时间内用软硬件进行捕捉、管理和处理的数据集合,需要新处理模式才能使数据集合称为具有更强的决策力、洞察力和流程优化等能力的海量、多样化的信息资产。
2、大数据产生背景:
1.数据量大,数据种类多。
2.海量数据的高存储成本,大数据两下数据处理性能不足,流式数据处理缺失。
3.优先的扩展能力,单一数据源。
4.数据资产对外增值。
2、大数据的4V特征
1.量大(Volume):存储大,计算量大;
2.样多(Variety):来源多,格式多;
3.快速(Velocity): 生成速度快,处理速度要求快。
4.价值(Value):价值密度低,和数据总量的大小成反比。
3、大数据存储平台
1.HDFS:分布式文件系统(HDFS)是指被设计成适合运行在通用硬件上的分布式文件系统(Distributed File System)。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分。
2.HDFS设计目标:1. 检测和恢复硬件故障 2.存储大数据集 3.应用程序流式的访问hdfs上的数据集 4.可移植性让计算随数据的位置从而移动降低了硬件负担,节省网络带宽。
HDFS体系结构

  1. HDFS副本放置策略  
    HDFS副本放置策略对于HDFS可靠性和性能至关重要。副本放置策略关系到数据的可靠性、可用性和网络带宽的利用率。对于副本放置策略的优化让HDFS在分布式文件系统中脱颖而出,这一调优是需要大量实践经验作为依托的。
      HDFS采用基于机架感知的副本放置策略,将副本存放在不同的机架上,即第一个副本放在客户本地节点上,另外两个副本随机放置在远程机架上,这样可以防止当某个机架失效时数据的丢失,在一个数据中心中往往不只有一个机架,对于大部分数据中心来说,不同机架上节点之间的通信需要经过多个交换机,其带宽比相同机架节点之间的通信带宽要小。因此,基于机架感知的副本放置策略可以在网络带宽和数据可靠性之间取得平衡。

2、HBase:HBase是一个分布式的、面向列的开源数据库,一个结构化数据的分布式存储系统”。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。
1.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体系架构
《分布式计算、云计算与大数据》第十一章_第1张图片

3、cassandra:Apache Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集Google BigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身。Facebook于2008将 Cassandra 开源,此后,由于Cassandra良好的可扩放性,被Digg、Twitter等知名Web 2.0网站所采纳,成为了一种流行的分布式结构化数据存储方案。有hbase的列和列族的机制,同时又有自己的超级列和超级族。
4、Redis:是一种面向“键/值”对类型数据的分布式NoSQL数据库系统,特点是高性能,持久存储,适应高并发的应用场景。
Redis是一个支持持久化的内存数据库(与Memcache类似),也就是说redis需要经常将内存中的数据同步到磁盘来保证持久化。整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库 数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。
 Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像 memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能。
5、MongoDB:是一个基于分布式文件存储 [1] 的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
1.MongoDB的功能及使用范围
网站数据:Mongo非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。
缓存:由于性能很高,Mongo也适合作为信息基础设施的缓存层。在系统重启之后,由Mongo搭建的持久化缓存层可以避免下层的数据源过载。
大尺寸,低价值的数据:使用传统的关系型数据库存储一些数据时可能会比较昂贵,在此之前,很多时候程序员往往会选择传统的文件进行存储。
高伸缩性的场景:Mongo非常适合由数十或数百台服务器组成的数据库。Mongo的路线图中已经包含对MapReduce引擎的内置支持。
用于对象及JSON数据的存储:Mongo的BSON数据格式非常适合文档化格式的存储及查询。
  2.组织数据的方式如下:Key-Value对 > 文档 > 集合 > 数据库。
 多个Key-Value对组织起来形成类似于JSON格式的文档,多个文档组织成为一个集合,多个集合组织起来,就形成了数据库(database)。单个MongoDB实例可以使用多个数据库。
6、大数据计算模式
1.PRAM:即并行随机存取机,也称之为SIMD-SM(共享存储的单指令流多数据流)模型,是一种应用于并行计算抽象模型。PRAM模型是顺序的冯·诺伊曼存储程序模型的自然扩展,由若干具有本地存储器的处理器和一个具有无限容量的共享存储器组成,处理器由公共的时钟进行控制,以同步方式运行。

2.PRAM分类:
1.互斥读和互斥写,简记之为PRAM-EREW;
2.并行读但互斥写,简记之为PRAM-CREW;
3.并行读并且并行写,简记之为PRAM-CRCW。
7、BSP:由哈佛大学Viliant和牛津大学Bill McColl提出,希望像冯·诺伊曼体系结构那样,架起计算机程序语言和体系结构间的桥梁,故又称作桥模型(Bridge Model)。本质上,BSP模型是分布存储的MIMD计算模型,被认为是最有前途的并行计算模型。
1.BSP模型的组成:一个BSP计算机由n个处理机/存储器组成,通过通信网络进行互联,。一台BSP并行计算机包含三个部分组成:并行计算模块、通信模块、路障同步模块。
一台BSP并行计算机由3个部分组成:1.并行计算机模块;2.通信模块3.路障同步模块
8、LogP:LogP使用了L,O,G,P四个参数来描述这个模型。LogP模型是一种面向分布式存储器、点对点通信的多计算机系统的并行计算模型。
9、MapReduce:是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)“和"Reduce(归约)”,是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。
1.MapReduce执行流程:
1.数据分片
2.Master分配Map任务
3.分配了map任务的worker读取和处理相关split的内容
4.Master协调分配reducer到相应Mapper获取数据,期间称为Shuffle,包括一个按Key排序过程。
5.Reducer对每个Key相应的Value列表进行读取并处理
6.Reducer将处理后的文件写入HDFS输出文件
《分布式计算、云计算与大数据》第十一章_第2张图片
10、Spart总体构架:Spark 是一种与 Hadoop 相似的而又强于Hadoop的开源集群计算环境,由加州大学伯克利分校 AMP 实验室开发。Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。
11、大数据分析处理平台
1.impala平台:Impala是CDH(Cloudera Distribution with Apache Hadoop)的一个组件,是一个对大量数据并行处理(MPP-Massively Parallel Processing)的查询引擎。
2.Impala基本构架
《分布式计算、云计算与大数据》第十一章_第3张图片
12、HadoopDB平台:HadoopDB旨在结合MapReduce的可扩展性优势和并行数据库的性能、效率优势,以管理和分析大数据。HadoopDB背后的基本思想是,连接多个单节点数据库系统 (PostgreSQL),使用 Hadoop 作为任务协调者和网络通信层;查询用 SQL 表达,但是其执行是使用 MapReduce 框架跨节点并行化的,以便将单一查询工作尽可能推送到相应的节点数据库中。
1.HadoopDB总体架构
《分布式计算、云计算与大数据》第十一章_第4张图片
2. HadoopDB优缺点:
优点:

  1. 结合HIVe对SQL,强大的支持并直接生成Map Reduce任务,不需要手动编写Map Reduce程序
  2. 利用关系数据库查询数据,利用了其单节点的性能优势
  3. 可以利用Hadoop锁具的高容错性,高可用性,以及对高通量计算的性能优越性
    缺点:
  4. 如果不想手动编写Map Reduce程序,则查询SQL数据,不能来源于多张表,因为目前只相当于对一个数据库的多个分块并行查询,所以不能处理多分块的数据关系。
  5. 其数据预处理代价过高
  6. 将查询推向数据库底层只是少数情况,大多数情况查询仍有hive完成
  7. 维护代价过高,不仅要维护Hadoop系统,还要维护每个数据库结点
  8. 目前尚不支持数据库的动态划分,需要手动一次划分好

你可能感兴趣的:(《分布式计算、云计算与大数据》第十一章)