当前位置: > 财经>正文

《大数据技术原理与应用》林子雨(第二版) 信托的运作原理包括哪些方面

2023-09-06 05:59:46 互联网 未知 财经

《大数据技术原理与应用》林子雨(第二版)

厦大子雨老师的这本书内容不多,但是很全面,推荐适合大数据入门。本篇文章主要是自己根据书中内容,以QA的形式做下总结,且对书后答案做了解答。

文章目录 第一篇 大数据基础大数据处理架构Hadoop1. 试述 hadoop 和谷歌的 mapreduce、gfs 等技术之间的关系2. 试述 Hadoop 具有哪些特性。3. 试述 Hadoop 在各个领域的应用情况。4. 试述 Hadoop 生态系统以及每个部分的具体功能5. 配置Hadoop时,Java的路径JAVA_HOME是在哪一个配置文件中进行设置的?6. 所有节点的HDFS路径是通过fs.default.name来设置的,请问它是在哪个配置文件中设置的?7. 试着列举单机模式和伪分布模式的异同点。8. Hadoop伪分布式运行启动后所具有的进程都有哪些? 第二篇 大数据存储与管理分布式文件系统HDFS1. 什么是分布式文件系统?2. 分布式文件系统结构有什么特点,且是如何实现高水平扩展的?3. HDFS如何保证节点可能出现故障的情况?4. 试述 HDFS 中的块和普通文件系统中的块的区别。5. 试述 HDFS 中的名称节点和数据节点的具体功能。6. 为什么HDFS不适合存储大量小文件?7. 在分布式文件系统中,中心节点的设计至关重要,请阐述HDFS是如何减轻中心节点的负担的?8. HDFS只设置唯一一个主节点,在简化系统设计的同时也带来了一些明显的局限性,请阐述局限性具体表现在哪些方面?9. 试述HDFS的冗余数据保存策略。10. 数据复制主要是在数据写入和数据恢复时发生,HDFS数据复制是采用流水线复制的策略,请阐述该策略的细节。11. HDFS是如何探测错误发生以及如何进行恢复的?12. 阐述HDFS在不发生故障的情况下读文件的过程。13. 阐述HDFS在不发生故障的情况下写文件的过程。 分布式数据库HBase1. 试述在 Hadoop 体系架构中 HBase 与其他组成部分的相互关系。2. 请阐述 HBase 和 BigTable 的底层技术的对应关系3. 请阐述 HBase 和传统关系数据库的区别4. 说明 HBase 数据模型。5. 分别解释 HBase 中行键、列键和时间戳的概念6. 阐述 HBase 的概念视图和物理视图的不同7. 试述 HBase 各功能组建及其作用8. 阐述 HBase 的数据分区机制。9. HBase 中的分区是如何定位的。10. 试述 HBase 的三层结构中各层次的名称和作用。11. 阐述 HBase 的三层结构下,客户端是如何访问到数据的。12. 试述 HBase 系统基本架构以及每个组成部分的作用。13. 请阐述 Region 服务器向 HDFS 文件系统中读写数据的基本原理14. 试述 HStore 的工作原理15. 试述 HLog 的工作原理16. 在 HBase 中,每个 Region 服务器维护一个 HLog,而不是为每个 Region 都单独维护一个 HLog。请说明这种做法的优缺点。17. 当一台 Region 服务器意外终止时,Master 如何发现这种意外终止情况?为了恢复这台发生意外的 Region 服务器上的 Region,Master 应该做出哪些处理 (包括如何使用 HLog 进行恢复)?18. 行式存储和列式存储的区别是什么?19. HBase是列式存储数据库吗? NoSQL数据库1. NoSQL 数据库的四大类型,并解释其含义。2. 试述 CAP 理论的具体含义。3. 试述数据库的 ACID 四性的含义4. 请解释软状态、无状态、硬状态的具体含义。5. 试述不一致性窗口的含义。 第三章 大数据处理与分析MapReduce1. MapReduce 模型采用 Master(JobTracker)-Slave(TaskTracker) 结构,试描述 JobTracker 和 TasKTracker 的功能。2. TaskTracker出现故障会有什么影响?该故障是如何处理的?3. MapReduce计算模型的核心是Map函数和Reduce函数,试述这两个函数各自的输入,输出以及处理过程。4. 试述 MapReduce 的工作流程 (需包括提交任务、Map、Shuffle、Reduce 的过程)。6. Shuffle过程是MapReduce工作流程的核心,试分析Shuffle过程的作用。7. 分别描述Map端和Reduce端的Shuffle过程(需包括spill、Sort、Merge、Fetch的过程)8. MapReduce 中有这样一个原则: 移动计算比移动数据更经济。试述什么是本地计算,并分析为何要采用本地计算。9. 试说明一个 MapReduce 程序在运行期间,所启动的 Map 任务数量和 Reduce 任务数量各是由什么因素决定的。10. 是否所有的 MapReduce 程序都需要经过 Map 和 Reduce 这两个过程? 如果不是,请举例说明。11. 分析为何采用 Combiner 可以减少数据传输量? 是否所有的 MapReduce 程序都可以采用 Combiner? 为什么?12. MapReduce 程序的输入文件、输出文件都存储在 HDFS 中,而在 Map 任务完成时的中间结果则存储在本地磁盘中。试分析中间结果存储在本地磁盘而不是 HDFS 上有何优缺点?13. 早期版本的HDFS,其默认块大小为64MB,而较新版本默认为128MB,采用较大的块具有什么影响和优缺点?14. 试着画出使用MapReduce来对英语句子“Whatever is worth doing is worth doing well”进行单词统计的过程。15. 在基于MapReduce的单词统计中,MapReduce是如何保证相同的单词数据会划分到同一个Reducer上进行处理以保证结果的正确性? Hadoop再探讨1. HDFS1.0 中只包含一个名称节点会带来哪些问题(单点故障问题)。2. 请描述 HDFS HA 架构组成组建及其具体功能。3. 请分析 HDFS HA 架构中数据节点如何和名称节点保持通信。4. 为什么需要HDFS联邦,它能解决什么问题?5. 描述HDFS 联邦中 “块池” 的概念,分析为什么 HDFS 联邦中的一个名称节点失效,也不会影响到与它相关的数据节点继续为其他名称节点提供服务。6. 请阐述 MapReduce1.0 体系结构中存在的问题。7. 请描述 YARN 架构中各组件的功能。8. YARN 框架中执行一个 MapReduce 程序时,从提交到完成需要经历的具体步骤。9. 请对 YARN 和 MapReduce1.0 框架进行优劣势对比分析。10. 请分别描述 Pig、Tez 和 Kafka 的功能。 Spark1. 阐述如下 Spark 的几个主要概念:RDD、DAG、阶段、分区、窄依赖、宽依赖。

第一篇 大数据基础 大数据处理架构Hadoop 1. 试述 hadoop 和谷歌的 mapreduce、gfs 等技术之间的关系

Hadoop 的核心是分布式文件系统 HDFS 和 MapReduce。HDFS 是谷歌文件系统 GFS 的开源实现,具有较高的读写速度、很好的容错性和可伸缩性,支持大规模数据的分布式存储。MapReduces 是针对谷歌 MapReduce 的开源实现,允许用户在不了解分布式系统底层细节的情况下开发并行应用程序,采用MapReduce来整合分布式文件系统上的数据,可保证分析和处理数据的高效性。

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

① 高可靠性(采用冗余数据存储方式,一个副本宕机时,其他副本也可以正常对外服务); ② 高效性 ③ 高可扩展性 ④ 高容错性 ⑤ 成本低

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

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

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

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

4. 试述 Hadoop 生态系统以及每个部分的具体功能

Hadoop生态系统包括:Ambari(安装、部署、配置和管理工具),zookeeper(分布式协作服务),HBase(分布式数据库),Hive(数据仓库),Pig(数据流处理),Mahout(数据挖掘库),MapReduce(分布式计算框架),YARN(资源调度和管理框架),HDFS(分布式文件系统),Flume(日志收集),Sqoop(数据库ETL)。 其中每个部分的具体功能如下:

HDFS 是 Hadoop 项目的两个核心之一,它是针对谷歌文件系统的开源实现。其放宽了一部分POSIX约束,从而实现以流的方式访问文件系统中的数据。

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

MapReduce是一种编程模型, 是针对谷歌 MapReduce 的开源实现,用于大规模数据集的并行运算。核心思想是分而治之,把输入的数据集切分为若干独立的数据块,分发给一个主节点管理下的各个分节点来共同并行完成,最后通过整合各个节点的中间结果得到最终结果。

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

Mahout的功能主要是提供一些可扩展的机器学习领域经典算法的实现,目的是帮助开发人员更加方便快捷的创建智能应用程序。

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

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

Flume的功能是在日志系统中定制各类数据的发送方用于收集数据,同时提供对数据进行简单处理并写到各种数据接收方的能力。

Sqoop用来在Hadoop和关系数据库之间交换数据,可以改进数据的互操作性。

Ambari支持Hadoop集群的安装,部署配置和管理。

5. 配置Hadoop时,Java的路径JAVA_HOME是在哪一个配置文件中进行设置的?

在安装Hadoop时,Hadoop文件夹中的"etc/hadoop"目录下的hadoop-env.sh文件,将JAVA_HOME环境变量指定到本机的JDK目录即可。

$export JAVA_HOME=/usr/lib/jvm/default-java 6. 所有节点的HDFS路径是通过fs.default.name来设置的,请问它是在哪个配置文件中设置的?

在conf/core-site.xml中设置,core-site是用来配置HDFS和MapReduce常用的I/O设置等。

7. 试着列举单机模式和伪分布模式的异同点。

相同点:伪分布式安装是指在一台机器上模拟一个小的集群,但是集群中只有一个节点。单机模式同样是在一台机器上完成部署,因此相同点是都在一台机器上。

不同点:单机hadoop无需进行配置,伪分布式需要通过配置文件来对各个组件的协同工作进行设置;单机模式是在本地的文件系统, 伪分布式需要将本地文件上传到HDFS的文件夹中(无需网络,因为都在同一台机器)。

8. Hadoop伪分布式运行启动后所具有的进程都有哪些?

6个进程:NodeManager,jps,NameNode,SecondaryNameNode,DataNode,ResourceManager。

第二篇 大数据存储与管理

本章主要介绍大数据存储与管理的相关技术,主要包括:HDFS,分布式数据库HBase,NoSQL数据库和云数据库。

HDFS提供了服务器集群中进行大规模分布式文件存储的能力,HBase是一个分布式数据库,主要用来存储非结构化和半结构化的松散数据,NoSQL支持超大规模的数据存储,云数据库是部署在云环境的数据库。

本章重点在于:分布式文件系统及分布式数据库的实现原理和应用方法,难点在HDFS存储原理及HBase实现原理。

分布式文件系统HDFS 1. 什么是分布式文件系统?

分布式文件系统是一种通过网络实现文件在多台主机上进行分布式存储的文件系统。其设计一般采用“客户机/服务器”模式,客户端以特定的通信协议通过网络与服务器建立连接,提出文件访问请求,客户端和服务器可以通过设置访问权来限制请求方对底层数据存储块的访问。

2. 分布式文件系统结构有什么特点,且是如何实现高水平扩展的?

① 普通文件系统的块是512个字节,每次读写的数据量必须是磁盘块的整数倍,分布式文件系统HDFS的一个块默认是64MB,如果一个文件小于一个数据块的大小,它并不占用整个数据块的存储空间; ② 分布式系统的物理结构上是由计算机集群的多个节点构成的,这些节点分别是主节点和从节点。 ③ 为了保证数据的完整性,分布式文件系统通常采用多副本存储。

3. HDFS如何保证节点可能出现故障的情况?

HDFS通常采用多副本存储,文件块会被复制为多个副本,存储在不同的节点上,且存储同一文件块的不同副本的各个节点会分布在不同的机架上,这样,在单个节点出现故障时,就可以快速调用副本重启单个节点上的计算过程,而无需重启整个计算过程,整个机架出现故障时也不会丢失所有文件块。

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

在传统的文件系统中,为了提高磁盘读写效率,一般以数据块为单位,而不是以字节为单位。 HDFS 中的块,默认一个块大小为 64MB,而 HDFS 中的文件会被拆分成多个块,每个块作为独立的单元进行存储。HDFS 在块的大小的设计上明显要大于普通文件系统。

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

主节点负责文件和目录的创建删除重命名,同时管理着从节点和文件块的映射关系,因此客户端只有访问名称节点才能找到请求的文件块所在的位置,进而到相应位置读取所需的文件块。

从节点负责数据的存储和读取,存储时由主节点分配存储位置,然后由客户端把数据直接写入到相应的从节点;在读取时客户端从主节点中获得从节点和文件块的映射关系,然后就可以到相应位置访问文件块。

6. 为什么HDFS不适合存储大量小文件?

① HDFS采用NameNode来管理文件系统的元数据,这些元数据被保存在内存中,从而使客户端可以快速的获取文件实际存储位置。但当小文件比较多时,名称节点要花大量的内存来保存这些元数据信息,这样会导致元数据的检索效率变低;

② MapReduce处理大量小文件时,会产生过多的map任务,线程管理开销会大大增加;

③ 访问大量小文件的速度要远低于访问几个大文件的速度,因为访问小文件要不断从一个数据节点跳到另一个数据节点,影响性能。

7. 在分布式文件系统中,中心节点的设计至关重要,请阐述HDFS是如何减轻中心节点的负担的?

我认为从两个方面考虑:一个是HDFS的主从架构,另一个是第二名称节点。

首先HDFS采用了主从架构模型,一个HDFS集群包括一个名称节点和若干个数据节点。名称节点作为中心服务器,负责管理文件系统的命名空间及客户端对文件的访问。数据节点一般是一个节点运行一个数据节点进程,负责处理文件系统客户端的读写请求,在名称节点的统一调度下进行数据库的创建、删除和复制等操作。

其实是第二名称节点,为了有效的解决EditLog逐渐变大带来的问题,HDFS设计时采用了第二名称节点,其可以完成EditLog和FsImage的合并操作,减小EditLog文件大小,缩短名称节点的重启时间。其次可以作为名称节点的检查点,来保存名称节点的元数据信息。

8. HDFS只设置唯一一个主节点,在简化系统设计的同时也带来了一些明显的局限性,请阐述局限性具体表现在哪些方面?

① 命名空间的限制。名称节点是保存在内存中的,因此名称节点能够容纳对象(文件、块)的个数会受到内存空间大小的限制; ② 性能的瓶颈,整个分布式文件系统的吞吐量受限于单个名称节点的吞吐量(单位时间内成功地传送数据的数量); ③ 隔离问题。只有一个命名空间无法对不同应用程序进行隔离;

9. 试述HDFS的冗余数据保存策略。

HDFS采用多副本的方法对数据进行冗余存储,通常一个数据块的多个副本会被分布到不同的数据节点上。

10. 数据复制主要是在数据写入和数据恢复时发生,HDFS数据复制是采用流水线复制的策略,请阐述该策略的细节。

HDFS的数据复制采用了流水线复制的策略,其显著的提高了数据复制过程的效率:

① 当客户端往HDFS中写入一个文件时,这个文件会首先被写入本地,并被切分成若干个块,每个块的大小是由HDFS的设定值决定的;

② 每个块向HDFS集群中的名称节点发起写请求,名称节点会根据系统中各个数据节点的使用情况,选择一个数据节点列表返回给客户端;

③ 客户端会把数据首先写入列表中的第一个数据节点,同时把列表传给第一个数据节点;

④ 当第一个数据节点接收到4KB数据时,写入本地,且向列表中的第二个数据节点发起连接请求,把自己已经接收到的4KB数据和列表传给第二个数据节点,当第二个数据节点接收到4KB数据时,写入本地,且向列表中第三个数据节点发送请求,一次类推,由列表中的多个数据节点形成一条数据复制的流水线,最后当文件写完时,数据复制完成。

11. HDFS是如何探测错误发生以及如何进行恢复的?

HDFS的错误可以分为3种情况:名称节点出错,数据节点出错以及数据出错。

① 名称节点出错:名称节点发生宕机(或者是FsImage和EditLog发生损坏)。首先到远程挂载的网络文件系统种获取备份的元数据信息,放到第二名称节点上进行恢复,并把第二名称节点作为名称节点来使用。

② 数据节点出错:数据节点发生故障或者断网,从而导致数据节点无法定期向名称节点发送心跳。名称节点会定期检查心跳,通过数据冗余复制来生产新的副本。

③ 数据出错:如何探测–文件被创建时,客户端会对每一个文件块进行信息摘录,并把这些信息写入同一个路径的隐藏文件里。当客户端读取文件时,会先读取该信息文件,然后利用该信息文件对每个读取的数据块进行校验。如何恢复-- 当校验出错时,客户端会请求到另外一个数据节点读取该文件块,并向名称节点报告这个文件块有误。

12. 阐述HDFS在不发生故障的情况下读文件的过程。

① 打开文件:客户端通过FileSystem.open()打开文件,调用open方法后,DistributedFileSystem会创建输入流;

② 获取数据块信息:输入流哦通过getBlockLocations方法获得文件开始部分数据块的保存位置。对于该数据块,名称节点返回保存该数据库的所有数据节点的地址,同时根据距离客户端的远近对数据节点进行排序,同时返回给客户端数据块的数据节点地址;

③ 读取请求:客户端调用read()函数开始读取数据,输入流根据前面的排序结果,选择距离客户端最近的数据节点建立连接并读取数据;

④ 读取数据:数据从该数据节点读到客户端;

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

⑥ 读取数据:找到该数据块的最佳数据节点(距离客户端最近),读取数据;

⑦ 关闭文件:当客户端读取完毕数据时,通过close函数关闭输入流。

13. 阐述HDFS在不发生故障的情况下写文件的过程。

① 创建文件请求:客户端通过create方法创建文件输出流;

② 创建文件元数据:输出流通过RPC远程调用名称节点,在文件系统的命名空间中创建一个新的文件,名称节点会执行一些检查,通过后,会返回给客户端使用这个输出流来写入数据;

③ 写入数据:客户端用输出流的write方法向HDFS中对应的文件写入数据;

④ 写入数据包:客户端由输出流写入的数据会首先被分为一个个的分包,这些分包被放入DFSOutputStream对象的内部队列,输出流FSDataOutputStream会向名称节点申请保存文件和副本数据块的若干个数据节点,这些数据节点形成一个数据流管道。按照流水线复制的方法,将数据包留经管道上的各个数据节点。

⑤ 接受确认包:接受到数据的数据节点需要向发送者发送确认包,确认包从管道一次经故各个数据节点最终发往客户端,当客户端收到应答时,将对应的分包从内部队列中清除,直到数据全部写完;

⑥ 关闭文件:通知名称节点关闭文件,完成一次正常的写文件过程。

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

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

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

① 文件存储系统:BigTable基于GFS,HBase基于HDFS; ② 海量数据处理:BigTable基于MapReduce,HBase基于Hadoop MapReduce; ③ 协同服务管理:BigTable基于Chubby,HBase基于Zookeeper;

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

①数据类型:关系数据库采用关系模型,HBase采用数据模型。数据模型就是把数据存储为未经解释的字符串,用户可以将不同格式的结构化数据和非结构化数据都序列化成字符串保存在HBase中,然后通过自己的程序把字符串解析成不同的数据类型; ② 数据操作:关系数据库中会涉及复杂的多表连接,HBase中通常只采用单表的主键查询; ③ 存储模式:关系数据库基于行存储,HBase基于列存储。

4. 说明 HBase 数据模型。

关系数据库通过行和列来确定表中一个具体的值,HBase中通过行键,列族,列限定符和时间戳来确定一个单元格。

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

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

② 列族需要在创建表的时候就定义好,数量也不宜过多。列族名必须由可打印字符组成,创建表的时候不需要定义好列。 ③ 时间戳,默认由系统指定,用户也可以显示设置。使用不同的时间戳来区分不同的版本。

6. 阐述 HBase 的概念视图和物理视图的不同

(没总结好)

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

(1)库函数:

版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请发送邮件至 举报,一经查实,本站将立刻删除。