赞
踩
第一章
1大数据决策与传统的基于数据仓库的决策有什么区别?
正确答案:
数据仓库具备批量和周期性的数据加载以及数据变化的实时探测、传播和加载能力,能结合历史数据和实时数据实现查询分析和自动规则触发,从而提供对战略决策和战术决策。大数据决策可以面向类型繁多的、非结构化的海量数据进行决策分析。
2试述大数据对思维方式的重要影响。
正确答案:
大数据时代对思维方式的重要影响是三种思维的转变:全样而非抽样,效率而非精确,相关而非因果。
3****详细阐述大数据、云计算和物联网三者之间的区别与联系。
正确答案:
(1)大数据、云计算和物联网的区别。大数据侧重于对海量数据的存储、处理与分析,从海量数据中发现价值,服务于生产和生活;云计算旨在整合和优化各种IT资源,并通过网络以服务的方式廉价地提供给用户;物联网的发展目标是实现“物物相连”,应用创新是物联网发展的核心。
(2)大数据、云计算和物联网的联系。从整体上看,大数据、云计算和物联网这三者是相辅相成的。大数据根植于云计算,大数据分析的很多技术都来自云计算,云计算的分布式数据存储和管理系统提供了海量数据的存储和管理能力,分布式并行处理框架MapReduce提供了海量数据分析能力。没有这些云计算技术作为支撑,大数据分析就无从谈起。反之,大数据为云计算提供了“用武之地”,没有大数据这个“练兵场”,云计算技术再先进,也不能发挥它的应用价值。物联网的传感器源源不断产生的大量数据,构成了大数据的重要数据来源,没有物联网的飞速发展,就不会带来数据产生方式的变革,即由人工产生阶段转向自动产生阶段,大数据时代也不会这么快就到来。同时,物联网需要借助云计算和大数据技术,实现物联网大数据的存储、分析和处理。
第二章
三.简答题(共5题,50.0分)
1试述Hadoop和谷歌的MapReduce、GFS等技术之间的关系。
正确答案:
Hadoop的核心是分布式文件系统HDFS和MapReduce,HDFS是谷歌文件系统GFS的开源实现,MapReduces是针对谷歌MapReduce的开源实现。
2试述Hadoop在各个领域的应用情况。
正确答案:
Hadoop已经在各个领域得到了广泛的应用,互联网领域是其应用的主阵地,具体如下:
1、雅虎公司于2007年在Sunnyvale总部建立了M45(一个包含了4000个处理器和1.5PB容量的Hadooop集群系统);
2、Facebook主要将Hadoop平台用于日志处理,推荐系统和数据仓库等方面;
3、国内Hadoop的公司主要有:百度、淘宝、网易、华为、中国移动等。淘宝主要用于数据魔方、量子统计、推荐系统、排行榜等;百度主要使用Hadoop用于日志的存储和统计、网页数据的分析和挖掘、商业分析、在线数据反馈、网页聚类等;华为是Hadoop的使用者,也是Hadoop技术的重要推动者。
3试述Hadoop具有哪些特性。
正确答案:
1、高可靠性:采用冗余数据存储方式,即使一个副本发生故障,其他副本也可以保证正常对外提供服务;
2、高效性:是一个并行分布式计算平台,能够高效处理PB级数据;
3、高可扩展性:Hadoop的设计目标是可以高效稳定地运行在廉价的计算机集群上,可以扩展到数以千计的计算机节点上;;
4、高容错性:采用冗余数据存储方式,自动保存数据的多个副本,并且能够自动将失败的任务进行重新分配;
5、成本低:Hadoop采用廉价计算机集群,成本较低,普通用户也很容易用自己的PC机搭建Hadoop运行环境;
6、运行在Linux操作系统上:是基于Java开发的,可以较好地运行在Linux操作系统上;
7、支持多种编程语言:支持Java、C++、Python等编程语言。
4试列举单机模式和伪分布式模式的异同点。
正确答案:
一、相同点:都只在一台单机上运行。
二、不同点:
1、运行模式不同:单机模式是Hadoop的默认模式。这种模式在一台单机上运行,没有分布式文件系统,而是直接读写本地操作系统的文件系统。伪分布模式这种模式也是在一台单机上运行,但用不同的Java进程模仿分布式运行中的各类结点。
2、配置不同:单机模式首次解压Hadoop的源码包时,Hadoop无法了解硬件安装环境,便保守地选择了最小配置。在这种默认模式下所有3个XML文件均为空。当配置文件为空时,Hadoop会完全运行在本地。伪分布模式在“单节点集群”上运行Hadoop,其中所有的守护进程都运行在同一台机器上。
3、节点交互不同:单机模式因为不需要与其他节点交互,单机模式就不使用HDFS,也不加载任何Hadoop的守护进程。该模式主要用于开发调试MapReduce程序的应用逻辑。伪分布模式在单机模式之上增加了代码调试功能,允许你检查内存使用情况,HDFS输入输出,以及其他的守护进程交互。
5试述Hadoop生态系统以及每个部分的具体功能。
正确答案:
1、HDFS:是Hadoop项目的两个核心之一,它是针对谷歌文件系统的开源实现。HDFS具有处理超大数据、流式处理、可以运行在廉价商用服务器上等优点。
2、HBase:是一个提高可靠性、高性能、可伸缩、实时读写、分布式的列式数据库,一般采用HDFS作为其底层数据存储系统。
3、MapReduce:是Hadoop项目的两个核心之一,是针对谷歌MapReduce的开源实现,是一种编程模型,用于大规模数据集的并行运算,它将复杂的、运行于大规模集群上的并行计算过程高度抽象为两个函数,即Map和Reduce,并允许用户在不了解分布式系统底层细节的情况下开发并行应用程序,且将其运行于廉价的计算机集群上,完成海量数据的处理。
4、Zoookepper:是针对谷歌Chubby的一个开源实现,是高效和可靠的协同工作系统,提供分布式锁之类的基本服务,用于构建分布式应用,减轻分布式应用程序所承担的协调任务。
5、Hive:是一个基于Hadoop的数据仓库工具,可以用于对Hadoop文件中的数据集进行数据整理、特殊查询和分布存储。
6、Pig:是一种数据流语言和运行环境,适合于使用Hadoop和MapReducce平台上查询大型半结构化数据集。
7、Mahout:是Apache软件基金会旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。
8、Flume:是一个高可用的、高可靠的、分布式的海量日志采集、聚合和传输的系统。
9、Sqoop:是SQL-to-Hadoop的缩写,主要用于在Hadoop和关系数据库之间交换数据,可以改进数据的互操作性。
10、Ambari:是一种基于web的工具,支持Apache Hadoop集群的安装、部署、配置和管理。
第三章
四.简答题(共8题,40.0分)
1试述HDFS中的名称节点和数据节点的具体功能。
正确答案:
(1)在HDFS中,名称节点负责管理分布式文件系统的命名空间,保存了两个核心的数据结构FsImage和EditLog。FsImage用于维护文件系统树以及文件树中的所有文件和文件夹的元数据,EditLog中记录所有针对文件的操作。名称节点记录每个文件中各个块所在的数据节点的位置信息,但并不持久化地存储这些信息,而是在系统每次启动时扫描所有数据节点并重构,得到这些信息。
(2)数据节点是分布式文件系统HDFS的工作节点,负责数据的存储和读取,会根据客户端或者是名称节点的调度进行数据的存储和检索,并向名称节点定期发送自己所存储的块的列表信息。每个数据节点中的数据保存在各自节点的本地Linux文件系统中。
2在分布式文件系统中,中心节点的设计至关重要,请阐述HDFS是如何减轻中心节点的负担的。
正确答案:
HDFS的中心节点就是名称节点(NameNode),HDFS采用以下设计减轻名称节点的负担:
(1)HDFS的文件块为大小为64MB,比普通文件系统中512B大小的数据块大得多,该设计使得名称节点的元数据较少,减少了元数据占用NameNode的内存容量;
(2)HDFS集群只有一个名称节点,该节点负责所有元数据的管理,这种设计大大简化了分布式文件系统的结构,从而保证数据不会脱离名称节点的控制;
(3)HDFS的数据块数据不会经过名称节点,大大减轻名称节点的负担,也方便了数据管理。
3 HDFS只设置一个名称节点,在简化系统设计的同时也带来了一些明显的局限性,请阐述局限性具体表现在哪些方面。
正确答案:
HDFS仅设置一个名称节点,其局限性具体表现在以下几个方面:
(1)命名空间的限制。名称节点是保存在内存中的,因此名称节点能够容纳对象(文件、块)的个数受到内存空间大小的限制。
(2)性能的瓶颈。整个分布式文件系统的吞吐量受限于单个名称节点的吞吐量。
(3)隔离问题。由于集群只有一个名称节点,只有一个命名空间,困此无法对不同应用程序进行隔离。
(4)集群的可用性。一旦此唯一的名称节点发生故障,会导致整个集群变得不可用。
4数据复制主要是在数据写入和恢复的时候发生,HDFS数据复制是使用流水线复制的策略,请阐述该策略的细节。
正确答案:
HDFS数据复制使用流水线复制策略,大大提高了数据复制过程的效率。具体策略如下:
(1)当客户端要往HDFS中写入一个文件时,此文件首先被写入本地,并被切分为若干个块,每个块的大小由HDFS的设定值来决定。
(2)每个块都向HDFS集群中的名称节点发起写请求,名称节点会根据系统中各个数据节点的使用情况,选择一个数据节点列表返回给客户端,然后客户端就将数据首先写入列表中的第一数据节点,同时将列表传给第一个数据节点,当第一个数据节点接收到4KB数据时,写入本地,并且向列表中的第二个数据节点发起连接请求,将自己已经接收到的4KB数据和列表传给第二个数据节点,当第二个数据节点接收到4KB数据时,写入本地,并且向列表中的第三个数据节点发起连接请求,依次类推。列表中的多个数据节点形成一条数据复制贩流水线。
(3)当文件写完时,数据复制也同时完成。
5试述HDFS是如何探测错误发生以及如何进行恢复的。
正确答案:
HDFS检错和恢复主要包括如下3种情形:
(1)名称节点出错。Hadoop提供两种机制确保名称节点的安全:一是将名称节点上的元数据信息同步存储到其他文件系统(如远程挂载的网络文件系统NFS)中,二是运行一个第二名称节点,当名称节点宕机后,可将第二名称节点作为一种弥补措施,利用第二名称节点中的元数据信息进行系统恢复。一般会将上述两种方式结合使用,当名称节点发生宕机时,首先到远程挂载的远程网络文件系统中获取备份的元数据信息,放到第二名称节点上进行恢复,并将第二名称节点作为名称节点来使用。
(2)数据节点出错。每个数据节点会定期向名称节点发送“心跳”信息,向名称节点报告自己的状态。当数据节点发生故障,或者网络发生断网时,名称节点就无法收到来自一些数据节点的“心跳”信息,这时这些数据节点会被标记为“宕机”,节点上面的所有数据都会被标记为为“不可读”,名称节点不会给再它们发送任何I/O请求。此时,有可能出现一种情形,即一些数据块的副本数量小于冗余因子。名称节点定期检查这种情况,一旦发现某个数据块的副本数量小于冗余因子,就启动数据冗余复制,为其生成新的副本。
(3)数据出错。客户端读到数据后采用MD5和SHA-1进行数据校验,以确定读取到正确的数据。在文件创建时,客户端会对每一个文件块进行信息摘要,并将此摘要写入同一路径的隐藏文件里面。当客户端对数据校验时发现数据错误,就会请求到另外一个数据节点读取该文件,并向名称节点报告这个文件块有错误,名称节点会定期检查并重新复制该文件块。
6
请阐述HDFS在不发生故障的情况下读文件的过程。
正确答案:
(1)客户端通过FileSystem.open()打开文件,相应地,在HDFS文件系统中DistributedFileSystem具体实了FileSystem。调用open()方法后,DistributedFileSystem会创建FSDataInputStream,对于HDFS而言,具体的输入流就是DSFInputStream。
(2)在DSFInputStream的构造函数中,输入流通过ClientProtocol.getBlockLocations()远程调用名称节点,获得文件开始部分数据块的保存位置。对于该数据块,名称节点返回保存该数据的所有节点地址,同时根据距离客户远近对数据节点进行排序;然后,DistributedFileSystem利用DSFInputStream实例化FSDataInputStream,返回给客户端,同时返回数据块的数据节点地址。
(3)获得输入流FSDataInputStream后,客户端调用read()函数开始读取数据。输入流根据前面排序结果,选择距离客户最近的数据节点建立连接并读取数据。
(4)数据从该数据节点读书 到客户端。当该数据块读取完毕时,FSDataInputStream关闭和数据节点的连接。
(5)输入流通过getBlockLocations()方法查找下一个数据块(如果客户端缓存中已经包含了该数据块的位置信息,就不用调用该方法)。
(6)找到该数据块的最佳数据节点,读取数据。
(7)当客户端读取完毕数据时,调用FSDataInputStream的close()函数关闭输入流。
7请阐述HDFS在不发生故障的情况下写文件的过程。
正确答案:
(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()方法通知名称节点关闭文件,完成一次正常的写入文件过程。
8试述HDFS的冗余数据保存策略。
正确答案:
HDFS采用多副本方式对数据进行冗余存储。通常一个数据块的多个副本会被分配到不同的数据节点上,从而带来加快数据传输速度、易检查数据错误和保证数据的可靠性3个方面的优点。具体来说:
1、第一个副本放置在上传文件的数据节点,如果是集群外提交,则随机挑 选一台磁盘不太满、CPU不太忙的节点。
2、第二个副本放置在与第一个副本不同的机架的节点上。
3、第三个副本与第一个副本相同机架的其他节点上 。
4、更多副本的放置节点随机选取。
第四章
三.简答题(共10题,62.0分)
1试述在Hadoop体系架构中HBase与其他组成部分的相互关系。
正确答案:
3请举个实例来阐述HBase的概念视图和物理视图的不同。
4HBase中的分区是如何定位的?
正确答案:
通过构建的映射表的每个条目包含两项内容,一个是Regionde 标识符,另一个是Region服务器标识,这个条目就标识Region和Region服务器之间的对应关系,从而就可以知道某个Region被保存在哪个Region服务器中。
5请阐述HBase的三层结构下,客户端是如何访问到数据的。
正确答案:
首先访问Zookeeper,获取-ROOT-表的位置信息,然后访问-Root-表,获得.META.表的信息,接着访问.META.表,找到所需的Region具体位于哪个Region服务器,最后才会到该Region服务器中读取数据。
6请阐述Region服务器向HDFS文件系统中读写数据的基本原理。
正确答案:
Region服务器内部管理一系列Region对象和一个HLog文件,其中,HLog是磁盘上面的记录文件,它记录着所有的更新操作。每个Region对象又是由多个Store组成的,每个Store对应了表中的一个列族的存储。每个Store又包含了MemStore和若干个StoreFile,其中,MemStore是在内存中的缓存,保存最近更新的数据。StoreFile是磁盘中的文件,均为B树结构,方便快速读取,其底层实现方式是HDFS文件系统的HFile,HFile的数据块通常采用压缩存储。
(1)用户读写数据的过程:
当用户写入数据时,会被分配到相应的Region服务器去执行操作。用户数据首先写入到MemStore和HLog中,当操作写入HLog后,commit()调用将其返回给客户端。
当用户读取数据时,Region服务器首先访问MemStore缓存,如果数据不在缓存中,才会到磁盘StoreFile中寻找。
(2)缓存的刷新:
系统周期性地调用Region.flushcache()将MEMStore的内容写入到磁盘文件StoreFile文件中,清空缓存,并且在HLog文件中写入一个标记,表示缓存中的内容已经被写入StoreFile文件中。每次缓存刷新操作都会在磁盘上生成一个新的StoreFile文件,所以每个Store包含多个StoreFile文件。
(3)StoreFile合并:
系统一般调用Store.compact()将多个StoreFile文件合并为一个大文件。由于合并操作耗费资源,通常只会在StoreFile文件的数量达到一个阈值时才触发合并操作。
7当一台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文件中,完成数据恢复。
8试述HLog的工作原理。
正确答案:
HBase系统为每个Region服务器配置了一个HLog文件,它是一种预写式日志(Write Ahead Log),用户更新数据必须首先写入日志后,才能写入MemStore缓存,并且,直到MemStore缓存内容对应的日志已经写入磁盘,该缓存内容才能被刷写到磁盘。
9试述HStore的工作原理。
正确答案:
每个Store对应了表中的一个列族的存储。每个Store包括一个MenStore缓存和若干个StoreFile文件。MenStore是排序的内存缓冲区,当用户写入数据时,系统首先把数据放入MenStore缓存,当MemStore缓存满时,就会刷新到磁盘中的一个StoreFile文件中。随着StoreFile文件数量的不断增加,当达到事先设定的阈值是触发文件合并操作,当单个StoreFile文件大小超过一定阈值时,就会触发文件分裂操作。
10在HBase中,每个Region服务器维护一个HLog,而不是为每个Region都单独维护一个HLog。请说明这种做法的优缺点。
正确答案:
优点: 多个Region对象的更新操作所发生的日志修改,只需要不断把日志记录追加到单个日志文件中,不需要同时打开、写入到多个日志文件中,可以减少磁盘寻址次数,提高对表的写操作性能。
缺点:如果一个Region服务器发生故障,为了恢复其上的Region对象,需要将Region服务器上的HLog按照其所属的Region对象进行拆分,然后分发到其他Region服务器上执行恢复操作。
第七章
二.简答题(共5题,82.0分)
1 MapReduce 是处理大数据的有力工具,但不是每个任务都可以使用MapReduce 来进行处理。试述适合用MapReduce来处理的任务或者数据集需满足怎样的要求。
[正确答案:](javascript:void(0)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。