第十一章 大数据技术与实践

第十一章 大数据技术与实践

11.1大数据概述

  1. 大数据产生的背景
    早在1980年,著名未来学家阿尔文·托夫勒便在《第三次浪潮》一书中,将大数据比作“第三次浪潮的华彩乐章”。
  2. 大数据的定义
    大数据一词由英文“big data”翻译而来,是最近几年兴起的概念,目前还没有一个统一的定义。相比于过去的“信息爆炸”的概念,它更强调数据量的“大”。
  3. 大数据的4V特征
    大 数据的4V特征
    1.Volume (数据量大):大数据的首要特征是数据体量巨大,当今世界需要进行及时处理以提取有用信息的数据数量级已经从TB级别跃升到PB甚至FB级别。
    2.Variety (数据类型多):大数据的挑战不仅在于数据量大,也体现在数据类型的多样化。除了网络日志、地理位置信息等具有固定结构的数据之外,还有视频、图片等非结构化数据。
    3.Velocity (处理速度快):信息的价值在于及时,超过特定时限的信息就失去了使用的价值。大数据的商业应用主要是分析大量历史数据以预测未来形势,帮助商业公司做出决策,处理时间过长会让其失去价值。
    4.Value (价值高): 大数据商业价值高,但是价值密度低。单个数据的价值很低,只有大量数据聚合起来处理才能借助历史数据预测未来走势,体现出大数据计算的价值所在。

11.2 大数据存储平台

要对大数据进行处理需要一个能够存储所有数据的平台。由于计算机硬盘存储技术发展的速度远远赶不上大数据的爆炸式增长,单机存储密度有限,故分布式存储就成为一个自然而然的选择。
1.HDFS

  1. HFDS简介
    HDFS原是Apache开源项目Nutch的组件,现在成为Hadoop的重要组件。它是一款具有高容错性的分布式文件系统,可以部署在造价低廉的主机集群上。
  2. HDFS体系结构
    HDFS采用master/slave结构模型,一个HDFS集群由一个NameNode和多个DataNode组成,除此之外还可以有一个 Scondary NameNode。其中, NameNode充当master的角色。管理文件系统的名称空间以及对客户端的访问操作进行控制。HDFS 在用户看来就像一个类似于 Linux原生文件系统。它提供的Shell接口中的各种文件操作也类似于Linux。在内部,它把一个文件分割成许多块,这此数据块被分散存储到集群中的各个DataNode中,由NameNode来执行文件系统中文件和文件夹的打开、关闭、重命名操作。NameNode还负责各个数据块到各个DataNode的布局和映射。DataNode负责处理米自客户端的对HDFS本地数据块的读取和写入操作,还负责对数据块的生成、删除以及任NameNode的指导下创建数据块的副本。
  3. HDFS副本放置策略
    HDFS副本放置策略对HDFS的可靠性和性能至关重要。副本放置策略关系到数据的可靠性、可用性和网络带宽的利用率。对副本放置策略的优化让HDFS在分布式文件系统中脱颖而出,这一优化是以大量实践经验为基础实现的。但是这一策略存在以下问题:
    1.在写入时代价过大,需要在不同的机架之间幻术大量数据。
    2.当本地数据副本失效时,从远程结点上恢复数据需要耗费大量数据传输时间。
    3.随机选取存放数据的结点,可能会造成数据存储的负载不均。

2.HBase

  1. HBase简介
    Apache HBase是受Google BigTable 思想启发而开发的、运行于Hadoop平台上的数据库,是可扩展的、分布式的大数据存储系统。HBase可以对大数据进行随机、实时的读取和写人操作。
  2. HBase的特性
    HBase的特性包括:
    1.线性和模块化的可扩展性
    2.严格的读写一致性
    3.自动且可配置的数据表分片机制
    4.RegionSever之间可以进行热备份切换
    5.为MapReduce操作HBase数据表提供Java基础类
    6.易用的Java客户端访问API
    7.支持实施查询的数据块缓存和模糊过滤
    8.提供Thrift网管和REST-ful Web服务,并支持XML、Protobuf和二进制编码
    9.可扩展的Jrubyshell
    10.支持通过Hadoop检测子系统或JMX 导出检测数据到文件、Ganglia集群检测系统。
  3. HBase体系架构
    HBase集群一般由一个 HBase、多个HRegionServer组成。整个集群由ZooKeeper作为同步的协调者。
    HRegionServer是HBase中最核心的模块,主要负责响应用户I/O请求。

3.Cassandra

  1. Cassandra简介
    Cassandra是社交网络理想的数据库,适合于实时事务处理和提供交互型数据。它以Amzaon的完全分布式的Dynamo为基础,结合了Google BigTable基于列族的数据模型。P2P去中心化的存储, 目前在Twitter和Digg中都有使用。在CAP特性上, HBase选择了一致性和分区容忍性, Cassandra更倾向于可用性和分区容忍性,而在一致性上有所减弱。
    类Dynamo特性:
    1.对称的, P2P架构。
    2.无特殊结点,无单点故障。
    3.基于Gossip的分布式管理。
    4.通过分布式哈希表放置数据。
    5.可插拔的分区。
    6.可插拔的拓扑发现。
    7.可配置的放置策略。
    8.可配置的最终一致性。
    类BigTable特性:
    1.列族数据模型。
    2.可配置, 2级映射,超级行族。
    3.SSTable磁盘存储。
    4.仅支持追加方式提交日志。
    5.Memtabe支持缓冲区和排序。
    6.不可修改的SSTable文件。
    7.集成Hadoop。

4.Redis

  1. Redis简介
    Redis是种面向“键-值“对类型数据的分布式NoSQL数据库系统,其特点是高性能、持久存储,能适应高并发的应用场景。它出现较晚,但发展迅速,目前已被许多大型机构采用。其最大的魅力是支持保存多种数据结构,此外单个值的最大限制是1GB。
  2. Redis的数据类型
    Redis并不是简单的键-值存储,实际上它是一个数据结构服务器、支持不同类型的值。也就是说,不必仅仅把字符串当作键所指向的值。下 列这些数据类型都可作为值类型:string(字符串)、list (列表)、set(集合)、sorted set (有序集合)、hash (哈希表)。
  3. Redis存储机制
    Redis能以最快的读写速度将数据读入内存中,并通过异步地方式将数据写入磁盘,所有Redis具有快速和数据持久化的特征。
  4. Redis分布模式
    Redis支持master/slave的模式。在Redis分布模式中,master 会将数据同步到slave,而slave不会将数据同步到master。slave 启动时会连接master来同步数据。,
    通过增加slave数据库的数量,读性能可以线性增长。为了避免master数据库的单点故障,集群一般会采用两台master数据库做双机热备,所以整个集群的读和写的可用性都非常高。

5.MongoDB

  1. MongoDB简介
    MongoDB是一个面向集合的、模式自由的文档型数据库。面向集合是指数据被分组到若干集合,这些集合称作聚集( collction)。
    MongoDB的特点如下:
    1.面向文档存储:类JSON数据模式,简单而强大。
    2.高效的传统存储方式:支持二进制数据及大型对象。
    3.复制及自动故障转移:Mongo数据库支持服务器之间的数据复制,支持主从服务器之入间的相互复制和自动故障转移。
    4.自动分片支持云级扩展性(处于早期Alpha阶段):自动分片功能支持水平的数据库集群,可动态添加额外的机器。
    5.动态查询:支持丰富的查询表达式。查询指令使用JSON形式的标记,可方便地查询中文档中内嵌的对象及数组。
    6.支持全索引:包括文档内嵌对象及数组。Mongo的查询优化器会分析查询表达式,并生成一个高效的查询计划。
    7.支持Ruby、Pythoh、Java、C++、PHP等多种语言。
    8.面向集合存储,易存储对象类型的数据:存储在集合中的文档,被存储为键值对的形式。
    9.模式自由:存储在MongoDB数据库中的文件不需要知道它的任何结构定义。
    10.查询监视:MongoDB包含一个监视工具,用于分析数据库操作的性能。

11.4 大数据分析平台

  1. Impala平台
    Impala的原理
    mpala是CDH的一个组件,是一个对大量数据并行处理的查询引擎。Impala 是受到Google的Dremel原理的启发而开发出来的,除了Dremel的全部功能之外,它提供了Dremel 不具备的Join功能,可以说是Dremel的超集。

  2. HadoopDB平台
    HadoopDB是由美国耶鲁大学计算机科学教授Daniel J. Abadi及其团队推出开源并行数据库。HadoopDB 是一个MapReduce和传统关系数据库的结合方案,以充分利用RDBMS的性能和Hadoop的容错、分布特性。它采用了许多不同的开源组件。
    1.HadoopDB原理任务
    HadoopDB的基本思想是,连接多个单结点数据库系统,使用、Hadoop作为任务协调者和网络通信层;查询用SQL表达,但是其执行是使用MapReduce框架跨结点并行化的,以便将单一查询工作尽可能推送到相应的结点数据库中。因为集两种技术的优势于一身,HadoopDB可以获MapReduce等大规模并行数据基础设施的容错性。在这些基础设施中,服务器故障对整个网络的影响非常小。HadoopDB可以执行复杂的分析,速度几乎与已有的商用并行数据库一样快。HadoopDB的基本原理是,利用Hadoop对部署在集群中多个单一结点上的DBMS服务器进行存取。通过发起SQL查询,HadoopDB将尽可能多的数据处理推给数据库引擎来进行,这样就创建了一个类似于无共享并行数据库的系统。
    2.HaoopDB的优缺点
    HadoopDB的优点如下:
    1.结合Hive对SQL强大的支持并直接生成Map Reduce任务,不需要再手动编写Map Reduce 程序。
    2.利用关系数据库查询数据利用了其结点的性能优势。
    3.可以利用Haoop所具有的高容错性、高可用性以及对于高通量计算的性能优越性。
    HadoopDB的缺点如下:
    1.如果不想手动编写Map Reduce程序,则查询的SQL语句的数据不能来源于多张表,因为目前只相当于一个数据库的多个分块并行查询,所以不能处理多分块的数据关系。
    2.其数据预处理代价过高。数据需要进行两次分解和一-次数据库加载操作后才能使用
    3.将查询推向数据库层只是少数情况,大多数情况下查询仍由Hive完成。数据仓库查询往往涉及多表连接,由于连接的复杂性,难以做到在保持连接数据局部性的前提下将参与连接的多张表按照某种模式划分。
    4.维护代价过高,不仅要维护Hadoop系统,还要维护每个数据库结点。
    5.自前尚不支持数据的动态划分,需要手动一次划分好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值