当前位置:   article > 正文

大数据技术原理与应用(林子雨第3版)_大叔技术原理与应用林子雨第3版

大叔技术原理与应用林子雨第3版

大数据考试重点提纲(23.6)

考试范围(第1.2.3.4.7.10章),学习通课后习题

题型:

1、单选 2’ * 10 = 20‘

2、简答题 8‘ * 6 = 48’

3、分析题 11‘ * 2 = 22’

4、论述题10‘ * 1

第一章 大数据概述

1.1 3次信息化浪潮的标志,各自解决了什么问题 P3

​ 第一次信息化浪潮,1980年前后, 解决问题:信息处理 ,标志:个人计算机

​ 第二次信息化浪潮,1995年前后, 解决问题:信息传输 ,标志:互联网

​ 第三次信息化浪潮,2010年前后, 解决问题: 信息爆炸,标志:云计算、物联网、大数据

1.2 什么是大数据(概念、4V)P8

​ 大数据的4个特点,4个“V”是指数据量大、数据类型繁多、处理速度快、价值密度低.

1.3 大数据对科学研究的影响(P10

​ 大数据使人类科学研究在经历了实验科学、理论科学、计算科学3种范式后迎来了第4种范式——数据密集型科学。

1.4 大数据对思维方式的影响(P12

​ 1)全样而非抽样:

​ 2)效率而非精确:

​ 3)相关而非因果:

1.5 大数据计算模式(4种)

​ 1)批处理计算:针对大规模数据的批量处理,如MapReduce、Spark

​ 2)流计算:针对流数据的实时计算,如Store、Flink

​ 3)图计算:针对大规模图结构数据的处理,如Pregel、GraphX

​ 4)查询分析计算:大规模数据的存储管理和查询分析,如Hive、Dremel

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

​ 1)大数据、云计算和物联网的区别。大数据侧重于对海量数据的存储、处理和分析,从海量数据中发现价值,服务于生产和生活;云计算旨在整合和优化各种IT资源,并通过网络以服务的方式廉价地提供给用户;物联网的发展目标是实现“物物相连”,应用创新是物联网发展的核心。

​ 2)大数据、云计算和物联网的联系。从整体上看,三者是相辅相成的。大数据根植于云计算,大数据分析的很多技术都来自云计算,云计算的分布式数据存储和管理系统提供了海量数据的存储和管理能力,分布式并行处理框架MapReduce提供了海量数据分析能力。没有这些云计算技术作为支撑,大数据分析就无从谈起。反之,大数据为云计算提供了“用武之地”,没有大数据这个“练兵场”,云计算技术再先进,也不能发挥它的应用价值。物联网的传感器源源不断产生的大量数据,构成了大数据的重要数据来源,没有物联网的飞速发展,就不会带来数据产生方式的变革,即由人工产生阶段转向自动产生阶段,大数据时代也不会这么快到来。同时,物联网需要借助云计算和大数据技术,实现物联网大数据的存储、分析和处理。

第二章 大数据处理架构 Hadoop

2.1 Hadoop的特性(7个)P30

​ 1)高可靠性。采用冗余数据存储方式,即使一个副本发生故障,其他副本也可以保证正常对外提供服务。

​ 2)高效性。Hadoop是一个并行分布式计算平台,能够高效处理PB级数据。

​ 3)高可扩展性。Hadoop的设计目标是可以高效稳定地运行在廉价的计算机集群上,可以扩展到数以千计的计算机节点上。

​ 4)高容错性。采用冗余数据存储方式,自动保存数据的多个副本,并且能够自动将失败的任务进行重新分配。

​ 5)成本低。采用廉价的计算机集群,成本比较低,普通用户也很容易用自己的PC搭建Hadoop运行环境。

​ 6)运行在Linux操作系统上。Hadoop是基于Java开发的,可以较好地运行在Linux系统上。

​ 7)支持多种编程语言。Hadoop上的应用程序也可以用其它语言编写,如C++。

2.2 Hadoop生态系统及组件的功能 P31

​ 1)HDFS:Hadoop项目的核心组件之一,它是针对谷歌文件系统的开源实现。HDFS具有处理超大数据、流式处理、可以运行在廉价商用服务器上等优点。

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

​ 3)MapReduce:是Hadoop项目的两个核心之一,是针对谷歌MapReduce的开源实现,是一种编程模型,用于大规模数据集的并行运算,它将复杂的运行于大规模集群上的并行计算过程高度抽象为两个函数,即Map和Reduce,允许用户在不了解分布式系统底层细节的情况下开发并行应用程序,且将其运行于廉价的计算机集群上,完成海量数据的处理。

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

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

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

​ 7)Mahout:是Apache软件基金会旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。

​ 8)Flume:是高可用的、高可靠的、分布式的海量日志采集、聚合和传输的系统。

​ 9)Sqoop:是SQL-to-Hadoop的缩写,主要用来在Hadoop和关系数据库之间交换数据,可以改进数据的互操作性。

​ 10)Ambari:是一种基于web的工具,支持Apache Hadoop集群的安装、部署、配置和管理。

第三章 分布式文件系统HDFS

3.1 HDFS节点类型和功能(P50、P51)

​ 名称节点:负责管理分布式文件系统的命名空间,保存两个核心的数据结构,即FsImage 和EditLog。名称节点记录了每个文件中各个块所在的数据节点的位置信息。

​ FsImage:用于维护文件系统树以及文件树中所有的文件和文件夹的元数据。

​ 操作日志文件EditLog中记录了所有对文件的创建、删除、重命名等操作。

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

3.2 HDFS体系结构的局限性(P54)

​ 1)不适合低延时数据访问。HDFS主要面向大规模数据批量处理而设计的,采用流式数据读取,具有很高的数据吞吐率,同时这意味着较高的延迟。

​ 2)无法高效存储大量小文件。过多的小文件会给系统扩展性和性能带来诸多问题。首先HDFS采用名称节点来管理文件系统的元数据,过多的小文件使元数据检索效率降低。其次

​ 3)不支持多用户写入及任意修改文件。HDFS只允许一个文件有一个写入者,不允许多个用户对同一个文件执行写操作,而且只允许对文件执行追加操作,不能执行随机写操作。

3.3 HDFS为什么采用大块存储,有什么好处 (P54)

采用块设计是为了最小化寻址开销

​ 1)支持面向大规模数据存储

​ 2)降低分布式节点的寻址开销

采用块设计有以下明显好处

​ 1)支持大规模文件存储。一个大规模的文件可以被拆分成若干个文件块,不同的文件块可以被分发到不同的节点上,因此一个文件的大小不会受到单个节点的存储容量的限制。

​ 2)简化系统设计。文件块大小固定,大大简化了存储管理,可以轻易算出一个节点可以存储多少文件块;其次方便了元数据的管理元数据不需要和文件块一起存储,可以由其它系统负责管理元数据。

​ 3)适合数据备份。每个文件块都可以冗余存储到多个节点上,大大提高了系统的容错性和可用性。

​ 块过大,因为MapReduce中的Map任务一次只处理一个块中的数据,如果任务启动太少,就会降低作业并行处理速度。

3.4 数据存取策略P55

​ HDFS采用多副本冗余存储方式,默认冗余复制因子是3。

​ 1)如果是在集群内部发起写请求,则把第1个副本放置在发起写操作请求的数据节点上,实现就近写入数据。如果是在集群外发起写操作请求,则从集群内部挑选一台磁盘空间较为充足、CPU不太忙的数据节点,作为第1个副本的存放地。

​ 2)第2个副本会被放置在与第一个副本不同的机架的数据节度上。

​ 3)第3个副本会被放置在与第1个副本相同机架的其他节点上。

​ 4)如果还有更多的副本,则继续从集群中随机选择数据节点进行存放。

3.5 数据读过程

​ 1)客户端通过 FileSystem.openO打开文件,相应地,在HDFS中 DistributedFileSystem具体实现了FileSystem.因此,调用openO方法后,DistributedFileSystem会创建输入流FSData InputStream,对于HDFS而言,具体的输入流就是DFSInputStream。

(2)在DFSInputStream的构造函数中,输入流通过ClientProtocal.getBlockLocations0远程调用名称节点,获得文件开始部分数据块的保存位置。对于该数据块,名称节点返回保存该数据块的所有数据节点的地址,同时根据距离客户端的远近对数据节点进行排序;然后,DistributedFileSystem会利用DFSInputStream 来实例化FSDataInputStream,并返回给客户端,同时返回数据块的数据节点地址。

(3)获得输入流FSDatalnputStream后,客户端调用readO方法开始读取数据。输入流根据前面的排序结果,选择距离客户端最近的数据节点建立连接并读取数据。

(4)数据从该数据节点读到客户端;当该数据块读取完毕时,FSDatalnputStream关闭和该数据节点的连接。

(5)输入流通过getBlockLocationsO方法查找下一个数据块(如果客户端缓存中已经包含了该数据块的位置信息,就不需要调用该方法)。

(6) 找到改数据块的最佳数据节点,读取数据。

(7) 调用FSDataInputStream的close()方法,关闭输入流。

3.6数据写过程
(1)客户端通过调用FileSystem.create()创建文件,相应地,在HDFS文件系统中DistributedFileSystem具体实现FileSystem。调用create()方法后,DistributedFileSystem创建输出流FSDataOutputStream,对于HDFS而言,具体的输出流就是DFSOutputStream。

(2)DistributedFileSystem通过RPC远程调用名称节点,在文件系统的命名空间中创建一个新的文件。名称节点执行相关检查,如文件是否已经存在、客户端是否有权限创建文件等。检查通过后,名称节点构造一个新文件,并添加文件信息。远程方法调用结束后,DistributedFileSystem利用DFSOutputStream实例化FSDataOutputStream,返回给客户端,客户端使用该输出流写入数据。

(3)获得输出流FSDataOutputStream后,客户端调用输出流的write()方法向HDFS中对应的文件写入数据。

(4)客户端向输出流FSDataOutputStream中写入的数据首先被分成一个个的分包,它们被放入DFSOutputStream对象的内部队列。输出流FSDataOutputStream向名称节点申请保存文件和副本数据块的若干个数据节点,这些节点形成一个数据管道流。队列中的分包最后被打包成数据包,发往数据管道的第一个数据节点,第一个数据节点将数据包发送给第二个数据节点,第二个数据节点将数据包发送给第三个数据节点,依次类推,数据包将流经管道上的各个数据节点。

(5)因各个数据节点位于不同的机器上,数据需要通过网络发送。所以为保证所有数据节点的数据都是准确的,接收到数据的数据节点要向发送者发送“确认包(Ack packet)”。确认包沿着数据管道逆流而上,从数据管道依次经过各个数据节点并最终发往客户端,当客户端收到应答时,它将对应的分包从内部队列移除。不断执行(3)-(5)步,直到数据全部写完。

(6)客户端调用close()方法关闭输出流,此时后,客户端不再向输出流写入数据,所以,当DFSOutputStream对象内部队列中的分包都收到应答后,即可使用ClientProtocol.complete()方法通知名称节点关闭文件,完成一次正常的写入文件过程。

第四章 分布式数据库HBase

4.1 BigTable 怎么保存信息(P67)

4.2 HBase 与传统关系数据库的对比(选择题)(P68)

​ 1)数据类型: 关系数据库采用关系模型;HBase采用数据模型

​ 2)数据操作:关系数据库有插入、删除、更新、查询、多表连接;HBase只有简单的插入、查询、删除、清空,无法实现表与表之间关联

​ 3)存储模式:关系数据库基于行模式存储,元组或行会被连续地存储在磁盘也中;HBase基于列存储,每个列族都由几个文件保存,不同列族的文件是分离的。

​ 4)数据索引:关系数据库针对不同列构建复杂的多个索引;HBase只有一个行键索引。

​ 5)数据维护:关系数据库用最新的当前值去替换记录中原来的旧值;HBase更新操作不会删除数据旧的版本,而是生成一个新的版本。

​ 6)可伸缩性:关系数据库很难实现横向扩展,纵向扩展的空间也比较有限;HBase可以轻易地通过在集群中增加或者减少硬件数量来实现性能的伸缩。

4.3 表和Region(P76)

​ 1)表:HBase采用表来组织数据,表由行和列组成,列划分为若干个列族。对于每个表中的行是根据行键的值的字典序进行维护的。

​ 2)表中包含的行数量可能很大,无法存储在一台机器上,需要分布存储到多台机器上。因此,需要根据行键的值对表中的行进行分区,即Region。Region包含了位于某个值域区间内的所有数据,是负载均衡和数据分发的基本单位。

4.4 Region的定位(P76)

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

4.5 Region服务器的工作原理(P80)

4.6 Store的工作原理(P81)

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

4.7 HLog 的工作原理(P81)

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

第七章 MapReduce

7.1 MapReduce的体系结构

​ client:通过client可以提交用户编写的应用程序提交到JobTracker端;查看当前提交作业的运行状态

​ JobTracker:负责资源监控和作业调度;监控底层的其它的TaskTracker以及当前的Job的健康状况;一旦探测到失败的情况就把这个任务转移到其它节点继续执行跟踪任务执行进度和资源使用量

​ TaskTracker:执行具体相关任务,一般接收JobTracker发送过来的命令;将自己的资源使用情况及任务的运行进度通过心跳的方式发送给JobTracker

​ TaskScheduler

7.2 MapReduce的工作流程,Map 函数和Reduce函数的一般流程、步骤。(分析题11’)

7.3 可以使用MapReduce的前提条件(数据特点)

​ 待处理的数据集可以分解成许多小的数据集,而且每一个小数据集都可以完全并行地进行处理。

第十章

10.1Hadoop 的缺点 && Spark对比Hadoop的优点

(1)Hadoop存在以下缺点:①表达能力有限;②磁盘IO开销大;③延迟高。

(2)Spark主要有如下优点:

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

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

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

10.2 Spark的生态系统及各组件的作用

​ Spark生态系统主要包含了Spark Core、Spark SQL、Spark Streamimg、 Structured Streaming、MLlib、GraphX等组件。

​ Spark Core:应用于复杂的批量数据处理

​ Spark SQL:基于历史数据的交互式查询

​ Spark Streaming、Structured Streaming:基于实时数据流的数据处理

​ MLlib:基于历史数据的数据挖掘

​ GraphX:用于图结构数据的处理

10.3 Spark运行架构的基本概念(学习通课后习题)

​ 1)RDD:弹性分布式数据集,提供了一种高度受限的共享内存模型

​ 2)DAG:有向无环图,反映RDD之间的依赖关系

​ 3)Executor:是运行在工作节点上的一个进程,负责运行任务,并为应用程序存储数据。

​ 4)应用:用户编写的Spark程序。

​ 5)任务(TAsk):运行在Executor上的工作单元。

​ 6)作业(Job):一个作业包含多个RDD及作用于相应RDD

上的各种操作。

​ 7)阶段(Stage):是作业的基本调度单位,一个Job会分为多组Task,每组Task被称为“阶段”(Stage),或者也被称为“用户集”。

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

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

10.4 Spark运行基本流程(P198)

​ 1)当一个Spak应用被提交时,首先需要为这个应用构建起基本的运行环境,即由任务控制节点 (Driver)创建一个SparkContext,由SparkContext负责和资源管理器(Cluster Manager)的通信以及 进行资源的申请、任务的分配和监控等。SparkContext会向资源管理器注册并申请运行Executor的 资源 。

​ 2)资源管理器为Executor分配资源,并启动Executor进程,Executor运行情况将随着“心跳”发送到资 源管理器上。

​ 3) SparkContext根据RDD的依赖关系构建DAG图,DAG图提交给DAG调度器(DAGScheduler)进行解 析,将DAG图分解成多个“阶段”,并且计算出各个阶段之间的依赖关系,然后把一个个“任务集”提交 给底层的任务调度器(TaskScheduler)进行处理;Executor向SparkContext申请任务,任务调度器 将任务分发给Executor运行,同时SparkContext将应用程序代码发放给Executor 。

​ 4)任务在Executor上运行,把执行结果反馈给任务调度器,然后反馈给DAG调度器,运行完毕后写入 数据并释放所有资源。

10.5 RDD的设计与运行原理(P199)

​ RDD特性:

​ 1)高效的容错性。RDD不需要通过数据冗余的方式实现

​ 2)中间结果持久化到内存。避免了不必要的读写开销。

​ 3)存放的数据可以是Java对象,避免了不必要的对象序列化和反序列化。

​ RDD经典执行过程:

​ 1)RDD读入外部数据源(或者内存中的集合)进行创建。

​ 2)RDD经过一系列的“转换”操作,每次都会产生不同的RDD,供给下一个“转换”使用。

​ 3)最后一个RDD经过“行动”操作进行处理,并输出到外部数据源(或者变成Scala集合或标量)。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/452540
推荐阅读
相关标签
  

闽ICP备14008679号