数据采集与预处理技术考点复习——第七章
第七章:大数据分析实例
1. Hadoop具有那些特征
(1)高可靠性:采用冗余数据存储方式,即使一个副本发生故障,其他副本也可以保证正常的高效性
(2)高效性:作为并行分布式计算平台,Hadoop采用分布式存储和分布式处理两大核心技术,能够高效的处理PB级数据
(3)高可扩展性:Hadoop的设计目标是可以高效、稳定的运行在廉价的计算机集群上,可以扩展到数以千计的计算机节点上
(4)高容错性:采用冗余数据存储方式,自动保存数据的多个副本,并且能够自动将失败的任务进行重新分配
(5)成本低:Hadoop采用廉价的计算机集群,成本低
(6)运行在Linux平台上:Hadoop基于java语言开发的,可以较好的运行在Linux平台
(7)支持多种编程语言。
2. HDFS的块与普通文件系统中的块有何区别
- HDFS采用块的概念可以将大规模文件分拆成若干个文件块,适宜大规模文件的存储;
- 不同文件块可以被分发到不同的节点上,文件的大小就不会受到单个节点存储容量的限制;
- 使存储管理更为方便,简化了系统设计;
- 适合数据备份,将文件块冗余的存储到多个节点上,提高了系统的容错率和可用性
3. 简述HDFS中名称节点和数据节点的功能
- 名称节点:负责管理分布式文件系统的命名空间,记录了每个文件中各个块所在的数据节点的位置信息,但不是持久存储这些信息,而是在系统每次启动时扫描所有数据节点重构得到这些信息
- 数据节点:分布式文件系统HDFS的工作节点,负责数据的存储和读取
4. 简述MapReduce与Hadoop的关系
- Mapreduce是一种模式。
- Hadoop是一种框架。
- Hadoop是一个实现了mapreduce模式的开源的分布式并行编程框架。
5. MapReduce的主从结构中,JobTracker和TaskTracker的作用是什么
- JobTracker:负责控制以及调度MapReduce的Job
- TaskTracker:负责运行MapReduce的Job
6. 简述MapReduce工作流程
- MapReduce将输入数据拆分成多个split(分片)。
- 由多个Map任务在多台机器上执行这些分片,每个Map任务通常运行在数据存储的节点上,计算和数据放在一起运行,不需要额外的数据传输开销。
- 当Map任务结束后,会生成以<key,value>键值对形式的许多中间结果,MapReduce将这些中间结果分发到多个MapReduce。
- 与Map任务相似,Reduce也是在多台机器上并行执行,并将具有相同key值的<key,value>的键值对发送到同一个Reduce任务,Reduce任务对中间结果进行汇总计算得到最后结果。
- 最后输出到分布式文件系统中
7. 分析MapReduce中Shuffle过程的作用
使Reduce可以并行处理Map端的结果,需要对Map的输出进行一定的分区、排序、合并、归并等处理,从而得到<key,(list of value)>形式的中间结果,然后再交给对应的Reduce进行处理
8. 简述HBase与传统数据库的区别
-
数据类型:
关系数据库:采用关系模型,数据类型和存储方式丰富
HBase:数据模型更加简单,将数据存储为未经解释的字符串,因此结构化、非结构化数据都可转化为字符串保存在HBase中
-
数据操作:
关系数据库:包含了丰富的操作,其中涉及复杂的多表连接
HBase:不涉及复杂的表与表的关系,只有简单的插入、查询、删除、清空等,使得数据操作更为简单直观
-
数据存储模式:
关系数据库:基于行模式存储
HBase:基于列模式的存储,每个列族都由几个文件保存,不同列族的文件是分离的
-
数据索引:
关系数据库:针对不同列构建复杂的多个索引,以提高数据访问性能
HBase:只有一个索引——行键,其所有访问方法,通过行键访问或者通过行键扫描
-
数据维护:
关系数据库:更新操作会用最新的当前值去替换记录中的旧值,旧值被覆盖后就不会存在
HBase:执行更新操作时,不会删除数据旧的版本,而是生成一个新的版本,有的旧版本仍然保留
-
其他:
关系数据库:很难实现横向扩展
HBase:能够轻易通过集群中增加或者减少硬件数量来实现性能的伸缩
9. 解释HBase中行键/列键和时间戳的概念
- 行键:HBase表由若干行组成,每个行由行键标识
- 列键:HBase表由若干列组成,每个列由列键标识
- 时间戳:HBase中通过行、列族和列限定符确定一个单元格cell。每个cell都保存着同一份数据的多个版本。版本通过时间戳来索引。如果应用程序要避免数据版本冲突,就必须自己生成具有唯一性的时间戳
10.简述Yarn组件在Hadoop中的作用
将JobTracke的三大功能(资源管理、任务调度、任务监控)进行拆分,分别交给不同的新组件去处理,重新设计后产生的Yarn:
- ResourseManage:资源管理
- ApplicationMaster:调度和监控
- NodeManager:执行原TaskTracker的任务
这种设计实际为“放权”,大大降低了JobTracke的负担,提升了运行的效率和稳定性