精华内容
参与话题
问答
  • 大数据技术原理与应用(第2版) 大数据技术原理与应用(第2版)
  • 林子雨大数据技术原理与应用PDF,不可用于商业用途,如有版权问题,请联系删除!
  • 大数据技术原理与应用 概念、存储、处理、分析与应用 大数据技术原理与应用 概念、存储、处理、分析与应用
  • 大数据技术原理与应用-林子雨版-课后习题答案

    万次阅读 多人点赞 2019-06-26 13:29:23
    1.试述信息技术发展史上的3次信息化浪潮及具体内容。 信息化浪潮 发生时间 标志 解决问题 代表公司 第一次浪潮 1980年前后 个人...

    第一章

    1.试述信息技术发展史上的3次信息化浪潮及具体内容。

    信息化浪潮

    发生时间

    标志

    解决问题

    代表公司

    第一次浪潮

    1980年前后

    个人计算机

    信息处理

    Intel、AMD、IBM、苹果、微软、联想、戴尔、惠普等

    第二次浪潮

    1995年前后

    互联网

    信息传输

    雅虎、谷歌、阿里巴巴、百度、腾讯等

    第三次浪潮

    2010年前后

    物理网、云计算和大数据

    信息爆炸

    将涌现出一批新的市场标杆企业

    2.试述数据产生方式经历的几个阶段

    答: 运营式系统阶段,用户原创内容阶段,感知式系统阶段。

    3.试述大数据的4个基本特征

    答:数据量大、数据类型繁多、处理速度快和价值密度低。

    4.试述大数据时代的“数据爆炸”的特性

    答:大数据时代的“数据爆炸”的特性是,人类社会产生的数据一致都以每年50%的速度增长,也就是说,每两年增加一倍。

    5.数据研究经历了哪4个阶段?

    答:人类自古以来在科学研究上先后历经了实验、理论、计算、和数据四种范式。

    6.试述大数据对思维方式的重要影响

    答:大数据时代对思维方式的重要影响是三种思维的转变:全样而非抽样,效率而非精确,相关而非因果。

    7.大数据决策与传统的基于数据仓库的决策有什么区别

    答:数据仓库具备批量和周期性的数据加载以及数据变化的实时探测、传播和加载能力,能结合历史数据和实时数据实现查询分析和自动规则触发,从而提供对战略决策和战术决策。

    大数据决策可以面向类型繁多的、非结构化的海量数据进行决策分析。

    8.举例说明大数据的基本应用

    答:

    领域

    大数据的应用

    金融行业

    大数据在高频交易、社区情绪分析和信贷风险分析三大金融创新领域发挥重要作用。

    汽车行业

    利用大数据和物联网技术的五人驾驶汽车,在不远的未来将走进我们的日常生活

    互联网行业

    借助于大数据技术,可以分析客户行为,进行商品推荐和有针对性广告投放

    个人生活

    大数据还可以应用于个人生活,利用与每个人相关联的“个人大数据”,分析个人生活行为习惯,为其提供更加周全的个性化服务。

    9.举例说明大数据的关键技术

    答:批处理计算,流计算,图计算,查询分析计算

    10.大数据产业包含哪些关键技术。

    答:IT基础设施层、数据源层、数据管理层、数据分析层、数据平台层、数据应用层。

    11.定义并解释以下术语:云计算、物联网

    答: 云计算:云计算就是实现了通过网络提供可伸缩的、廉价的分布式计算机能力,用户只需要在具备网络接入条件的地方,就可以随时随地获得所需的各种IT资源。

         物联网是物物相连的互联网,是互联网的延伸,它利用局部网络或互联网等通信技术把传感器、控制器、机器、人类和物等通过新的方式连在一起,形成人与物、物与物相连,实现信息化和远程管理控制。

    12.详细阐述大数据、云计算和物联网三者之间的区别与联系。

    大数据、云计算和物联网的区别

    大数据、云计算和物联网的联系

    大数据侧重于海量数据的存储、处理与分析,海量数据中发现价值,服务于生产和生活;云计算本质上皆在整合和优化各种IT资源并通过网络已服务的方法,廉价地提供给用户;物联网的发展目标是实现呜呜向量,应用创新是物联网的核心

    从整体来看,大数据、云计算和物联网这三者是相辅相成的。大数据根植于云计算,大数据分析的很多技术都来自于云计算,云计算的分布式存储和管理系统提供了海量数据的存储和管理能力,没有这些云计算技术作为支撑,大数据分析就无从谈起。物联网的传感器源源不断的产生大量数据,构成了大数据的重要数据来源,物联网需要借助于云计算和大数据技术,实现物联网大数据的存储、分析和处理。

     

     

    第二章

    1.试述hadoop和谷歌的mapreduce、gfs等技术之间的关系

    答:Hadoop的核心是分布式文件系统HDFS和MapReduce,HDFS是谷歌文件系统GFS的开源实现,MapReduces是针对谷歌MapReduce的开源实现。

    2.试述Hadoop具有哪些特性。

    答:高可靠性,高效性,高可扩展性,高容错性,成本低,运行在Linux平台,支持多种编程语言

    3.试述Hadoop在各个领域的应用情况。

    答:2007年,雅虎在Sunnyvale总部建立了M45——一个包含了4000个处理器和1.5PB容量的Hadooop集群系统;

    Facebook主要将Hadoop平台用于日志处理,推荐系统和数据仓库等方面;

    百度主要使用Hadoop于日志的存储和统计、网页数据的分析和挖掘、商业分析、在线数据反馈、网页聚类等。

    4.试述Hadoop的项目结构以及每个部分的具体功能。

    答:

    Pig

    Chukwa

    Hive

    HBase

    MapReduce

    HDFS

    Zookeeper

    Common

    Avro

     

    Commeon是为Hadoop其他子项目提供支持的常用工具,主要包括文件系统、RPC和串行化库

    Avro是为Hadoop的子项目,用于数据序列化的系统,提供了丰富的数据结构类型、快速可压缩的二进制数据格式、存储持续性数据的文件集、远程调用的功能和简单的动态语言集成功能。

    HDFS是Hadoop项目的两个核心之一,它是针对谷歌文件系统的开源实现。

    HBase是一个提高可靠性、高性能、可伸缩、实时读写、分布式的列式数据库,一般采用HDFS作为其底层数据存储。

    MapReduce是针对谷歌MapReduce的开源实现,用于大规模数据集的并行运算。

    Zoookepper是针对谷歌Chubby的一个开源实现,是高效和可靠的协同工作系统,提供分布式锁之类的基本服务,用于构建分布式应用,减轻分布式应用程序所承担的协调任务。

    Hive是一个基于Hadoop的数据仓库工具,可以用于对Hadoop文件中的数据集进行数据整理、特殊查询和分布存储。

    Pig是一种数据流语言和运行环境,适合于使用Hadoop和MapReducce平台上查询大型半结构化数据集。

    Sqoop可以改进数据的互操作性,主要用来在H大哦哦哦配合关系数据库之间交换数据。

    Chukwa是一个开源的、用于监控大型分布式系统的数据收集系统,可以将各种类型的数据收集成适合Hadoop处理的文件,并保存在HDFS中供Hadoop进行各种 MapReduce操作。

     

    第三章

    1.试述分布式文件系统设计的需求。

    设计需求

    含义

    HDFS的实现情况

    透明性

    具备访问透明性、位置透明性、性能、和伸缩透明性

    只能提供一定程度的访问透明性,完全支持位置透明性、性能和伸缩透明性

    并发控制

    客户端对于文件的读写不应该影响其他客户端对同一个文件的读写

    机制非常简单,任何时候都只允许有一个程序写入某个文件

    文件复制

    一个文件可以拥有不同位置的多个副本

    HDFS采用了多副本机制

    硬件和操作系统的异构性

    可以在不同的操作系统和计算机上实现同样的客户端和服务端程序

    采用Java语言开发,具有很好的跨平台能力

    可伸缩性

    支持节点的动态加入或退出

    建立在大规模廉价机器上的分布式文件系统集群,具有很好的伸缩性

    容错

    保证文件服务在客户端或者服务端出现问题的时候能正常使用

    具有多副本机制和故障自动检测、恢复机制

    安全

    保证系统的安全性

    安全性较弱

    2.分布式文件系统是如何实现较高水平扩展的?

    分布式文件系统在物理结构上是由计算机集群中的多个节点构成的,这些节点分为两类,一类叫“主节点”(Master Node)或者也被称为“名称结点”(NameNode),另一类叫“从节点”(Slave Node)或者也被称为“数据节点”(DataNode)

    3.试述HDFS中的块和普通文件系统中的块的区别。

    答:在传统的文件系统中,为了提高磁盘读写效率,一般以数据块为单位,恶如不是以字节为单位。

    HDFS中的块,默认一个块大小为64MB,而HDFS中的文件会被拆分成多个块,每个块作为独立的单元进行存储。HDFS在块的大小的设计上明显要大于普通文件系统。

    4.试述HDFS中的名称节点和数据节点的具体功能。

    答:名称节点负责管理分布式文件系统系统的命名空间,记录分布式文件系统中的每个文件中各个块所在的数据节点的位置信息;

    数据节点是分布式文件系统HDFS的工作节点,负责数据的存储和读取,会根据客户端或者是名称节点的调度来进行数据的存储和检索,并向名称节点定期发送自己所存储的块的列表。

    hadoop fs -ls <path> 显示<path>指定的文件的详细信息

    hadoop fs -cat <path> 将<path>指定的文件的内容输出到标准输出

    hadoop fs -mkdir <path> 创建<path>指定的文件夹

    hadoop fs -get [-ignorecrc] [-crc] <src><localdst> 复制<src>指定的文件到本地文件系统<localdst>指定的文件或文件夹。-ignorecrc选项复制CRC校验失败的文件。使用-crc选项复制文件以及CRC信息。

    hadoop fs -put <localsrc><dst> 从本地文件系统中复制<localsrc>指定的单个或多个源文件到<dst>指定的目标文件系统中。也支持从标准输入(stdin)中读取输入写入目标文件系统。

    hadoop fs -rmr <path> 删除<path>指定的文件夹及其的所有文件

     

    第四章

    1.试述在Hadoop体系架构中HBase与其他组成部分的相互关系。

    答: HBase利用Hadoop MapReduce来处理HBase中的海量数据,实现高性能计算;利用Zookeeper作为协同服务,实现稳定服务和失败恢复;使用HDFS作为高可靠的底层存储,利用廉价集群提供海量数据存储能力; Sqoop为HBase的底层数据导入功能,Pig和Hive为HBase提供了高层语言支持,HBase是BigTable的开源实现。

    2.请阐述HBase和BigTable的底层技术的对应关系

    答:

    项目

    BigTable

    HBase

    文件存储系统

    GFS

    HDFS

    海量数据处理

    MapReduce

    Hadoop MapReduce

    协同服务管理

    Chubby

    Zookeeper

    3.请阐述HBase和传统关系数据库的区别

    答:

    区别

    传统关系数据库

    HBase

    数据类型

    关系模型

    数据模型

    数据操作

    插入、删除、更新、查询、多表连接

    插入、查询、删除、清空,无法实现表与表之间关联

    存储模式

    基于行模式存储,元组或行会被连续地存储在磁盘也中

    基于列存储,每个列族都由几个文件保存,不同列族的文件是分离的

    数据索引

    针对不同列构建复杂的多个索引

    只有一个行键索引

    数据维护

    用最新的当前值去替换记录中原来的旧值

    更新操作不会删除数据旧的版本,而是生成一个新的版本

    可伸缩性

    很难实现横向扩展,纵向扩展的空间也比较有限

    轻易地通过在集群中增加或者减少硬件数量来实现性能的伸缩

    4.HBase有哪些类型的访问接口?

    答:HBase提供了Native Java API , HBase Shell , Thrift Gateway , REST GateWay , Pig , Hive 等访问接口。

    5.请以实例说明HBase数据模型。

     

    Info

    Name

    Major

    Email

    201505001

    Luo Min

    Math

    Luo@qq.com

    201505002

    Liu Jun

    Math

    liu@qq.com

    201505003

    Xie You

    Math

    xie@qq.com

    you@163.com

    6.分别解释HBase中行键、列键和时间戳的概念

        行键是唯一的,在一个表里只出现一次,否则就是在更新同一行,行键可以是任意的字节数组。

        列族需要在创建表的时候就定义好,数量也不宜过多。列族名必须由可打印字符组成,创建表的时候不需要定义好列。

        时间戳,默认由系统指定,用户也可以显示设置。使用不同的时间戳来区分不同的版本。

    7.请举个实例来阐述HBase的概念视图和物理视图的不同

    HBase数据概念视图

    行键

    时间戳

    列族contents

    列族anchor

    “com.cnn.www”

    T5

     

    Anchor:cnnsi.com=”CNN”

    T3

     

    Anchor:my.look.ca=”CNN”

    “com.cnn.www”

    T3

    Content:html=”<html>...”

     

    T2

    Content:html=”<html>...”

     

    T1

    Content:html=”<html>...”

     

    HBase数据物理视图

    行键

    时间戳

    列族anchor

    “com.cnn.www”

    T5

    Anchor:cnnsi.com=”CNN”

    T4

    Anchor:my.look.ca=”CNN”

    行键

    时间戳

    列族contents

    “com.cnn.www”

    T3

    Content:html=”<html>...”

    T2

    Content:html=”<html>...”

    T1

    Content:html=”<html>...”

    在HBase的概念视图中,一个表可以视为一个稀疏、多维的映射关系。

    在物理视图中,一个表会按照属于同一列族的数据保存在一起

    8.试述HBase各功能组建及其作用

    (1)库函数:链接到每个客户端;

    (2)一个Master主服务器:主服务器Master主要负责表和Region的管理工作;

    (3)许多个Region服务器:Region服务器是HBase中最核心的模块,负责维护分配给自己的Region,并响应用户的读写请求

    9.请阐述HBase的数据分区机制。

    答: HBase采用分区存储,一个大的表会被分拆许多个Region,这些Region会被分发到不同的服务器上实现分布式存储。

    10.HBase中的分区是如何定位的。

    通过构建的映射表的每个条目包含两项内容,一个是Regionde 标识符,另一个是Region服务器标识,这个条目就标识Region和Region服务器之间的对应关系,从而就可以知道某个Region被保存在哪个Region服务器中。

    11.试述HBase的三层结构中各层次的名称和作用。

    层次

    名称

    作用

    第一层

    Zookeeper文件

    记录了-ROOT-表的位置信息

    第二层

    -ROOT-表

    记录了.META.表的Region位置信息

    -ROOT-表只能有一个Region。通过-ROOT-表,就可以访问.META.表中的数据

    第三层

    .META.表

    记录了用户数据表的Region位置信息,.META.表可以有多个Region,保存了HBase中所有用户数据表的Region位置信息

    12.请阐述HBase的三层结构下,客户端是如何访问到数据的。

    答:首先访问Zookeeper,获取-ROOT表的位置信息,然后访问-Root-表,获得.MATA.表的信息,接着访问.MATA.表,找到所需的Region具体位于哪个Region服务器,最后才会到该Region服务器读取数据。

    13.试述HBase系统基本架构以及每个组成部分的作用。

    (1)客户端

    客户端包含访问HBase的接口,同时在缓存中维护着已经访问过的Region位置信息,用来加快后续数据访问过程

    (2)Zookeeper服务器

    Zookeeper可以帮助选举出一个Master作为集群的总管,并保证在任何时刻总有唯一一个Master在运行,这就避免了Master的“单点失效”问题

    (3)Master

    主服务器Master主要负责表和Region的管理工作:管理用户对表的增加、删除、修改、查询等操作;实现不同Region服务器之间的负载均衡;在Region分裂或合并后,负责重新调整Region的分布;对发生故障失效的Region服务器上的Region进行迁移

    (4)Region服务器

    Region服务器是HBase中最核心的模块,负责维护分配给自己的Region,并响应用户的读写请求

    14.请阐述Region服务器向HDFS文件系统中读写数据的基本原理

    Region服务器内部管理一系列Region对象和一个HLog文件,其中,HLog是磁盘上面的记录文件,它记录着所有的更新操作。每个Region对象又是由多个Store组成的,每个Store对象了表中的一个列族的存储。每个Store又包含了MemStore和若干个StoreFile,其中,MemStore是在内存中的缓存。

    15.试述HStore的工作原理

    每个Store对应了表中的一个列族的存储。每个Store包括一个MenStore缓存和若干个StoreFile文件。MenStore是排序的内存缓冲区,当用户写入数据时,系统首先把数据放入MenStore缓存,当MemStore缓存满时,就会刷新到磁盘中的一个StoreFile文件中,当单个StoreFile文件大小超过一定阈值时,就会触发文件分裂操作。

    16.试述HLog的工作原理

    答:HBase系统为每个Region服务器配置了一个HLog文件,它是一种预写式日志(Write Ahead Log),用户更新数据必须首先写入日志后,才能写入MemStore缓存,并且,直到MemStore缓存内容对应的日志已经写入磁盘,该缓存内容才能被刷写到磁盘。

    17.在HBase中,每个Region服务器维护一个HLog,而不是为每个Region都单独维护一个HLog。请说明这种做法的优缺点。

    优点: 多个Region对象的更新操作所发生的日志修改,只需要不断把日志记录追加到单个日志文件中,不需要同时打开、写入到多个日志文件中。

    缺点:如果一个Region服务器发生故障,为了恢复其上次的Region对象,需要将Region服务器上的对象,需要将Region服务器上的HLog按照其所属的Region对象进行拆分,然后分发到其他Region服务器上执行恢复操作。

    18.当一台Region服务器意外终止时,Master如何发现这种意外终止情况?为了恢复这台发生意外的Region服务器上的Region,Master应该做出哪些处理(包括如何使用HLog进行恢复)?

    Zookeeper会实时监测每个Region服务器的状态,当某个Region服务器发生故障时,Zookeeper会通知Master。

    Master首先会处理该故障Region服务器上面遗留的HLog文件,这个遗留的HLog文件中包含了来自多个Region对象的日志记录。

    系统会根据每条日志记录所属的Region对象对HLog数据进行拆分,分别放到相应Region对象的目录下,然后,再将失效的Region重新分配到可用的Region服务器中,并把与该Region对象相关的HLog日志记录也发送给相应的Region服务器。

    Region服务器领取到分配给自己的Region对象以及与之相关的HLog日志记录以后,会重新做一遍日志记录中的各种操作,把日志记录中的数据写入到MemStore缓存中,然后,刷新到磁盘的StoreFile文件中,完成数据恢复。

     

     

    第五章

    1.如何准确理解NoSQL的含义?

    NoSQL是一种不同于关系数据库的数据库管理系统设计方式,是对非关系型数据库的一类统称,它采用的数据模型并非传统关系数据库的关系模型,而是类似键/值、列族、文档等非关系模型。

    2.试述关系数据库在哪些方面无法满族Web2.0应用的需求。

    关系数据库已经无法满足Web2.0的需求。主要表现在以下几个方面:

    (1)无法满足海量数据的管理需求

    (2)无法满足数据高并发的需求

    (3)无法满足高可扩展性和高可用性的需求

    3.请比较NoSQL数据库和关系数据库的优缺点。

    比较标准

    RDBMS

    NoSQL

    备注

    数据库原理

    完全支持

    部分支持

    RDBMS有关系代数理论作为基础

    NoSQL没有统一的理论基础

    数据规模

     

     

    超大

     

    RDBMS很难实现横向扩展,纵向扩展的空间也比较有限,性能会随着数据规模的增大而降低

    NoSQL可以很容易通过添加更多设备来支持更大规模的数据

     

    数据库模式

     

    固定

     

    灵活

     

    RDBMS需要定义数据库模式,严格遵守数据定义和相关约束条件

    NoSQL不存在数据库模式,可以自由灵活定义并存储各种不同类型的数据

     

    查询效率

     

     

    可以实现高效的简单查询,但是不具备高度结构化查询等特性,复杂查询的性能不尽人意

     

    RDBMS借助于索引机制可以实现快速查询(包括记录查询和范围查询)

    很多NoSQL数据库没有面向复杂查询的索引,虽然NoSQL可以使用MapReduce来加速查询,但是,在复杂查询方面的性能仍然不如RDBMS

     

    一致性

     

    强一致性

     

    弱一致性

     

    RDBMS严格遵守事务ACID模型,可以保证事务强一致性

    很多NoSQL数据库放松了对事务ACID四性的要求,而是遵守BASE模型,只能保证最终一致性

     

    数据完整性

    容易实现

     

    很难实现

    任何一个RDBMS都可以很容易实现数据完整性,比如通过主键或者非空约束来实现实体完整性,通过主键、外键来实现参照完整性,通过约束或者触发器来实现用户自定义完整性

    但是,在NoSQL数据库却无法实现

     

    扩展性

     

    一般

     

     

    RDBMS很难实现横向扩展,纵向扩展的空间也比较有限

    NoSQL在设计之初就充分考虑了横向扩展的需求,可以很容易通过添加廉价设备实现扩展

     

    可用性

     

     

    很好

     

    RDBMS在任何时候都以保证数据一致性为优先目标,其次才是优化系统性能,随着数据规模的增大,RDBMS为了保证严格的一致性,只能提供相对较弱的可用性

    大多数NoSQL都能提供较高的可用性

     

    标准化

     

     

     

    RDBMS已经标准化(SQL)

    NoSQL还没有行业标准,不同的NoSQL数据库都有自己的查询语言,很难规范应用程序接口

    StoneBraker认为:NoSQL缺乏统一查询语言,将会拖慢NoSQL发展

    技术支持

     

     

     

    RDBMS经过几十年的发展,已经非常成熟,Oracle等大型厂商都可以提供很好的技术支持

    NoSQL在技术支持方面仍然处于起步阶段,还不成熟,缺乏有力的技术支持

     

    可维护性

     

    复杂

     

    复杂

     

    RDBMS需要专门的数据库管理员(DBA)维护

    NoSQL数据库虽然没有DBMS复杂,也难以维护

     

    5.试述NoSQL数据库的四大类型

    答:键值数据库、列族数据库、文档数据库和图数据库

    6.试述键值数据库、列族数据库、文档数据库和图数据库的适用场合和优缺点。

    数据库

    适用场合

    优点

    缺点

    键值数据库

    通过键而是通过值来查的业务

    扩展性好,灵活性好,大量写操作时性能高

    无法存储结构化信息,条件查询效率较低

    列族数据库

    不需要ACID事务支持的情形

    查找速度快,可扩展性强,容易进行分布式扩展,复杂性低

    功能较少,大都不支持强事务一致性

    文档数据库

    只在相同的文档上添加事务

    性能好(高并发),灵活性高,复杂性低,数据结构灵活

    提供嵌入式文档功能,将经常查询的数据存储在同一个文档中

    既可以根据键来构建索引,也可以根据内容构建索引

     

    缺乏统一的查询语法

     

    图形数据库

    具有高度相互关联关系的数据

    灵活性高,支持复杂的图形算法,可用于构建复杂的关系图谱

    复杂性高,只能支持一定的数据规模

     

    7.试述CAP理论的具体含义。

    答:所谓的CAP指的是:

    C(Consistency):一致性,是指任何一个读操作总是能够读到之前完成的写操作的结果,也就是在分布式环境中,多点的数据是一致的,或者说,所有节点在同一时间具有相同的数据

    A:(Availability):可用性,是指快速获取数据,可以在确定的时间内返回操作结果,保证每个请求不管成功或者失败都有响应;

    P(Tolerance of Network Partition):分区容忍性,是指当出现网络分区的情况时(即系统中的一部分节点无法和其他节点进行通信),分离的系统也能够正常运行,也就是说,系统中任意信息的丢失或失败不会影响系统的继续运作。

    8.请举例说明不同产品在设计时是如何运用CAP理论的。

     

    9.试述数据库的ACID四性的含义

    1.原子性(Atomicity)

    指事务必须是原子工作单元,对于其数据修改,要么全都执行,要么全都不执行。

    2.一致性(consistency)

    指事务在完成时,必须使所有的数据都保持一致状态。

    1. 隔离性(Isolation)

    指并发事务所做的修改必须与其他并发事务所做的修改隔离。

    1. 持久性(Durability)

    指事务完成之后,它对于系统的影响是永久性的,该修改即使出现致命的系统故障也将一直保持。

    10.试述BASE的具体含义

    BASE的基本含义是基本可用(Basically Availble)、软状态(Soft-state)和最终一致性(Eventual consistency)

    11.请解释软状态、无状态、硬状态的具体含义。

    “软状态(soft-state)”是与“硬状态(hard-state)”相对应的一种提法。数据库保存的数据是“硬状态”时,可以保证数据一致性,即保证数据一直是正确的。“软状态”是指状态可以有一段时间不同步,具有一定的滞后性。

    12.什么是最终一致性?

    最终一致性根据更新数据后各进程访问到数据的时间和方式的不同,又可以区分为:

    1. 会话一致性:它把访问存储系统的进程放到会话(session)的上下文中,只要会话还存在,系统就保证“读己之所写”一致性。如果由于某些失败情形令会话终止,就要建立新的会话,而且系统保证不会延续到新的会话;
    2. 单调写一致性:系统保证来自同一个进程的写操作顺序执行。系统必须保证这种程度的一致性,否则就非常难以编程了
    3. 单调读一致性:如果进程已经看到过数据对象的某个值,那么任何后续访问都不会返回在那个值之前的值
    4. 因果一致性:如果进程A通知进程B它已更新了一个数据项,那么进程B的后续访问将获得A写入的最新值。而与进程A无因果关系的进程C的访问,仍然遵守一般的最终一致性规则
    5. “读己之所写”一致性:可以视为因果一致性的一个特例。当进程A自己执行一个更新操作之后,它自己总是可以访问到更新过的值,绝不会看到旧值

    13.试述不一致性窗口的含义。

    所有后续的访问都可以读取到操作OP写入的最新值。从OP操作完成到后续访问可以最终读取到OP写入的最新值,这之间的时间间隔称为“不一致性窗口”。

    14最终一致性根据更新数据后各进程访问到数据的时间和方式的不同,又可以分为哪些不同类型的一致性?

    会话一致性、单调写一致性、单调写一致性、因果一致性和“读己之所写”一致性。

    15.什么是NewSQL数据库?

    NewSQL是对各种新的可扩展、高性能数据库的简称,这类数据库不仅具有NoSQL对海量数据的存储管理能力,还保持了传统数据库支持ACID和SQL特性。

     

    第六章

    1.试述云数据库的概念。

    答:云数据库是部署和虚拟化在云计算环境中的数据库。云数据库是在云计算的大背景下发展起来的一种新兴的共享基础架构的方法,它极大地增强了数据库的存储能力,消除了人员、硬件、软件的重复配置,让软、硬件升级变得更加容易,同时,也虚拟化了许多后端功能。云数据库具有高可扩展性、高可用性、采用多租形式和支持资源有效分发等特点。
    2.与传统的软件使用方式相比,云计算这种模式具有哪些明显的优势?

    3.云数据库有哪些特性?

     

    答:1)动态可扩展 2)高可用性 3)较低的使用代价

    4)易用性 5)高性能 6)免维护 7)安全

    4.试述云数据库的影响。

    答: 在大数据时代,每个企业几乎每天都在不断产生大量的数据。企业类型不同,对于存储的需求也千差万别,而云数据库可以很好地满足不同企业的个性化存储需求。
    首先,云数据库可以满足大企业的海量数据存储需求。云数据库在当前数据爆炸的大数据时代具有广阔的应用前景。传统的关系数据库难以水平扩展,相本无法存储如此海量的数据。因此,具有高可扩展性的云数据库就成为企业海量数据存储管理的很好选择。
      其次,云数据库可以满足中小企业的低成本数据存储需求。中小企业在IT 基础设施方面的投人比较有限,非常渴望从第三方方便、快捷、廉价地获得数据库服务。云数据库采用多租户方式同时为多个用户提供服务,降低了单个用户的使用成本,而且用户使用云数据库服务通常按需付费,不会浪费资源造成额外支出,因此,云数据库使用成本很低,对于中小企业而言可以大大降低企业的信息化槛,让企业在付出较低成本的同时,获得优质的专业级数据库服务,从而有效提升企业信息化水平。
    另外,云数据库可以满足企业动态变化的数据存储需求。企业在不同时期需要存储的数据量是不断变化的,有时增加,有时减少。在小规模应用的情况下,系统负载的变化可以由系统空闲的多余资源来处理,但是,在大规模应用的情况下,传统的关系数据库由于其伸缩性较差,不仅无法满足应用需求,而且会给企业带来高昂的存储成本和管理开销。而云数据库的良好伸缩性,可以让企业在需求增加时立即获得数据库能力的提升,在需求减少时立即释放多余的数据库能力,较好地满足企业的动态数据存储需求。

    5.举例说明云数据库厂商及其代表性产品。

    答:云数据库供应商主要分为三类。

    1. 传统的数据库厂商,如Teradata、Oracle、IBM DB2和Microsoft SQL Server等。
    2. 涉足数据库市场的云供应商,如Amazon、Google.Yahoo!、阿里、百度、腾讯等。
    3. 新兴厂商,如IVertica.LongJump 和EnterpriseDB等。

    7.试述UMP 系统的功能。

    答: 
    UMP系统是构建在一个大的集群之上的,通过多个组件的协同作业,整个系统实现了对用户透明的 容灾、读写分离、分库分表、资源管理、资源调度、资源隔离和数据安全功能。
      1.容灾
      云数据库必须向用户提供一直可用的数据库连接,当MySQL实例发生故障时,系统必须自动执行故障恢复,所有故障处理过程对于用户而言是透明的,用户不会感知到后台发生的一切。
      为了实现容灾,UMP系统会为每个用户创建两个MySQL实例,一个是主库,一个是从库,而且,这两个MySQL 实例之间互相把对方设置为备份机,任意一个MySQL实例上面发生的更新都会复制到对方。同时,Proxy服务器可以保证只向主库写人数据。

      2.读写分离
      由于每个用户都有两个MySQL实例,即主库和从库,因此,可以充分利用主从库实现用户读写操作的分离,实现负载均衡。UMP系统实现了对于用户透明的读写分离功能,当整个功能被开启时,负责向用户提供访问MySQL数据库服务的Proxy 服务器,就会对用户发起的SQL 语句进行解析,如果属于写操作,就直接发送到主库,如果是读操作,就会被均衡地发送到主库和从库上执行。

      3.分库分表
      UMP支持对用户透明的分库分表(Shard/Horizontal Partition)。但是,用户在创建账号的时候需要指定类型为多实例,并且设置实例的个数,系统会根据用户设置来创建多组MySQL实例。除此以外,用户还需要自己设定分库分表规则,如需要确定分区字段,也就是根据哪个字段进行分库分表,还要确定分区字段里的值如何映射到不同的MySQL 实例上。
      4.资源管理
      UMP系统采用资源池机制来管理数据库服务器上的CPU、内存、磁盘等计算资源,所有的计算资源都放在资源池内进行统一分配,资源池是为MySQL 实例分配资源的基本单位。整个集群中的所有服务器会根据其机型、所在机房等因素被划分为多个资源池,每台服务器会被加人到相应的资源池。在资源池划分的基础上,UMP还在每台服务器内部采用Cgroup将资源进一步地细化,从而可以限制每个进程组使用资源的上限,同时保证进程组之间相互隔离。
      5.资源调度
      UMP系统中有3种规格的用户,分别是数据量和流量比较小的用户、中等规模用户以及需要分库分表的用户。多个小规模用户可以共享同一个MySQL实例。对于中等规模的用户,每个用户独占个MySQL 实例。用户可以根据自己的需求来调整内存空间和磁盘空间,如果用户需要更多的资源,就可以迁移到资源有空闲或者具有更高配置的服务器上对于分库分表的用户,会占有多个独立的MySQL 实例,这些实例既可以共存在同一台物理机上,也可以每个实例独占一台物理机。
      UMP通过MySQL实例的迁移来实现资源调度。借助于阿里集团中间件团队开发的愚公系统,UMP 可以实现在不停机的情况下动态扩容、缩容和迁移。
      6.资源隔离
      当多个用户共享同一个MySQL 实例或者多个MySQL 实例共存在同一个物理机上时,为了保护用户应用和数据的安全,必须实现资源隔离,否则,某个用户过多消耗系统资源会严重影响到其他用户的操作性能。

    7.数据安全
    数据安全是让用户放心使用云数据库产品的关键,尤其是企业用户,数据库中存放了很多业务数据,有些属于商业机密,一旦泄露,会给企业造成损失。UMP 系统设计了多种机制来保证数据安全。

    1. SSL 数据库连接。  
    2. 数据访问IP 白名单。
    3. 记录用户操作日志。  
    4. SQL拦截。


    13.  UMP 系统是如何保障数据安全的?

    答:

    1. SSL 数据库连接。  SSL (Secure Sockets Layer) 是为网络通信提供安全及数据完整性的一种安全协议,它在传输层对网络连接进行加密。Proxy 服务器实现了完整的MySQL 客户端服务器协议,可以与客户端之间建立SSL 数据库连接。
    2. 数据访问IP 白名单。可以把允许访问云数据库的IP 地址放入“白名单”,只有白名单内的IP地址才能访问,其他IP地址的访问都会被拒绝,从而进一步保证账户安全。
    3. 记录用户操作日志。  用户的所有操作记录都会被记录到日志分析服务器,通过检查用户操作记录,可以发现隐藏的安全漏洞。
    4. SQL拦截。Proxy 服务器可以根据要求拦截多种类型的SQL 语句,比如全表扫描语句"select *”。

    15.  简述RDS 中实例与数据库的概念。

    答:  RDS实例或简称“实例”,是用户购买RDS服务的基本单位。在实例中可以创建多个数据库,可以使用常见的数据库客户端连接、管理及使用数据库。可以通过RDS管理控制台或OPEN API来创建、修改和删除数据库。各实例之间相互独立、资源隔离,相互之间不存在CPU、内存、IOPS等抢占问题。但是,同一实例中的不同数据库之间是资源共享的。每个实例拥有其自己的特性,如数据库类型、版本等,系统有相应的参数来控制实例行为。用户所购买RDS实例的性能,取决于购买RDS实例时所选择的配置,可供用户选择的硬件配置项为内存和磁盘容量。

    RDS数据库或简称“数据库”,是用户在一个实例下创建的逻辑单元,一个实例可以创建多个数据库,在实例内数据库命名唯一,所有数据库都会共享该实例下的资源,如CPU、内存、磁盘容量等。RDS不支持使用标准的SQL 语句或客户端工具创建数据库,必须使用OPEN API或RDS管理控制台进行操作。

    16.  列举连接RDS for MySQL 数据库的4 种方法。

    答:  方法1: 使用客户端MySQL-Front访问。使用客户端MySQL-Front,在连接Host 框中输人数据实例链接地址、端口(默认3306)、数据库用户名和数据库密码后,单击“确定”按钮即可。
      方法2: 使用数据库管理T 具Navicat MySQL。Navicat_MySQL 是一套专为MySQL 设计的强大的数据库管理及开发工具,可以在连接输人框中输人数据实例地址、端口(默认3306 )、数据库用户名和数据库密码后,单击“确定”按钮即可。
      方法3: 使用MySQL 命令登录。用户安装MySQL 客户端后,可进人命令行方式连接数据库。命令格式如下。
      mysql -u user_name -h yuqianli.mysql.rds.aliyuncs.com -P3306 -pxxxx  

    其中,-u指定的是用户名,-h指定的是主机名,-P指定的是端口,-p指定的是密码。
      方法4: 使用阿里云控制台iDB Cloud访问。阿里云控制台iDB Cloud的页面如图6-7 所示,RDS 连接地址以及端口不需要再输人,只需在“用户名”中输人数据库的账号,在“密码”栏中输人数据库账号的密码,便可以登录RDS进行数据操作了。

     

    1.试述MapReduce和Hadoop的关系。

    答:  谷歌公司最先提出了分布式并行编程模型MapReduce, Hadoop MapReduce是它的开源实现。谷歌的MapReduce运行在分布式文件系统GFS上,与谷歌类似,HadoopMapReduce运行在分布式文件系统HDFS上。相对而言,HadoopMapReduce 要比谷歌MapReduce 的使用门槛低很多,程序员即使没有任何分布式程序开发经验,也可以很轻松地开发出分布式程序并部署到计算机集群中。
    2.MapReduce 是处理大数据的有力工具,但不是每个任务都可以使用MapReduce 来进行处理。试述适合用MapReduce来处理的任务或者数据集需满足怎样的要求。

    答: 适合用MapReduce来处理的数据集,需要满足一个前提条件: 待处理的数据集可以分解成许多小的数据集,而且每一个小数据集都可以完全并行地进行处理。
    3. MapReduce模型采用Master(JobTracker)-Slave(TaskTracker)结构,试描述JobTracker和TasKTracker的功能。    

    答:  MapReduce 框架采用了Master/Slave 架构,包括一个Master 和若干个Slave。Master 上运行JobTracker,Slave 上运行TaskTrackero 用户提交的每个计算作业,会被划分成若千个任务。JobTracker 负责作业和任务的调度,监控它们的执行,并重新调度已经失败的任务。TaskTracker负责执行由JobTracker指派的任务。

    6.试述MapReduce的工作流程(需包括提交任务、MapShuffleReduce的过程)

     

     

    9.MapReduce中有这样一个原则:移动计算比移动数据更经济。试述什么是本地计算,并分析为何要采用本地计算

    答:  MapReduce设计的一个理念就是“计算向数据靠拢”,而不是“数据向计算靠拢”,因为移动数据需要大量的网络传输开销,尤其是在大规模数据环境下,这种开销尤为惊人,所以,移动计算要比移动数据更加经济。

    本地计算:在一个集群中,只要有可能,MapReduce框架就会将Map程序就近地在HDFS数据所在的节点运行,即将计算节点和存储节点放在一起运行,从而减少了节点间的数据移动开销。

    10.试说明一个MapReduce程序在运行期间,所启动的Map任务数量和Reduce 任务数量各是由什么因素决定的。

     

    11.是否所有的MapReduce程序都需要经过Map和Reduce这两个过程?如果不是,请举例说明。  

    答:不是。对于关系的选择运算,只需要Map过程就能实现,对于关系R 中的每个元组t,检测是否是满足条件的所需元组,如果满足条件,则输出键值对<,>,也就是说,键和值都是t。这时的Reduce函数就只是一个恒等式,对输入不做任何变换就直接输出。

    12.试分析为何采用Combiner可以减少数据传输量?是否所有的MapReduce程序都可以采用Combiner?为什么?

    答:  对于每个分区内的所有键值对,后台线程会根据key 对它们进行内存排序(Sort ),排序是MapReduce 的默认操作。排序结束后,还包含一个可选的合并(Combine )操作。如果用户事先没有定义Combiner 函数,就不用进行合并操作。如果用户事先定义了Combiner 函数,则这个时候会执行合并操作,从而减少需要溢写到磁盘的数据量。
      所谓“合并”,是指将那些具有相同key 的<key,value>的value 加起来,比如,有两个键值对<*xmu",1>和<*xmu",1>,经过合并操作以后就可以得到一个键值对<*xmu",2>,减少了键值对的数量。

    不过,并非所有场合都可以使用Combiner,因为,Combiner的输出是Reduce任务的输人,Combiner绝不能改变Reduce任务最终的计算结果,一般而言,累加、最大值等场景可以使用合并操作。
    13.MapReduce程序的输入文件、输出文件都存储在HDFS中,而在Map任务完成时的中间结果则存储在本地磁盘中。试分析中间结果存储在本地磁盘而不是HDFS上有何优缺点。
    答:  

     

    第八章

    1.试述在Hadoop推出之后其优化与发展主要体现在哪两个方面。

    答:Hadoop对MapReduce和GDFS的许多方面做了有针对性的改进提升。

    2.试述HDFS1.0中只包含一个名称节点会带来哪些问题。

    答:HDFS1.0采用单点名称节点的设计,不仅会带来单点故障问题,还存在可扩展性、性能和隔离性等问题。

    在可扩展性方面,名称节点把整个HDFS文件系统中的元数据信息都保存在自己的内存中,HDFS1.0中只有一个名称节点,不可以水平扩展,而单个名称节点的内存空间是由上限的,这限制了系统中数据块、文件和目录的数目。

    在系统整体性能方面,整个HDFS文件系统的性能会受限于单个名称节点的吞吐量。

    在隔离性方面,单个名称节点难以提供不同程序之间的隔离性,一个程序可能会影响会影响其他运行的程序。

    3.请描述HDFS HA架构组成组建及其具体功能。

    答:在一个典型的HA集群中,一般设置两个名称节点,其中一个名称节点处于“活跃”状态,另一个处于“待命”状态。处于活跃状态的名称节点负责对外处理所有客户端的请求,而处于待命状态的名称节点则作为备用节点,保存了足够多的系统元数据,当名称节点出现故障时提供快速回复能力也就是说,在HDFS HA中,处于待命状态的名称节点提供了“热备份”,一旦活跃名称节点出现故障,就可以立即切换到待命名称节点,不会影响到系统的正常对外服务。

    4.请分析HDFS HA架构中数据节点如何和名称节点保持通信。

    答:在HDFS联邦中,所有名称节点会共享底层的数据节点存储资源。每个数据节点要向集群中所有的名称节点注册,并周期性地向名称节点发送“心跳”和块信息,报告自己的状态,同时也会处理来自名称节点的指令。

    6、请描述HDFS联邦中“块池”的概念,并分析为什么HDFS联邦中的一个名称节点失效,也不会影响到与它相关的数据节点继续为其他名称节点提供服务。

    答:HDFS联邦拥有多个独立的命名空间,其中,每一个命名空间管理属于自己的一组块,这些属于同一个命名空间的块构成一个“块池”。

    每个数据节点会为多个块池提供块的存储。可以看出,数据节点是一个物理逻辑,而块池则属于逻辑概念,一个块池是一组块的逻辑集合,块池中的各个块实际上是存储在各个不同的数据节点中的。因此HDFS联邦中的一个名称节点失效,也不会影响到与它相关的数据节点继续为其他名称节点提供服务。

    7.请阐述MapReduce1.0体系结构中存在的问题。

    答:(1)存在单点故障;

    1. JobTracker“大包大揽”导致任务过重;
    2. 容易出现内存溢出;
    3. 资源划分不合理。

    8.请描述YARN架构中各组件的功能。

    答:

    组件

    功能

    ResourceManager

    ①处理客户端请求

    ②启动/监控ApplicationMaster

    ③监控NodeManager

    ④资源分配与调度

    ApplicationMaster

    ①为应用程序申请资源,并分配给内部任务

    ②任务调度、监控与容错

    NodeManager

    ①单个节点上的资源管理

    ②处理来自ResourceManager的命令

    ③处理来自ApplicationMaster的命令

     

     

    9.请描述在YARN框架中执行一个MapReduce程序时,从提交到完成需要经历的具体步骤。

    答:①用户编写客户端应用程序,向YARN提交应用程序,提交的内容包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。

    ②YARN中的ResourceManager负责接收和处理来自客户端的请求。接到客户端应用程序请求后,ResourceManager里面的调度器会为应用程序分配一个容器。同时,ResourceManager的应用程序管理器会与该容器所在的NodeManager通信,为该应用程序在该容器中启动一个ApplicationMaster

    ③ApplicationMaster被创建后会首先向ResourceManager注册,从而使得用户可以通过ResourceManager来直接查看应用程序的运行状态

    ④ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请资源。

    ⑤ResourceManager以“容器”的形式向提出申请的ApplicationMaster分配资源,一旦ApplicationMaster申请到资源后,就会与该容器所在的NodeManager进行通信,要求它启动任务。

    ⑥当ApplicationMaster要求容器启动任务时,它会为任务设置好运行环境(包括环境变量、JAR包、二进制程序等),然后将任务启动命令写到一个脚本中,最后通过在容器中运行该脚本来启动任务。

    ⑦各个任务通过某个RPC协议向ApplicationMaster汇报自己的状态和进度,让ApplicationMaster可以随时掌握各个任务的运行状态,从而可以在任务失败时重启任务。

    ⑧应用程序运行完成后,ApplicationMaster向ResourceManager的应用程序管理器注销并关闭自己。若ApplicationMaster因故失败,ResourceManager中的应用程序管理器会监测到失败的情形,然后将其重新启动,直到所有任务执行完毕。

    10.请对YARN和MapReduce1.0框架进行优劣势对比分析。

    答:(1)大大减少了承担中心服务功能的ResourceManager的资源消耗。MapReduce1.0中的JobTracker需要同时承担资源管理、任务调度和任务监控等三大功能,而YARN中的ResourceManager只需要负责资源管理,需要消耗大量资源的任务调度和监控重启工作则交由ApplicationMaster来完成。由于每个作业都有与之关联的独立的ApplicationMaster,所以,系统中存在多个作业时,就会同时存在多个ApplicationMaster,这就实现了监控任务的分布化,不再像MapReduce1.0那样监控任务只集中在一个JobTracker上。

    1. MapReduce1.0既是一个计算框架,又是一个资源管理调度框架,但是只能支持MapReduce编程模型。而YARN则是一个纯粹的资源调度管理框架,在它上面可以运行包括MapReduce在内的不同类型的计算框架,默认类型是MapReduce。因为,YARN中的ApplicationMaster是可变更的,针对不同的计算框架,用户可以采用任何编程语言自己编写服务于该计算框架的ApplicationMaster。比如,可以编写一个面向MapReduce计算框架的ApplicationMaster,从而使得MapReduce计算框架可以运行在YARN框架之上。同理,还可以编写面向Spark、Storm等计算框架的ApplicationMaster,从而使得Spark、Storm等计算框架也可以运行在YARN框架之上。
    2. YARN中的资源管理比MapReduce1.0更加高效。YARN采用容器为单位进行资源管理和分配,而不是以槽为单位,避免了MapReduce1.0中槽的闲置浪费情况,大大提高了资源的利用率。

    11.请分别描述Pig、Tez和Kafka的功能。

    答:①Pig是Hadoop生态系统的一个组件,提供了类似SQL的Pig Latin语言(包含Filter、GroupBy、Join、OrderBy等操作,同时也支持用户自定义函数),允许用户通过编写简单的脚本来实现复杂的数据分析,而不需要编写复杂的MapReduce应用程序,Pig会自动把用户编写的脚本转换成MapReduce作业在Hadoop集群上运行,而且具备对生成的MapReduce程序进行自动优化的功能,所以用户在编写Pig程序的时候,不需要关心程序的运行效率,这就大大减少了用户编程时间。

    ②Tez是Apache开源的支持DAG作业的计算框架,直接源于MapReduce框架,核心思想是将Map和Reduce两个操作进一步进行拆分,即Map被拆分成Input、Processor、Sort、Merge和Output,Reduce被拆分成Input、Shuffle、Sort、Merge、Processor和Output等,经过分解后的这些元操作可以进行自由任意组合产生新的操作,经过一些控制程序组装后就可形成一个大的DAG作业。

    通过DAG作业的方式运行MapReduce作业,提供了程序运行的整体处理逻辑,就可以去除工作流当中多余的Map阶段,减少不必要的操作,提升数据处理的性能。Hortonworks把Tez应用到数据仓库Hive的优化中,使得性能提升了约100倍。

    ③Kafka是由LinkedIn公司开发的一种高吞吐量的分布式发布订阅消息系统,用户通过Kafka系统可以发布大量的消息,同时也能实时订阅消费消息。Kafka设计的初衷是构建一个可以处理海量日志、用户行为和网站运营统计等的数据处理框架。

     

    第九章

    1.Spark是基于内存计算的大数据计算平台,试述Spark的主要特点。

    答:Spark具有如下4个主要特点:

    ①运行速度快;②容易使用;③通用性;④运行模式多样。

    2.Spark的出现是为了解决Hadoop MapReduce的不足,试列举Hadoop MapReduce的几个缺陷,并说明Spark具备哪些优点。

    答:(1)Hadoop存在以下缺点:

    ①表达能力有限;②磁盘IO开销大;③延迟高

    1. Spark主要有如下优点:

    ①Spark的计算模式也属于MapReduce,但不局限于Map和Reduce操作,还提供了多种数据集操作类型,编程模型比MapReduce更灵活;

    ②Spark提供了内存计算,中间结果直接存放内存中,带来更高的迭代运算效率;

    ③Spark基于DAG的任务调度执行机制,要优于MapReduce的迭代执行机制。

    3.美国加州大学伯克利分校提出的数据分析的软件栈BDAS认为目前的大数据处理可以分为哪三个类型?

    答:①复杂的批量数据处理:时间跨度通常在数十分钟到数小时之间;

    ②基于历史数据的交互式查询:时间跨度通常在数十秒到数分钟之间;

    ③基于实时数据流的数据处理:时间跨度通常在数百毫秒到数秒之间。

    4.Spark已打造出结构一体化,功能多样化的大数据生态系统,试述Spark的生态系统。

    答:Spark的设计遵循“一个软件栈满足不同应用场景”的理念,逐渐形成一套完整生态系统,既能够提供内存计算框架,也可以支持SQL即席查询、实时流式计算、机器学习和图计算等。Spark可以部署在资源管理器YARN之上,提供一站式的大数据解决方案。因此,Spark所提供的生态系统同时支持批处理、交互式查询和流数据处理。

    5.从Hadoop+Storm架构转向Spark架构可带来哪些好处?

    答:(1)实现一键式安装和配置、线程级别的任务监控和告警;

    (2)降低硬件集群、软件维护、任务监控和应用开发的难度;

    1. 便于做成统一的硬件、计算平台资源池。

    6.试述“Spark on YARN”的概念。

    答:Spark可以运行与YARN之上,与Hadoop进行统一部署,即“Spark on YARN”,其架构如图所示,资源管理和调度以来YARN,分布式存储则以来HDFS。

     

    7.试述如下Spark的几个主要概念:RDD、DAG、阶段、分区、窄依赖、宽依赖。

    答:①RDD:是弹性分布式数据集(Resilient Distributed Dataset)的英文缩写,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型。

    ②DAG:是Directed Acyclic Graph(有向无环图)的英文缩写,反映RDD之间的依赖关系。

    ③阶段:是作业的基本调度单位,一个作业会分为多组任务,每组任务被称为“阶段”,或者也被称为“任务集”。

    ④分区:一个RDD就是一个分布式对象集合,本质上是一个只读的分区记录集合,每个RDD可以分成多个分区,每个分区就是一个数据集片段。

    ⑤窄依赖:父RDD的一个分区只被一个子RDD的一个分区所使用就是窄依赖。

    ⑥宽依赖:父RDD的一个分区被一个子RDD的多个分区所使用就是宽依赖。

    8.Spark对RDD的操作主要分为行动(Action)和转换(Transformation)两种类型,两种类型操作的区别是什么?

    答:行动(Action):在数据集上进行运算,返回计算值。

        转换(Transformation):基于现有的数据集创建一个新的数据集。

     

    第十章

    1试述流数据的概念

    流数据,即数据以大量、快速、时变的流形式持续到达

    2试述流数据的特点

    流数据具有如下特征:

    数据快速持续到达,潜在大小也许是无穷无尽的

    数据来源众多,格式复杂

    数据量大,但是不十分关注存储,一旦经过处理,要么被丢弃,要么被归档存储

    注重数据的整体价值,不过分关注个别数据

    数据顺序颠倒,或者不完整,系统无法控制将要处理的新到达的数据元素的顺序

    4试述流计算的需求

    对于一个流计算系统来说,它应达到如下需求:

    高性能:处理大数据的基本要求,如每秒处理几十万条数据

    海量式:支持TB级甚至是PB级的数据规模

    实时性:保证较低的延迟时间,达到秒级别,甚至是毫秒级别

    分布式:支持大数据的基本架构,必须能够平滑扩展

    易用性:能够快速进行开发和部署

    可靠性:能可靠地处理流数据

    7列举几个常见的流计算框架

    目前有三类常见的流计算框架和平台:商业级的流计算平台、开源流计算框架、公司为支持自身业务开发的流计算框架

    1商业级:IBM InfoSphere Streams和IBM StreamBase

    2较为常见的是开源流计算框架,代表如下:

    Twitter Storm:免费、开源的分布式实时计算系统,可简单、高效、可靠地处理大量的流数据

    Yahoo! S4(Simple Scalable Streaming System):开源流计算平台,是通用的、分布式的、可扩展的、分区容错的、可插拔的流式系统

    3公司为支持自身业务开发的流计算框架:

    Facebook Puma

    Dstream(百度)

    银河流数据处理平台(淘宝)

    8试述流计算的一般处理流程

    流计算的处理流程一般包含三个阶段:数据实时采集、数据实时计算、实时查询服务

    流计算处理流程示意图

    20试列举几个Storm框架的应用领域

    Storm框架可以方便地与数据库系统进行整合,从而开发出强大的实时计算系统

    Storm可用于许多领域中,如实时分析、在线机器学习、持续计算、远程RPC、数据提取加载转换等

    21Storm的主要术语包括Streams,Spouts、Bolts、Topology和Stream Groupings,请分别简要描述这几个术语

    1. Streams:Storm将流数据Stream描述成一个无限的Tuple序列,这些Tuple序列会以分布式的方式并行地创建和处理
    2. Storm框架可以方便地与数据库系统进行整合,从而开发出强大的实时计算系统
    3. Bolt:Storm将Streams的状态转换过程抽象为Bolt。Bolt即可以处理Tuple,也可以将处理后的Tuple作为新的Streams发送给其他Bolt
    4. Topology:Storm将Spouts和Bolts组成的网络抽象成Topology,它可以被提交到Storm集群执行。Topology可视为流转换图,图中节点是一个Spout或Bolt,边则表示Bolt订阅了哪个Stream。当Spout或者Bolt发送元组时,它会把元组发送到每个订阅了该Stream的Bolt上进行处理
    5. Topology:Storm将Spouts和Bolts组成的网络抽象成Topology,它可以被提交到Storm集群执行。Topology可视为流转换图,图中节点是一个Spout或Bolt,边则表示Bolt订阅了哪个Stream。当Spout或者Bolt发送元组时,它会把元组发送到每个订阅了该Stream的Bolt上进行处理

    22一个Topolog由哪些组件组成?

    • Topology里面的每个处理组件(Spout或Bolt)都包含处理逻辑, 而组件之间的连接则表示数据流动的方向

    27Storm集群中的Master节点和Work节点各自运行什么后台进程?这些进程又分别负责什么工作?

    Storm集群采用“Master—Worker”的节点方式:

    Master节点运行名为“Nimbus”的后台程序(类似Hadoop中的“JobTracker”),负责在集群范围内分发代码、为Worker分配任务和监测故障

    Worker节点运行名为“Supervisor”的后台程序,负责监听分配给它所在机器的工作,即根据Nimbus分配的任务来决定启动或停止Worker进程,一个Worker节点上同时运行若干个Worker进程

    28 试述Zookeeper在Storm框架中的作用

    Storm使用Zookeeper来作为分布式协调组件,负责Nimbus和多个Supervisor之间的所有协调工作。借助于Zookeeper,若Nimbus进程或Supervisor进程意外终止,重启时也能读取、恢复之前的状态并继续工作,使得Storm极其稳定

    31试述Storm框架的工作流程

    Storm的工作流程如下图所示:

    • 所有Topology任务的提交必须在Storm客户端节点上进行,提交后,由Nimbus节点分配给其他Supervisor节点进行处理
    • Nimbus节点首先将提交的Topology进行分片,分成一个个Task,分配给相应的Supervisor,并将Task和Supervisor相关的信息提交到Zookeeper集群上
    • Supervisor会去Zookeeper集群上认领自己的Task,通知自己的Worker进程进行Task的处理
    • 说明:在提交了一个Topology之后,Storm就会创建Spout/Bolt实例并进行序列化。之后,将序列化的组件发送给所有的任务所在的机器(即Supervisor节点),在每一个任务上反序列化组件

     

    第11章

    1.试述BSP模型中的超步的3个组件及具体含义。

    答:①局部通信。每个参与的处理器都有自身的计算任务,它们只读取存储在本地内存中的值,不同处理器的计算任务都是异步并且独立的。

    ②通信。处理器群相互交换数据,交换的形式是,由一方发起推送(Put)和获取(Get)操作

    ③栅栏同步。当一个处理器遇到“路障”(或栅栏),会等其他所有的处理器完成它们的计算步骤;每一次同步也是一个超步的完成和下一个超步的开始。

    2.Pregel为什么选择一种纯消息传递模型?

    答:采用这种做法主要基于以下两个原因。

    ①消息传递具有足够的表达能力,没有必要使用远程读取或共享内存的方式。

    ②有助于提升系统整体性能。大型图计算通常是由一个集群完成的,集群环境中执行远程数据读取会有较高的时间延迟;Pregel的消息模式采用异步和批量的方式传递消息,因此可以缓解远程 读取的延迟。

    4.请简述Aggregator的作用,并以具体Aggregator的作用,并以具体Aggregator的例子做说明。

    答:Aggregator提供了一种全局通信、监控和数据查看的机制。Aggregator的聚合功能,允许在整型和字符串类型上执行最大值、最小值、求和操作,比如可以定义一个“Sum”Aggregator来统计每个顶点的出射边数量,最后相加可以得到整个图的边的数量。Aggregator还可以实现全局协同的功能,比如当可以设计“and”Aggregator来决定在某个超步中Compute()函数是否执行某些逻辑分支,只有当“and”Aggregator显示所有顶点都满足了某条件时,才去执行这些逻辑分支。

    6.简述Pregel的执行过程。

    答:(1)选择集群中的多台机器执行图计算任务,每台机器上运行用户程序的一个副本,其中,有一台机器会被选为Master,其他机器作为Worker。

    (2)Master把一个图分成多个分区,并把分区分配到多个Worker。

    (3)Master会把用户输入划分成多个部分,通常是基于文件边界进行划分。

    (4)Master向每个Worker发送指令,Worker收到指令后,开始运行一个超步。当完成以后,Worker会通知Master,并把自己在下一个超步还处于“活跃”状态的顶点的数量报告给Master。上述步骤会被不断重复,直到所有顶点都不再活跃并且系统中不会有任何消息在传输,这时,执行过程才会结束。

    (5)计算过程结束后,Master会给所有的Worker发送指令,通知每个Worker对自己的计算结果进行持久化存储。

    8.试述Worker和Master的作用。

    答:Worker的作用:借助于名称服务系统定位到Master的位置,并向Master发送自己的注册信息,Master会为每个Worker分配一个唯一的ID。在一个Worker中,它所管辖的分区状态信息被保存在内存。在每个超步中,Worker会对自己所管辖分区中的每个顶点进行遍历,并调用顶点上的Compute()函数。

    Master的作用:Pregel采用检查点(CheckPoint)机制来实现容错。在每个超步的开始,Master会通知所有的Worker把自己管辖的分区的状态写入持久化存储设备。Master周期地ping每个Worker,Worker收到ping消息后向Master反馈消息。如果在指定的时间间隔内没有收到某个Worker的反馈,Master就会将它标为“失效”,并启动恢复模式。

     

     

    第12章

    1.试述数据可视化的概念。

    答:数据可视化是指将大型数据集中的数据以图形图像形式表示,并利用数据分析和开发工具发现其中未知信息的处理过程。数据可视化技术的基本思想是将数据库中每一个数据项作为单个图元素表示,大量的数据集构成数据图像,同时将数据的各个属性值以多维数据的形式表示,可以从不同的维度观察数据,从而对数据进行更深入的观察和分析。

    2.试述数据可视化的重要作用。

    答:①观测、跟踪数据。利用变化的数据生成实时变化的可视化图表,可以让人们一眼看出各种参数的动态变化过程,有效跟踪各种参数值。

    ②分析数据。利用可视化技术,实时呈现当前分析结果,引导用户参与分析过程,根据用户反馈信息执行后续分析操作,完成用户与分析算法的全程交互,实现数据分析算法与用户领域知识的完美结合。

    ③辅助理解数据。帮助普通用户更快、更准确地理解数据背后的定义。

    ④增强数据吸引力。枯燥的数据被制成具有强大视觉冲击力和说服力的图像,可以大大增强读者的阅读兴趣。

    3.可视化工具主要包含哪些类型?各自的代表产品有哪些?

    答:主要包括入门级工具(Excel)、信息图表工具(Google Chart API、D3、Visual.ly、Raphael、Flot、Tableau、大数据魔镜)、地图工具(Modest Maps、Leaflet、PolyMaps、OpenLayers、Kartography、Google Fushion Tables、Quanum GIS)、时间线工具(Timetoast、Xtimeline、Timeslide、Dipity)和高级分析工具(Processing、NodeBox、R、Weka和Gephi)等。

     

     

    第十三章

    1.试分析推荐系统的动机以及所能解决的问题。

    答:为了让用户从海量信息中高效地获得自己所需的信息,推荐系统应运而生。

    推荐系统是大数据在互联网领域的典型应用,它可以通过分析用户的历史记录来了解用户的喜好,从而主动为用户推荐其感兴趣的信息,满足用户的个性化推荐需求

    推荐系统是自动联系用户和物品的一种工具,和搜索引擎相比,推荐系统通过研究用户的兴趣偏好,进行个性化计算。推荐系统可发现用户的兴趣点,帮助用户从海量信息中去发掘自己潜在的需求

    4.试列举几种推荐算法,并进行简要描述

    答: 基于用户的协同过滤(UserCF),基于物品的协同过滤(ItemCF)

    UserCF算法的实现主要包括找到和目标用户兴趣相似的用户集合和找到该集合中的用户所喜欢的、且目标用户没有听说过的物品推荐给目标用户

    ItemCF算法是给目标用户推荐那些和他们之前喜欢的物品相似的物品。ItemCF算法主要通过分析用户的行为记录来计算物品之间的相似度

    12.现有用户a、b、c和物品A、B、C、D、E,其关系如图所示,请使用基于用户的协同过滤算法,给出物品到用户倒排表的建立过程及用户相似度矩阵,并给用户c的推荐列表

    用户对应物品列表

    用户a    物品A、B、C

    用户b    物品B、C、D、E

    用户c    物品B、C

     

    物品对应用户列表

    物品A 用户a

    物品B 用户a、b

    物品C 用户a、b、c

    物品D 用户b

    物品E 用户b

     

    相似度矩阵

    a    b   c

    a   0    2   1

    b   2    0   1

    c 1    1   0

     

    W(A,B) = 2/√3*4

    W(A,C) = 1/√3*2

    W(B,C) = 1/√4*2

     

    P(c,B)= CA+CB = 1/√3*2+1/√4*2

    P(c,C)= CA+CB = 1/√3*2+1/√4*2

    P(c,A) = CA =  1/√3*2

    P(c,D) = CB = 1/√4*2

    P(c,E) = CB = 1/√4*2

     

    给予用户c的推荐列表为: A、B、C

     

    ① 论述“德国工业4.0”、“日本工业白皮书”内涵,说清国际上关于工业4.0的要求、工业物联网的内涵;②分析上述两个佛山市制造业的现状,与国际上工业4.0要求的差距;③如何在佛山市上述两个制造业的生产、仓储等环节布局传感器,进行生产、仓储等环节的数据采集;④将人力资源数据、行政管理数据、销售数据、市场数据以及生产、仓储数据进行整合构成企业大数据资源;⑤进行大数据分析框架设计,给出工业产品智能制造的路径以及个性化工业产品设计的思路;⑥进行工业大数据运营,从而使运营大数据的企业自身能够盈利的措施。

     

    论述题:

    结合大数据、人工智能技术,论述佛山市陶瓷制造业如何进行产业升级?

    德国工业4.0可以概括为:一个核心,两个重点,三大集成,四个特征和六项措施。一个核心:互联网+制造业,将信息物理融合系统(CPS)广泛深入地应用于制造业,构建智能工厂、实现智能制造。两个重点:领先的供应商策略,成为“智能生产”设备的主要供应者;主导的市场策略,设计并实施一套全面的知识和技术转化方案,引领市场发展。三大集成:企业内部灵活且可重新组合的纵向集成,企业之间价值链的横向集成,全社会价值链的端到端工程数字化集成。四个特征:生产可调节,可自我调节以应对不同形势;产品可识别,可以在任何时候把产品分辨出来;需求可变通,可以根据临时的需求变化而改变设计、构造、计划、生产和运作,并且仍有获利空间;四是过程可监测,可以实时针对商业模式全过程进行监测。六项措施:实现技术标准化和开放标准的参考体系;建立复杂模型管理系统;建立一套综合的工业宽带基础设施;建立安全保障机制和规章制度;创新工作组织和设计方式;加强培训和持续职业教育。

     比较德国工业4.0与佛山市制造业的现状,一个重要的区别在于,德国工业4.0战略是一个革命性的基础性的科技战略。其立足点并不是单纯提升某几个工业制造技术,而是从制造方式最基础层面上进行变革,从而实现整个工业发展的质的飞跃。因此,德国工业4.0战略的核心内容并不拘泥于工业产值数据这个层面上“量的变化”,而更加关注工业生产方式的“质的变化”。相对于德国工业4.0,佛山制造业强调的是在现有的工业制造水平和技术上,通过“互联网+”这种工具的应用,实现结构的变化和产量的增加。这种区别就好比佛山制造业是在工业现阶段水平和思维模式上寻求阶段内的改进和发展,德国则是寻求从工业3.0阶段跨越到工业4.0阶段,实现“质的变化”。这种战略思想上的差别应该说是客观条件的反映,符合现实基础,但也说明佛山制造业缺少战略上的理论深度和技术高度,也缺少市场上的感召力和影响力。

    回顾佛山市这两年陶瓷行业的生产发展状况,我们可以清晰地看到持续稳健和相对高速发展的企业是坚守制造业本质的企业且生产效率和生产环境保持领先行业的进步速度,例如喷墨技术比较成熟地运用于陶瓷行业,是陶瓷行业迈向工业4.0的发端。很多人更多地担心喷墨技术会加剧陶瓷行业的同质化,却忽略了喷墨技术的运用恰恰会加剧陶瓷制造业的分化,因为更优秀的企业更有机会靠近工业4.0。

    而对于陶瓷产业的仓储,加上各种RFID标签以及各种传感器等,集成了信息技术、条码技术、电子标签技术、web技术及计算机应用技术等,将仓库管理、无线扫描、电子显示、web应用有机的结合,实现信息资源充分利用,加快网络化进程。加上物联网技术的仓储技术能实时掌控库存情况,对库位状态进行监控,通过数字分析等方法整合资源,更为充分利用有限仓库空间。而这意味着公司管理模式的全新转变,从传统的“结果导向”转变成“过程导向”;从数据录入转变为数据采集及录入;从人工找货转变成为导向定位取货,避免了可能发生的人为错误,极大程度提升了管理效率,节约了成本。在企业运营过程中,随着依靠经验管理的工作方式向依靠数字分析转变,公司将能加速资金周转,提升供应链响应速度。

    利用大数据技术以及物联网技术,可以减少人力资源的浪费以及管理精力的消耗,从而使陶瓷业通过运营大数据从而自身能够盈利。将人力资源数据、行政管理数据、销售数据、市场数据以及生产、仓储数据进行整合构成企业大数据资源,然后,使得企业了解用户,锁定资源,规划生产,开展服务等,进而使得企业能够盈利。

     

     

    展开全文
  • 林子雨老师的《大数据技术原理与应用》教材配套ppt,浅显易懂,适合入门者学习!
  • 大数据技术原理与应用 /course/XMU-1002335004 中国大学MOOC 2018年春季学期 第10讲Spark 10.1 Spark概述 10.1.1 Spark简介 10.1.2 Scala简介 10.1.3 Spark与Hadoop的比较 10.1.1 Spark简介 Spark最初由美国加州...
  • 大数据技术原理与应用 第二版 林子雨
  • 厦门大学-林子雨-大数据技术原理与应用 第1章-大数据概述(2017年2月版本).ppt
  • 大数据技术原理与应用 概念、存储、处理、分析与应用 林子雨. 著(第2版人民邮电出版社 中国公信出版集团) 高清全目录标签
  • 大数据技术原理与应用:概念、存储、处理、分析与应用 完整高清PDF
  • 大数据技术原理与应用大数据技术原理与应用第一章 大数据概述1、大数据的4v特征2、大数据的影响3、大数据的两大核心技术4、大数据计算模式及代表产品5、大数据与云计算、物联网的关系第二章 第二章大数据处理架构...

    大数据技术原理与应用

    大数据技术原理与应用

    第一章 大数据概述

    1、大数据的4v特征

    volume大量化、velocity快速化、variety多样化、value价值化

    2、大数据的影响

    • 思维方式方面:大数据完全颠覆了传统的思维方式(全样而非抽样、效率而非精确、相关而非因果)。
    • 社会发展方面:大数据决策逐渐成为一种新的决策方式,大数据应用有力促进了信息技术与各行业的深度融合,大数据开发大大推动了新技术和新应用的不断涌现。
    • 就业市场方面:大数据的兴起使得数据科学家成为热门职业。
    • 人才培养方面:大数据的兴起将在很大程度上改变中国高校信息技术相关专业的现有教学。

    3、大数据的两大核心技术

    • 分布式存储:GFS/HDFS、BigTable/HBase、NoSQL
    • 分布式处理:MapReduce

    4、大数据计算模式及代表产品

    • 批处理计算:针对大规模数据的批量处理。MapReduce、Spark。
    • 流计算:针对流数据的实时计算。Storm、S4、Flume、Streams、Puma、DStream、SuperMario、银河流数据处理平台。
    • 图计算:针对大规模图结构数据的处理。Pregel、GraphX、Giraph、PowerGraph、Hama、GoldenOrb。
    • 查询分析计算:大规模数据的存储管理和查询分析。Dremel、Hive、Cassandra、Impala。

    5、大数据与云计算、物联网的关系

    云计算、大数据和物联网代表了IT领域最新的技术发展趋势,三者相辅相成,既有联系又有区别。

    • 云计算为大数据提供了技术基础;大数据为云计算提供用武之地。
    • 云计算为物联网提供海量数据存储能力;物联网为云计算技术提供了广阔的应用空间。
    • 物联网是大数据的重要来源;大数据技术为物联网数据分析提供支撑。

    第二章 大数据处理架构Hadoop

    1、Hadoop的发展历史

    Apache软件基金会旗下的开源分布式平台,基于Java语言开发,具有很好的跨平台性,核心是分布式文件系统HDFS和MapReduce。Hadoop源自始于Apache Nutch项目。

    2、Hadoop的特性

    高可靠性、高效性、高可扩展性、高容错性、成本低、运行在Linux平台、支持多种编程语言。

    3、Hadoop1.0与Hadoop2.0的区别

    Hadoop2.0增加了HDFS HA和YARN两个系统。

    4、Hadoop生态系统

    Hadoop生态系统

    5、Hadoop生态系统组件及功能

    Hadoop项目结构

    6、core-site.xml和hdfs-site.xml配置文件

    <configuration>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>file:/usr/local/hadoop/tmp</value>
            <description>Abase for other temporary directories.</description>
        </property>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://localhost:9000</value>
        </property>
    </configuration>
    
    • hadoop.tmp.dir表示存放临时数据的目录,即包括NameNode的数据,也包括DataNode的数据。该路径任意指定,只要实际存在该文件夹即可。
    • name为fs.defaultFS的值,表示hdfs路径的逻辑名称。
    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
        <property>
            <name>dfs.namenode.name.dir</name>
            <value>file:/usr/local/hadoop/tmp/dfs/name</value>
        </property>
        <property>
            <name>dfs.datanode.data.dir</name>
           <value>file:/usr/local/hadoop/tmp/dfs/data</value>
        </property></configuration>
    
    • dfs.replication表示副本的数量,伪分布式要设置为1。
    • dfs.namenode.name.dir表示本地磁盘目录,是存储fsimage文件的地方。
    • dfs.datanode.data.dir表示本地磁盘目录,HDFS数据存放block的地方。

    第三章 分布式文件系统HDFS

    1、分布式文件系统的结构

    分布式文件系统把文件分布存储到多个计算机节点上,成千上万的计算机节点构成计算机集群。分布式文件系统在物理结构上是由计算机集群中的多个节点构成的,这些节点分为两类,一类叫“主节点”(Master Node)或者也被称为“名称结点”(NameNode),另一类叫“从节点”(Slave Node)或者也被称为“数据节点”(DataNode)。

    2、HDFS的局限性

    不适合低延迟数据访问、无法高效存储大量小文件、不支持多用户写入及任意修改文件。

    3、块的概念

    HDFS默认一个块64MB,HDFS2.0后默认大小128MB。
    块的优点:

    • 支持大规模文件存储:一个文件的大小不会受到单个节点的存储容量的限制,可以远远大于网络中任意节点的存储容量
    • 简化系统设计:大大简化了存储管理,方便了元数据的管理,元数据不需要和文件块一起存储,可以由其他系统负责管理元数据
    • 适合数据备份:每个文件块都可以冗余存储到多个节点上,大大提高了系统的容错性和可用性

    4、名称节点和数据节点

    • 名称节点:存储元数据、元数据保存在内存中、保存文件,block,datanode之间的映射关系。
    • 数据节点:存储文件内容、文件内容保存在磁盘、维护了block id到datanode本地文件的映射关系。

    5、名称节点的数据结构和启动

    在HDFS中,名称节点(NameNode)负责管理分布式文件系统的命名空间(Namespace),保存了两个核心的数据结构,即FsImage和EditLog。

    • FsImage用于维护文件系统树以及文件树中所有的文件和文件夹的元数据。
    • 操作日志文件EditLog中记录了所有针对文件的创建、删除、重命名等操作。
    • 名称节点记录了每个文件中各个块所在的数据节点的位置信息
      在这里插入图片描述
      在名称节点启动的时候,它会将FsImage文件中的内容加载到内存中,之后再执行EditLog文件中的各项操作,使得内存中的元数据和实际的同步,存在内存中的元数据支持客户端的读操作。
      一旦在内存中成功建立文件系统元数据的映射,则创建一个新的FsImage文件和一个空的EditLog文件。
      名称节点启动之后,HDFS中的更新操作会重新写到EditLog文件中,因为FsImage文件一般都很大(GB级别的很常见),如果所有的更新操作都往FsImage文件中添加,这样会导致系统运行的十分缓慢,但是,如果往EditLog文件里面写就不会这样,因为EditLog 要小很多。每次执行写操作之后,且在向客户端发送成功代码之前,edits文件都需要同步更新。
      需要注意的是,名称节点在启动的过程中处于“安全模式”,只能对外提供读操作,无法提供写操作。启动过程结束后,系统会退出安全模式,进入正常运行状态,提供写操作。

    6、数据节点

    数据节点是分布式文件系统HDFS的工作节点,负责数据的存储和读取,会根据客户端或者是名称节点的调度来进行数据的存储和检索,并且向名称节点定期发送自己所存储的块的列表。每个数据节点中的数据会被保存在各自节点的本地Linux文件系统中。

    7、第二名称节点

    在名称节点运行期间,HDFS的所有更新操作都是直接写到EditLog中,久而久之, EditLog文件将会变得很大。虽然这对名称节点运行时候是没有什么明显影响的,但是,当名称节点重启的时候,名称节点需要先将FsImage里面的所有内容映像到内存中,然后再一条一条地执行EditLog中的记录,当EditLog文件非常大的时候,会导致名称节点启动操作非常慢,而在这段时间内HDFS系统处于安全模式,一直无法对外提供写操作,影响用户的使用。
    第二名称节点是HDFS架构中的一个组成部分,它是用来保存名称节点中对HDFS 元数据信息的备份,并减少名称节点重启的时间。SecondaryNameNode一般是单独运行在一台机器上。
    第二名称节点工作示意图
    第二名称节点的工作:

    • 1、每隔一段时间,第二名称节点会和名称节点通信,请求其停止使用EditLog文件,暂时将新到达的写操作添加到一个新文件EditLog.new中。
    • 2、第二名称节点把名称中的FsImage文件和EditLog文件拉回本地,再加载到内存中。
    • 3、对二者执行合并操作。在内存中逐条执行EditLog文件中的操作,使得FsImage保持最新。
    • 4、合并结束后,第二名称节点会把合并后得到的最新的FsImage文件发送到名称节点。
    • 5、名称节点收到后,会用最新的FsImage文件替换旧的FsImage文件,同时用EditLog.new文件替换EditLog文件。

    8、HDFS体系结构

    HDFS采用了主从(Master/Slave)结构模型,一个HDFS集群包括一个名称节点(NameNode)和若干个数据节点(DataNode)。名称节点作为中心服务器,负责管理文件系统的命名空间及客户端对文件的访问。集群中的数据节点一般是一个节点运行一个数据节点进程,负责处理文件系统客户端的读/写请求,在名称节点的统一调度下进行数据块的创建、删除和复制等操作。每个数据节点的数据实际上是保存在本地Linux文件系统中的。
    在这里插入图片描述

    9、HDFS通信协议

    • HDFS是一个部署在集群上的分布式文件系统,因此,很多数据需要通过网络进行传输。
    • 所有的HDFS通信协议都是构建在TCP/IP协议基础之上的。
    • 客户端通过一个可配置的端口向名称节点主动发起TCP连接,并使用客户端协议与名称节点进行交互。
    • 名称节点和数据节点之间则使用数据节点协议进行交互。
    • 客户端与数据节点的交互是通过RPC(Remote Procedure
      Call)来实现的。在设计上,名称节点不会主动发起RPC,而是响应来自客户端和数据节点的RPC请求。

    10、HDFS存储原理

    冗余数据保存

    HDFS采用多副本方式对数据进行冗余存储,通常一个数据块的多个副本会被分布到不同的数据节点上。
    优点:加快数据传输速度、容易检查数据错误、保证数据可靠性。

    数据存取策略

    • 数据存放:
      第一个副本:放置在上传文件的数据节点;如果是集群外提交,则随机挑选一台磁盘不太满、CPU不太忙的节点
      第二个副本:放置在与第一个副本不同的机架的节点上
      第三个副本:与第一个副本相同机架的其他节点上
      更多副本:随机节点
    • 数据读取:
      HDFS提供了一个API可以确定一个数据节点所属的机架ID,客户端也可以调用API获取自己所属的机架ID。当客户端读取数据时,从名称节点获得数据块不同副本的存放位置列表,列表中包含了副本所在的数据节点,可以调用API来确定客户端和这些数据节点所属的机架ID,当发现某个数据块副本对应的机架ID和客户端对应的机架ID相同时,就优先选择该副本读取数据,如果没有发现,就随机选择一个副本读取数据。

    数据错误的种类

    数据错误的三种:名称节点出错、数据节点出错、数据出错。

    11、HDFS常用命令

    • hadoop fs -ls <path>:显示指定的文件的详细信息
    • hadoop fs -mkdir <path>:创建<path>指定的文件夹
    • hadoop fs -cat <path>:将<path>指定的文件的内容输出到标准输出(stdout)
    • hadoop fs -copyFromLocal <localsrc><dst>:将本地源文件<localsrc>复制到路径<dst>指定的文件或文件夹中

    第四章 分布式数据库HBase

    1、HBase从BigTable说起

    BigTable是一个分布式存储系统

    2、HBase和BigTable的底层技术对应关系:

    • 文件存储系统:HDFS(HBase)和GFS(BigTable)
    • 海量数据处理:Hadoop MapReduce(HBase)和MapReduce(BigTable)
    • 协同服务管理:Zookeeper(HBase)和Chubby(BigTable)

    3、HBase与传统数据库相比:

    • 数据类型:关系数据库采用关系模型,具有丰富的数据类型和存储方式,HBase则采用了更加简单的数据模型,它把数据存储为未经解释的字符串。
    • 数据操作:关系数据库中包含了丰富的操作,其中会涉及复杂的多表连接。HBase操作则不存在复杂的表与表之间的关系,只有简单的插入、查询、删除、清空等,因为HBase在设计上就避免了复杂的表和表之间的关系。
    • 存储模式:关系数据库是基于行模式存储的。HBase是基于列存储的,每个列族都由几个文件保存,不同列族的文件是分离的。
    • 数据索引:关系数据库通常可以针对不同列构建复杂的多个索引,以提高数据访问性能。HBase只有一个索引——行键,通过巧妙的设计,HBase中的所有访问方法,或者通过行键访问,或者通过行键扫描,从而使得整个系统不会慢下来。
    • 数据维护:在关系数据库中,更新操作会用最新的当前值去替换记录中原来的旧值,旧值被覆盖后就不会存在。而在HBase中执行更新操作时,并不会删除数据旧的版本,而是生成一个新的版本,旧有的版本仍然保留。
    • 可伸缩性:关系数据库很难实现横向扩展,纵向扩展的空间也比较有限。相反,HBase和BigTable这些分布式数据库就是为了实现灵活的水平扩展而开发的,能够轻易地通过在集群中增加或者减少硬件数量来实现性能的伸缩。

    4、HBase数据模型

    • 表:HBase采用表来组织数据,表由行和列组成,列划分为若干个列族
    • 行:每个HBase表都由若干行组成,每个行由行键(row key)来标识。
    • 列族:一个HBase表被分组成许多“列族”(Column Family)的集合,它是基本的访问控制单元
    • 列限定符:列族里的数据通过列限定符(或列)来定位
    • 单元格:在HBase表中,通过行、列族和列限定符确定一个“单元格”(cell),单元格中存储的数据没有数据类型,总被视为字节数组byte[]
    • 时间戳:每个单元格都保存着同一份数据的多个版本,这些版本采用时间戳进行索引

    HBase中需要根据行键、列族、列限定符和时间戳来确定一个单元格,因此,可以视为一个“四维坐标”,即[行键, 列族, 列限定符, 时间戳]
    注意:HBase按列族进行物理存储。

    5、HBase的实现包含三个功能组件

    • 库函数:链接到每个客户端
    • Master主服务器:负责管理和维护HBase表的分区信息,维护Region服务器列表,分配Region,负载均衡
    • Region服务器:负责存储和维护分配给自己的Region,处理来自客户端的读写请求

    客户端并不是直接从Master主服务器上读取数据,而是在获得Region的存储位置信息后,直接从Region服务器上读取数据。
    客户端并不依赖Master,而是通过Zookeeper来获得Region位置信息,大多数客户端甚至从来不和Master通信,这种设计方式使得Master负载很小 。
    开始只有一个Region,后来不断分裂。
    一个Region会分裂成多个新的Region

    Region拆分操作非常快,接近瞬间,因为拆分之后的Region读取的仍然是原存储文件,直到“合并”过程把存储文件异步地写到独立的文件之后,才会读取新文件。

    6、HBase的三层结构

    三层结构

    • 元数据表,又名.META.表,存储了Region和Region服务器的映射关系。当HBase表很大时,
      .META.表也会被分裂成多个Region
    • 根数据表,又名-ROOT-表,记录所有元数据的具体位置。-ROOT-表只有唯一一个Region,名字是在程序中被写死的
    • Zookeeper文件记录了-ROOT-表的位置
      三层结构的名称和作用

    7、Region服务器工作原理

    在这里插入图片描述

    • 用户读写数据过程:用户写入数据时,被分配到相应Region服务器去执行。用户数据首先被写入到MemStore和Hlog中。只有当操作写入Hlog之后,commit()调用才会将其返回给客户端。当用户读取数据时,Region服务器会首先访问MemStore缓存,如果找不到,再去磁盘上面的StoreFile中寻找。
    • 缓存的刷新:系统会周期性地把MemStore缓存里的内容刷写到磁盘的StoreFile文件中,清空缓存,并在Hlog里面写入一个标记。每次刷写都生成一个新的StoreFile文件,因此,每个Store包含多个StoreFile文件。每个Region服务器都有一个自己的HLog文件,每次启动都检查该文件,确认最近一次执行缓存刷新操作之后是否发生新的写入操作;如果发现更新,则先写入MemStore,再刷写到StoreFile,最后删除旧的Hlog文件,开始为用户提供服务。
    • StoreFile的合并:每次刷写都生成一个新的StoreFile,数量太多,影响查找速度。调用Store.compact()把多个合并成一个。合并操作比较耗费资源,只有数量达到一个阈值才启动合并。

    8、HLog工作原理

    • 分布式环境必须要考虑系统出错。HBase采用HLog保证系统恢复。HBase系统为每个Region服务器配置了一个HLog文件,它是一种预写式日志(Write
      Ahead Log)。
    • 用户更新数据必须首先写入日志后,才能写入MemStore缓存,并且,直到MemStore缓存内容对应的日志已经写入磁盘,该缓存内容才能被刷写到磁盘。
    • Zookeeper会实时监测每个Region服务器的状态,当某个Region服务器发生故障时,Zookeeper会通知Master。
    • Master首先会处理该故障Region服务器上面遗留的HLog文件,这个遗留的HLog文件中包含了来自多个Region对象的日志记录。
    • 系统会根据每条日志记录所属的Region对象对HLog数据进行拆分,分别放到相应Region对象的目录下,然后,再将失效的Region重新分配到可用的Region服务器中,并把与该Region对象相关的HLog日志记录也发送给相应的Region服务器。
    • Region服务器领取到分配给自己的Region对象以及与之相关的HLog日志记录以后,会重新做一遍日志记录中的各种操作,把日志记录中的数据写入到MemStore缓存中,然后,刷新到磁盘的StoreFile文件中,完成数据恢复。
    • 共用日志优点:提高对表的写操作性能;缺点:恢复时需要分拆日志。

    9、HBase性能优化的方法

    • 行键:行键是按照字典序存储,因此,设计行键时,要充分利用这个排序特点,将经常一起读取的数据存储到一块,将最近可能会被访问的数据放在一块。
      举个例子:如果最近写入HBase表中的数据是最可能被访问的,可以考虑将时间戳作为行键的一部分,由于是字典序排序,所以可以使用Long.MAX_VALUE - timestamp作为行键,这样能保证新写入的数据在读取时可以被快速命中。
    • InMemory:创建表的时候,可以通过HColumnDescriptor.setInMemory(true)将表放到Region服务器的缓存中,保证在读取的时候被cache命中。
    • Max Version:创建表的时候,可以通过HColumnDescriptor.setMaxVersions(int
      maxVersions)设置表中数据的最大版本,如果只需要保存最新版本的数据,那么可以设置setMaxVersions(1)。
    • Time To Live:创建表的时候,可以通过HColumnDescriptor.setTimeToLive(int
      timeToLive)设置表中数据的存储生命期,过期数据将自动被删除,例如如果只需要存储最近两天的数据,那么可以设置setTimeToLive(2 * 24 * 60 * 60)。

    10、HBase常见的shell命令

    create ‘temptable’,’f1’,’f2’,’f3’
    list
    put ‘temptable’,’r1’,’f1:c1’,’hello,dblab’
    scan ‘temptable’
    get ‘temptable’,’r1’,{COLUMN=>’f1:c1’}
    enable/disable ‘temptable’
    drop ‘temptable’
    

    第五章 NoSQL

    1、NoSQL的含义

    在这里插入图片描述

    2、NoSQL兴起的原因

    关系数据库无法满足海量数据的管理需求、数据高并发的需求、高可扩展性和高可用性的需求

    3、Web2.0的特点

    • 网站系统通常不要求严格的数据库事务
    • 不要求严格的读写实时性
    • 通常不包含大量复杂的SQL查询(去结构化,存储空间换取更好的查询性能)

    4、NoSQL与关系数据库对比

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    关系数据库

    • 优势:以完善的关系代数理论作为基础,有严格的标准,支持事务ACID四性,借助索引机制可以实现高效的查询,技术成熟,有专业公司的技术支持
    • 劣势:可扩展性较差,无法较好支持海量数据存储,数据模型过于死板、无法较好支持Web2.0应用,事务机制影响了系统的整体性能等

    NoSQL数据库

    • 优势:可以支持超大规模数据存储,灵活的数据模型可以很好地支持Web2.0应用,具有强大的横向扩展能力等
    • 劣势:缺乏数学理论基础,复杂查询性能不高,大都不能实现事务强一致性,很难实现数据完整性,技术尚不成熟,缺乏专业团队的技术支持,维护较困难等

    5、NoSQL数据库的四大类型

    在这里插入图片描述

    • 键值数据库
      在这里插入图片描述
    • 列族数据库
      在这里插入图片描述
    • 文档数据库
      在这里插入图片描述
    • 图形数据库
      在这里插入图片描述

    6、CAP

    • C(Consistency):一致性,是指任何一个读操作总是能够读到之前完成的写操作的结果,也就是在分布式环境中,多点的数据是一致的,或者说,所有节点在同一时间具有相同的数据;
    • A:(Availability):可用性,是指快速获取数据,可以在确定的时间内返回操作结果,保证每个请求不管成功或者失败都有响应;
    • P(Tolerance of Network Partition):分区容忍性,是指当出现网络分区的情况时(即系统中的一部分节点无法和其他节点进行通信),分离的系统也能够正常运行,也就是说,系统中任意信息的丢失或失败不会影响系统的继续运作。
      在这里插入图片描述

    7、BASE

    说起BASE(Basically Availble, Soft-state, Eventual consistency),不得不谈到ACID。

    ACID的四性:

    • A(Atomicity):原子性,是指事务必须是原子工作单元,对于其数据修改,要么全都执行,要么全都不执行
    • C(Consistency):一致性,是指事务在完成时,必须使所有的数据都保持一致状态
    • I(Isolation):隔离性,是指由并发事务所做的修改必须与任何其它并发事务所做的修改隔离
    • D(Durability):持久性,是指事务完成之后,它对于系统的影响是永久性的,该修改即使出现致命的系统故障也将一直保持
      在这里插入图片描述
      BASE的基本含义:
      基本可用(Basically Availble)、软状态(Soft-state)、最终一致性(Eventual consistency)
    • 基本可用:指一个分布式系统的一部分发生问题变得不可用时,其他部分仍然可以正常使用,也就是允许分区失败的情形出现。
    • 软状态:“软状态(soft-state)”是与“硬状态(hard-state)”相对应的一种提法。数据库保存的数据是“硬状态”时,可以保证数据一致性,即保证数据一直是正确的。“软状态”是指状态可以有一段时间不同步,具有一定的滞后性。
    • 最终一致性:
      一致性的类型包括强一致性和弱一致性,二者的主要区别在于高并发的数据访问操作下,后续操作是否能够获取最新的数据。对于强一致性而言,当执行完一次更新操作后,后续的其他读操作就可以保证读到更新后的最新数据;反之,如果不能保证后续访问读到的都是更新后的最新数据,那么就是弱一致性。
      最终一致性是弱一致性的一种特例,允许后续的访问操作可以暂时读不到更新后的数据,但是经过一段时间之后,必须最终读到更新后的数据。

    8、MongoDB的概念

    在这里插入图片描述

    第六章 云数据库

    1、概念

    云数据库是部署和虚拟化在云计算环境中的数据库。云数据库是在云计算的大背景下发展起来的一种新兴的共享基础架构的方法,它极大地增强了数据库的存储能力,消除了人员、硬件、软件的重复配置,让软、硬件升级变得更加容易。云数据库具有高可扩展性、高可用性、采用多租形式和支持资源有效分发等特点。

    2、特性

    动态可扩展性、高可用性、较低的使用代价、易用性、高性能、免维护、安全。

    第七章 MapReduce

    1、传统并行计算框架与MapReduce的区别

    在这里插入图片描述

    2、模型介绍

    • MapReduce将复杂的、运行于大规模集群上的并行计算过程高度地抽象到了两个函数:Map和Reduce。
    • 编程容易,不需要掌握分布式并行编程细节,也可以很容易把自己的程序运行在分布式系统上,完成海量数据的计算。
    • MapReduce采用“分而治之”策略,一个存储在分布式文件系统中的大规模数据集,会被切分成许多独立的分片(split),这些分片可以被多个Map任务并行处理。
    • MapReduce设计的一个理念就是“计算向数据靠拢”,而不是“数据向计算靠拢”,因为,移动数据需要大量的网络传输开销。
    • MapReduce框架采用了Master/Slave架构,包括一个Master和若干个Slave。Master上运行JobTracker,Slave上运行TaskTracker。
    • Hadoop框架是用Java实现的,但是,MapReduce应用程序则不一定要用Java来写。

    3、Map函数和Reduce函数

    在这里插入图片描述

    4、MapReduce体系结构

    主要由四个部分组成,分别是:Client、JobTracker、TaskTracker以及Task。
    在这里插入图片描述

    • Client:用户编写的MapReduce程序通过Client提交到JobTracker端,用户可通过Client提供的一些接口查看作业运行状态。
    • JobTracker:JobTracker负责资源监控和作业调度,JobTracker监控所有TaskTracker与Job的健康状况,一旦发现失败,就将相应的任务转移到其他节点,JobTracker会跟踪任务的执行进度、资源使用量等信息,并将这些信息告诉任务调度器(TaskScheduler),而调度器会在资源出现空闲时,选择合适的任务去使用这些资源。
    • TaskTracker:TaskTracker
      会周期性地通过“心跳”将本节点上资源的使用情况和任务的运行进度汇报给JobTracker,同时接收JobTracker发送过来的命令并执行相应的操作(如启动新任务、杀死任务等),TaskTracker使用“slot”等量划分本节点上的资源量(CPU、内存等)。一个Task 获取到一个slot后才有机会运行,而Hadoop调度器的作用就是将各个TaskTracker上的空闲slot分配给Task使用。slot 分为Mapslot 和Reduce slot 两种,分别供MapTask 和Reduce Task 使用。
    • Task:Task 分为Map Task 和Reduce Task 两种,均由TaskTracker 启动。

    5、MapReduce的执行过程

    在这里插入图片描述

    • 不同的Map任务之间不会进行通信
    • 不同的Reduce任务之间也不会发生任何信息交换
    • 用户不能显式地从一台机器向另一台机器发送消息
    • 所有的数据交换都是通过MapReduce框架自身去实现的
      在这里插入图片描述

    6、分片

    HDFS 以固定大小的block 为基本单位存储数据,而对于MapReduce 而言,其处理单位是split。split 是一个逻辑概念,它只包含一些元数据信息,比如数据起始位置、数据长度、数据所在节点等。它的划分方法完全由用户自己决定。

    7、任务数量

    • Map任务的数量:Hadoop为每个split创建一个Map任务,split的多少决定了Map任务的数目。大多数情况下,理想的分片大小是一个HDFS块
    • Reduce任务的数量:最优的Reduce任务个数取决于集群中可用的reduce任务槽(slot)的数目。通常设置比reduce任务槽数目稍微小一些的Reduce任务个数(这样可以预留一些系统资源处理可能发生的错误)

    第八章 Hadoop架构再探讨

    1、Hadoop1.0的不足

    • 抽象层次低,需人工编码
    • 表达能力有限
    • 开发者自己管理作业(Job)之间的依赖关系
    • 难以看到程序整体逻辑
    • 执行迭代操作效率低
    • 资源浪费(Map和Reduce分两阶段执行)
    • 实时性差(适合批处理,不支持实时交互式)

    2、Hadoop1.0到2.0的改进

    在这里插入图片描述

    3、HA工作原理

    HDFS HA(High Availability)是为了解决单点故障问题。HA集群设置两个名称节点,“活跃(Active)”和“待命(Standby)”。两种名称节点的状态同步,可以借助于一个共享存储系统来实现。一旦活跃名称节点出现故障,就可以立即切换到待命名称节点。Zookeeper确保一个名称节点在对外服务。名称节点维护映射信息,数据节点同时向两个名称节点汇报信息
    在这里插入图片描述

    4、新一代资源管理调度框架YARN

    在这里插入图片描述

    ResourceManager

    • 处理客户端请求
    • 启动/监控ApplicationMaster
    • 监控NodeManager
    • 资源分配与调度

    ApplicationMaster

    • 为应用程序申请资源,并分配给内部任务
    • 任务调度、监控与容错

    NodeManager

    • 单个节点上的资源管理
    • 处理来自ResourceManger的命令
    • 处理来自ApplicationMaster的命令

    第九章Spark

    1、spark的特点

    运行速度快、容易使用、通用性、运行模式多样

    2、spark和Hadoop对比

    执行过程的区别

    • 使用Hadoop进行迭代计算非常耗资源
    • Spark将数据载入内存后,之后的迭代计算都可以直接使用内存中的中间结果作运算,避免了从磁盘中频繁读取数据
    • Spark基于DAG的任务调度执行机制,要优于Hadoop MapReduce的迭代执行机制

    3、spark设计理念

    一个软件栈满足不同应用场景

    4、spark生态系统组件

    在这里插入图片描述

    5、spark中的基本概念

    • RDD:是Resillient Distributed Dataset(弹性分布式数据集)的简称,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型
    • DAG:是Directed Acyclic Graph(有向无环图)的简称,反映RDD之间的依赖关系
    • Executor:是运行在工作节点(WorkerNode)的一个进程,负责运行Task
    • Application:用户编写的Spark应用程序
    • Task:运行在Executor上的工作单元
    • Job:一个Job包含多个RDD及作用于相应RDD上的各种操作
    • Stage:是Job的基本调度单位,一个Job会分为多组Task,每组Task被称为Stage,或者也被称为TaskSet,代表了一组关联的、相互之间没有Shuffle依赖关系的任务组成的任务集

    6、spark运行基本流程

    在这里插入图片描述

    • 1、首先为应用构建起基本的运行环境,即由Driver创建一个SparkContext,进行资源的申请、任务的分配和监控。
    • 2、资源管理器为Executor分配资源,并启动Executor进程。
    • 3、SparkContext根据RDD的依赖关系构建DAG图,DAG图提交给DAGScheduler解析成Stage,然后把一个个TaskSet提交给底层调度器TaskScheduler处理;Executor向SparkContext申请Task,Task
      Scheduler将Task发放给Executor运行,并提供应用程序代码。
    • 4、Task在Executor上运行,把执行结果反馈给TaskScheduler,然后反馈给DAGScheduler,运行完毕后写入数据并释放所有资源。

    总体而言,Spark运行架构具有以下特点:
    (1)每个Application都有自己专属的Executor进程,并且该进程在Application运行期间一直驻留。Executor进程以多线程的方式运行Task
    (2)Spark运行过程与资源管理器无关,只要能够获取Executor进程并保持通信即可
    (3)Task采用了数据本地性和推测执行等优化机制

    7、RDD运行原理

    • 1、RDD读入外部数据源进行创建
    • 2、RDD经过一系列的转换(Transformation)操作,每一次都会产生不同的RDD,供给下一个转换操作使用
    • 3、最后一个RDD经过“动作”操作进行转换,并输出到外部数据源
      在这里插入图片描述

    8、RDD之间的依赖关系

    在这里插入图片描述

    • 窄依赖表现为一个父RDD的分区对应于一个子RDD的分区或多个父RDD的分区对应于一个子RDD的分区
    • 宽依赖则表现为存在一个父RDD的一个分区对应一个子RDD的多个分区

    9、Stage的划分

    Spark通过分析各个RDD的依赖关系生成了DAG,再通过分析各个RDD中的分区之间的依赖关系来决定如何划分Stage,具体划分方法是:

    • 在DAG中进行反向解析,遇到宽依赖就断开
    • 遇到窄依赖就把当前的RDD加入到Stage中
    • 将窄依赖尽量划分在同一个Stage中,可以实现流水线计算

    被分成三个Stage,在Stage2中,从map到union都是窄依赖,这两步操作可以形成一个流水线操作
    在这里插入图片描述
    分区7通过map操作生成的分区9,可以不用等待分区8到分区10这个map操作的计算结束,而是继续进行union操作,得到分区13,这样流水线执行大大提高了计算的效率。

    Stage的类型

    ShuffleMapStage和ResultStage
    (1)ShuffleMapStage:在它之后还有其他Stage,它的输出一定需要经过Shuffle过程,并作为后续Stage的输入;这种Stage是以Shuffle为输出边界,其输入边界可以是从外部获取数据,也可以是另一个ShuffleMapStage的输出,其输出可以是另一个Stage的开始;在一个Job里可能有该类型的Stage,也可能没有该类型Stage;
    (2)ResultStage:最终的Stage,没有输出,而是直接产生结果或存储。这种Stage是直接输出结果,其输入边界可以是从外部获取数据,也可以是另一个ShuffleMapStage的输出。在一个Job里必定有该类型Stage。因此,一个Job含有一个或多个Stage,其中至少含有一个ResultStage。

    10、RDD执行过程

    a、创建RDD对象;
    b、SparkContext负责计算RDD之间的依赖关系,构建DAG;
    c、DAGScheduler负责把DAG图分解成多个Stage,每个Stage中包含了多个Task,每个Task会被TaskScheduler分发给各个WorkerNode上的Executor去执行。
    在这里插入图片描述

    11、spark SQL部署方式

    • Standalone(类似于MapReduce1.0,slot为资源分配单位)
    • Spark on Mesos(和Spark有血缘关系,更好支持Mesos)
    • Spark on YARN

    第十章 流计算

    1、常见的流计算框架

    商业级的流计算平台(IBM …)、开源流计算框架(Twitter storm,yahoo)、公司为支持自身业务开发的流计算框架(Facebook,dstream)

    2、流处理系统与传统的数据处理系统有如下不同

    • 流处理系统处理的是实时的数据,而传统的数据处理系统处理的是预先存储好的静态数据。
    • 用户通过流处理系统获取的是实时结果,而通过传统的数据处理系统,获取的是过去某一时刻的结果。
    • 流处理系统无需用户主动发出查询,实时查询服务可以主动将实时结果推送给用户。
    展开全文
  • 大数据技术原理与应用 /course/XMU-1002335004 中国大学MOOC 2018年春季学期 第5讲NoSQL数据库 5.1 NoSQL简介 概念演变 Not only SQL 最初表示 反SQL 运动 现在表示关系和非关系型数据库各有优缺点 用新型的非关系...
  • 资源名称:大数据技术原理与应用 概念、存储、处理、分析与应用 内容简介:大数据作为继云计算、物联网之后IT行业又一颠覆性的技术,备受关注。大数据处不在,包括金融、汽车、零售、餐饮、电信、能源、政务、医疗...
  • 大数据技术原理与应用 本文是对《大数据与云计算导论》课程知识点的应试总结。基本涵盖了《大数据技术原理与应用》的重点内容。 思维导图由@福尔摩东整理 第一章 大数据概述 1、三次信息化浪潮 信息化浪潮 ...

    大数据技术原理与应用

    本文是对《大数据与云计算导论》课程知识点的应试总结。基本涵盖了《大数据技术原理与应用》的重点内容。

    思维导图@福尔摩东整理

    第一章 大数据概述

    1、三次信息化浪潮

    信息化浪潮 发生时间 标志 解决的问题 代表企业
    第一次浪潮 1980年前后 个人计算机 信息处理 Intel、AMD、IBM
    第二次浪潮 1995年前后 互联网 信息传输 雅虎、谷歌、阿里巴巴
    第三次浪潮 2010年前后 物联网、云计算和大数据 信息爆炸 亚马逊、谷歌、阿里云

    注:信息化浪潮每15年一次。

    2、信息科技为大数据时代提供技术支持

    1. 存储设备容量不断增加

      存储单位:bit、Byte、KB、MB、GB、TB、PB、EB(ZB、YB、BB、NB、DB)

    2. CPU处理能力大幅提升

    3. 网络带宽不断增加

    3、大数据的特点(5个)

    1. 数据量大(Volume)
    2. 数据类型繁多(Variety)
    3. 处理速度快(Velocity)
    4. 价值密度低(Value)
    5. 真实性(Veracity)

    4、大数据的影响

    1、大数据对科学研究的影响

    人类自古以来在科学研究上先后经历了实验、理论、计算和数据四种范式:

    1. 第一种范式:实验科学
    2. 第二种范式:理论科学
    3. 第三种范式:计算科学
    4. 第四种范式:数据密集型科学

    2、大数据对思维方式的影响

    1. 全样而非抽样
    2. 效率而非精确
    3. 相关而非因果

    5、大数据关键技术

    • 数据采集与预处理
    • 数据存储和管理
    • 数据处理与分析
    • 数据安全和隐私保护

    6、大数据计算模式

    大数据计算模式 解决问题 代表产品
    批处理计算 针对大规模数据的批量处理 MapReduce、Spark等
    流计算 针对流数据的实时计算 Strom、Stream、银河流数据处理平台等
    图计算 针对大规模图结构数据的处理 Pregel、GraphX、PowerGraph等
    查询分析计算 大规模数据的存储管理和查询分析 Dremel、Hive等

    7、云计算

    1、概念

    通过网络提供可伸缩的、廉价的分布式计算能力

    2、云计算的关键技术

    1. 虚拟化:云计算基础架构的基石
    2. 分布式存储
    3. 分布式计算
    4. 多租户

    8、物联网

    1、概念

    物物相连的互联网

    从技术架构上来看,物联网可分为四层:感知层、网络层、处理层和应用层

    2、物联网关键技术

    1. 识别和感知技术(二维码、RFID、传感器等)
    2. 网络与通信技术
    3. 数据挖掘与融合技术

    9、大数据与云计算、物联网的关系

    在这里插入图片描述

    • 区别:大数据侧重于海量数据的存储、处理与分析,从海量数据中发现价值,服务于生产和生活;云计算本质上旨在整合和优化各种IT资源,并通过网络以服务的方式廉价地提供给用户;物联网的发展目标是实现物物相连,应用创新是物联网发展的核心。
    • 联系:大数据、云计算和物联网三者相辅相成。大数据根植于云计算,大数据分析的很多技术都来自于云计算,云计算的分布式数据存储和管理系统提供了海量数据的存储和管理能力,分布式并行处理框架MapReduce提供了海量数据的分析能力;大数据为云计算提供了“用武之地”;物联网的传感器源源不断产生的大量数据,构成了大数据的重要来源,同时物联网需要借助于云计算和大数据技术,实现物联网大数据的存储、分析和处理。

    第二章 大数据处理框架Hadoop

    1、Hadoop简介

    Hadoop是一个开源分布式计算平台

    Hadoop的核心包括:HDFS(前身:NDFS)和MapReduce。

    2、Hadoop的特性

    • 高可靠性
    • 高效性
    • 高扩展性
    • 高容错性
    • 成本低
    • 运行在Linux平台上
    • 支持多种编程语言

    第三章 分布式文件系统HDFS

    1、HDFS含义

    Hadoop分布式文件系统,是GFS的开源实现

    2、DFS含义

    分布式文件系统(DFS)是一种通过网络实现文件在多台主机上进行分布式存储的文件系统

    3、分布式文件系统的结构

    • 主节点(Master Node):名称节点(NameNode)
    • 从节点(Slave Node):数据节点(DataNode)

    在这里插入图片描述

    4、分布式文件系统的设计需求

    分布式文件系统的设计目标主要包括:透明性、并发控制、可伸缩性、容错以及安全需求等。

    5、HDFS特性

    1、目标

    1. 兼容廉价的硬件设备
    2. 流数据读写
    3. 大数据集
    4. 简单的文件模型
    5. 强大的跨平台兼容性

    2、局限性

    1. 不适合低延迟数据访问
    2. 无法高效存储大量小文件
    3. 不支持多用户写入及任意修改文件

    6、HDFS相关概念

    1、块

    以数据块为单位进行存储(1.0默认64MB)

    **目的:**最小化寻址开销

    好处:

    1. 支持大规模文件存储
    2. 简化系统设计
    3. 适合数据备份

    2、名称节点和数据节点

    名称节点的核心数据结构:FsImage和EditLog。

    NameNode DataNode
    存储元数据 存储文件内容
    元数据存在内存 文件内容保存在磁盘
    保存文件Block于DataNode间的映射关系 维护Block与DataNode本地文件的映射关系

    3、第二名称节点

    作用:

    1. Edit log与FsImage的合并操作
    2. 作为名称节点的“检查点”(冷备份)

    7、HDFS体系结构

    1、HDFS命名空间管理

    HDFS的命名空间包含目录、文件和块。

    HDFS集群中只有一个命名空间,并且只有唯一一个名称节点。

    2、通信协议

    • 构建在TCP/IP协议基础之上
    • 使用客户端协议与名称节点进行交互
    • 名称节点和数据节点之间使用数据节点协议进行交互
    • 客户端与数据节点的交互通过RPC实现

    3、局限性

    1. 命名空间的限制
    2. 性能的瓶颈
    3. 隔离问题
    4. 集群的可用性

    8、HDFS的存储原理

    数据的冗余存储、数据存取策略、数据错误与恢复

    1、数据的冗余存储

    优点:

    1. 加快数据传输速度
    2. 容易检查数据错误
    3. 保证数据的可靠性

    2、数据存取策略

    1、数据存放

    冗余因子默认为3。

    **内部请求:**第一个副本放置在写操作请求的数据节点上;

    **外部请求:**挑一个不太忙的数据节点,第二个副本放置在不同于第一个副本的机架的数据节点上,第三个副本放置在第一个副本的机架的其他数据节点上。

    2、数据读取

    当发现某个数据块副本对应的机架ID与客户端对应的ID一样时,优先选择该副本,否则就随机。

    3、数据复制

    采用流水线复制的策略(4KB)

    3、数据错误与恢复

    9、HDFS常用命令

    • hadoop fs -get
    • hadoop fs -put

    第四章 分布式数据库HBase

    1、HBase含义

    Hadoop DataBase(HBase)是针对谷歌BigTable的开源实现。

    2、HBase与传统关系数据库的对比分析

    关系数据库 HBase
    数据类型 具有丰富的数据类型和存储方式 未经解释的字符串
    数据操作 丰富的操作 不存在复杂的表与表之间的关系
    存储模式 基于行模式存储 基于列存储
    数据索引 可以构建复杂的多个索引 只有一个索引——行键
    数据维护 更新操作会用最新的当前值去替代旧值 生成一个新的版本,旧有版本依然保留
    可伸缩性 很难实现横向扩展,纵向扩展空间有限 可实现灵活的水平扩展

    3、HBase数据模型

    1、相关概念

    HBase是一个稀疏、多维、持久化存储的映射表,它采用行键、列族、列限定符和时间戳进行索引。

    2、数据坐标

    “四维坐标”:[行键,列族,列限定符,时间戳]

    4、HBase实现原理

    1、HBase的功能组件

    • 库函数
    • 一个Master主服务器
    • 许多个Region服务器

    2、Region的定位

    Region标识符:“表名+开始主键、RegionID”

    5、HBase运行机制

    1、HBase系统架构

    在这里插入图片描述

    2、Region服务器的工作原理

    每个Region对象又是由多个Store组成的,每个Store对应了表中的一个列族的存储。

    每个Store又包含了一个MemStore和若干个StoreFile。

    6、HBase常用Shell命令

    • create:创建表
    • list:列出HBase中所有的表信息
    • put:向表、行、列指定的单元格添加数据
    • get:通过指定表名、行、列、时间戳、时间范围和版本号来获得相应单元格的值
    • scan:浏览表的相关信息

    第五章 NoSQL数据库

    1、NoSQL简介

    1、含义

    Not Only SQL

    2、特点

    1. 灵活的可扩展性
    2. 灵活的数据模型
    3. 与云计算紧密融合

    2、NoSQL的四大类型

    类型 代表
    键值数据库 Redis、Memcached
    列族数据库 Cassandra、HBase
    文档数据库 MongoDB
    图数据库 Neo4j

    3、NoSQL的三大基石

    1、CAP

    • C(Consistency):一致性
    • A(Availability):可用性
    • P(Tolerance of Network Partition):分区容忍性

    CAP理论最多同时满足三个中的两个。

    1. CA。强调一致性(C)和可用性(A),放弃分区容忍性(P)。

      eg:传统的关系数据库(MySQL、SQL Server等)。

    2. CP。强调一致性(C)和分区容忍性(P),放弃可用性(A)。

      eg:Neo4j、BigTable和HBase等。

    3. AP。强调可用性(A)和分区容忍性(P),放弃一致性(C)。

      eg:Cassandra、Dynamo等。

    2、BASE

    BASE

    • BA(Basically Available):基本可用
    • S(Soft-state):软状态
    • E(Eventual consistency):最终一致性

    ACID:一个数据库事务具有ACID四性

    • A(Atomicity):原子性
    • C(Consistency):一致性
    • I(Isolation):隔离性
    • D(Durability):持久性

    4、三个数据库阵营

    • OldSQL(传统关系数据库)
    • NoSQL
    • NewSQL

    第六章 云数据库

    1、云数据库概念

    云数据库是部署和虚拟化在云计算环境中的数据库。

    2、云数据库的特性

    1. 动态可扩展
    2. 高可用性
    3. 较低的使用代价
    4. 易用性
    5. 高性能
    6. 免维护
    7. 安全

    第七章 MapReduce

    1、MapReduce简介

    MapReduce是一种分布式并行编程框架,以Map和Reduce为核心函数。

    MapReduce的设计理念:计算向数据靠拢。

    Map函数和Reduce函数都以<key,value>作为输入。

    2、MapReduce的工作流程

    第八章 Hadoop再探讨

    1、针对Hadoop的改进与提升

    组件 1.0的问题 2.0的改进
    HDFS 单一名称节点,存在单点失效问题 设计了HDFS HA,提供名称节点热备份机制
    HDFS 第一命名空间,无法实现资源隔离 设计了HDFS联邦,管理多个命名空间
    MapReduce 资源管理效率低 设计理新的资源管理框架YARN

    2、HDFS 2.0的新特性

    1、HDFS HA

    2、HDFS联邦

    优势:

    1. HDFS集群可扩展性
    2. 性能更高效
    3. 良好的隔离性

    3、新一代资源管理调度框架YARN

    1、YARN体系结构

    YARN体系结构包含了三个组件:

    1. ResourceManager
    2. ApplicationMaster
    3. NodeManager

    2、YARN的发展目标

    YARN的目标就是实现“一个集群多个框架”,即在一个集群上部署一个统一的资源调度管理框架YARN,在YARN之上可以部署其他各种计算框架。

    3、Hadoop生态系统中具有代表性的功能组件

    1、Pig

    提供了类似SQL的Pig Latin语言。

    Pig会自动把用户编写的脚本转换成MapReduce作业在Hadoop集群上运行。

    2、Tez

    Tez是Apache开源的支持DAG作业的计算框架。

    核心思想:将Map和Reduce两个操作进一步拆分。

    3、Kafka

    一种分布式发表订阅消息系统。

    满足在线实时处理和批量离线处理。

    第九章 Spark

    1、Spark简介

    Spark是基于内存计算的大数据并行计算框架。

    特点:

    1. 运行速度快
    2. 容易使用
    3. 通用性
    4. 运行模式多样

    2、Scala简介

    Scala是一门多范式编程语言,面向函数编程。

    3、Spark运行架构

    1、基本概念

    1. RDD:弹性分布式数据集
    2. DAG:有向无环图

    2、RDD

    **概念:**分布式对象集合。

    依赖关系:

    • 窄依赖:一个父RDD的分区对应于一个子RDD的分区,或多个父RDD的分区对应于一个子RDD的分区;
    • 宽依赖:存在一个父RDD的一个分区对应于一个子RDD的多个分区。

    第十章 流计算

    1、流计算概述

    1、流计算概念

    流计算即针对流数据的实时计算。

    2、批量处理和实时处理

    在这里插入图片描述

    2、流计算的处理流程

    • 数据实时采集
    • 数据实时计算
    • 实时查询服务

    3、开源流计算框架Storm

    Storm的设计思想:

    1. Streams

      流数据(Streams)是一个无限的Tuple序列。

    2. Spouts

      Spouts是Stream的源头,会从外部读取流数据并持续发出Tuple。

    3. Bolts

      Bolts既可以处理Tuple,也可以将处理后的Tuple作为新的Streams发给其他Bolts。

    4. Topology

      Spouts和Bolts组成的网络。

    5. Stream Groupings

      用于告知Topology如何在两个组件间进行Tuple的传送。

    4、Spark Streaming

    Spark Streaming与Storm的对比

    Spark Streaming无法实现毫秒级的流计算,而Storm则可以实现毫秒级响应。

    第十一章 图计算

    1、图计算概述

    **含义:**对图结构的计算。

    **BSP模型:**整体同步并行计算模型,又名“大同步模型”。

    一次BSP计算过程包括一系列全局超步(超步就是指计算中的一次迭代),每个超步包括3个组件:

    1. 局部计算
    2. 通信
    3. 栅栏同步

    2、Pregel简介

    Pregel是一种基于BSP模型实现的并行图处理系统。

    展开全文
  • 大数据技术原理与应用——大数据存储与管理 1.分布式文件系统 (1)计算机集群结构 集群的概念 集群是指将多台服务器整合在一起,每台服务器都实现相同的业务,做相同的事情。 每台服务器并不是缺一不可,它存在的...
  • 大数据技术原理与应用 第三章 分布式文件系统HDFS 学习指南
  • 大数据技术原理与应用——MapReduce 7.1.1 分布式并行编程 概述 MapReduce 是一种分布式并行编程框架 数据处理能力提升的两条路线 1.单核 CPU 到双核到四核到八核 2.分布式并行编程:借助一个集群通过多台机器同时...
  • 入门级大数据精品课程,适合初学者,完备的课程在线服务体系,可以帮助初学者实现“零基础”学习大数据。课程指导思想是“构建知识体系、阐明基本原理、引导...配套的《大数据技术原理与应用》教材已经被众多高校采用。
  • 林子雨的这版《大数据技术原理与应用概念、存储、处理、分析与应用》写得非常详细,是我们老师指定教材,非常适合大数据学习者使用
  • 大数据技术原理与应用——大数据处理架构 Hadoop 1.概述 Hadoop项目结构 Hadoop的安装与使用
  • 大数据技术原理与应用 概念、存储、处理、分析与应用(第2版) 影印高清版 作者:厦门大学 林子雨老师
  • 大数据技术原理与应用课程建设经验分享林子雨厦门大学信息科学与技术学院, 福建 厦门 361005摘要:大数据专业人才的培养是世界各国新一轮科技较量的基础,高等院校承担着...
  • 最近在学习厦门大学林子雨老师开讲的一门课程 —— 大数据技术原理与应用,决定开始做一下学习笔记。参考材料:http://dblab.xmu.edu.cn/post/bigdata-online-course/#lesson01. 大数据4V特征大数据具有数据量大...
  • 大数据技术原理与应用——NoSQL数据库 5.1 NoSQL 简介 特点 1.灵活的可扩展性 传统的关系型数据库由于自身设计机理的原因,通常很难实现“横向扩展”,在面对数据库负载大规模增加时,往往需要通过升级硬件来实现...
  • 大数据技术原理与应用——分布式数据库 HBase 4.1 概述 4.1.1 从 BigTable 说起 BigTable 是一个分布式存储系统 BigTable 起初用于解决典型的互联网搜索问题 建立互联网索引 1.爬虫持续不断地抓取新页面,这些页面每...
  • 大数据技术原理与应用——数据仓库 8.1数据仓库的概念 根本目的 数据仓库概念 数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。 数据仓库的数据都来自于数据源,数据源...
  • 大数据技术原理与应用之第四章习题 1.试述在Hadoop体系架构中HBase与其他组成部分的相互关系 答: HBase利用Hadoop MapReduce来处理HBase中的海量数据,实现高性能计算;利用Zookeeper作为协同服务,实现稳定服务...
  • 大数据技术原理与应用(林子雨) 第1章 大数据概述 1单选(2分) 第三次信息化浪潮的标志是: A.个人电脑的普及 B.云计算、大数据、物联网技术的普及 C.虚拟现实技术的普及 D.互联网的普及 正确答案:B你选对了 2单选...

空空如也

1 2 3 4 5 ... 20
收藏数 732
精华内容 292
关键字:

大数据技术原理与应用