一、选择题部分:
1、Hadoop的起源:
Hadoop最初由Doug Cutting和Mike Cafarella开发,受Google GFS和MapReduce论文的启发。源自Apache Lucene项目——一个开源的网络搜索引擎,它旨在提供一个可靠、可扩展的分布式计算平台。(是Apache软件基金会旗下的一个开源分布式计算平台,)
2、hadoop家族常见组件hdfs、mapreduce、yarn、hbase、zookeeper等的来源和特性:
HDFS(Hadoop Distributed File System):分布式文件系统,提供高容错和高吞吐量的数据访问。(处理超大数据、流式处理、可以运行在廉价商用服务器)
HBase:构建在HDFS之上的分布式、可扩展的大数据存储系统。(具有强大的非结构化数据存储能力,基于列的存储,具有良好的横向扩展能力,而传统关系型数据库是基于行的存储,)针对谷歌bigtable的开源实现。列式数据库适合批量数据处理和即席查询。它的优点是可以降低I/O开销,支持大量并发用户查询、数据处理速度比传统方法快一百倍,因为只用处理可以回答这些查询的列;具有较高的数据压缩比
MapReduce:用于数据处理的编程模型和软件框架。(它将复杂的运行于大规模集群上的并行计算过程高度的抽象为两个函数,Map和Reduce,把输入的数据集切分为若干独立的数据,会分发给一个主节点管理下的各个分节点来共同并行完成。最后通过整合各个节点的中间结果,得到最终结果)针对谷歌mapreduce的开源实现
ZooKeeper: ZooKeeper 是一种分布式的、开源的协调服务,用于管理和协调 Hadoop 集群中的服务。针对谷歌chubby的开源实现
YARN(Yet Another Resource Negotiator):资源调度管理框架。(YARN 的出现是为了解决 Hadoop 1.0 中 JobTracker 的局限性,JobTracker 既负责资源管理又负责任务调度,这带来了性能瓶颈和单点故障的问题。YARN 将资源管理和作业调度的功能分离,引入了ResourceManager 和 ApplicationMaster 两个新的组件:1、ResourceManager 负责整个集群的资源管理和分配。2、ApplicationMaster 负责单个应用程序的资源negotiation和任务调度。
Hive: Hive 是一个数据仓库工具,它提供了一种类似 SQL 的查询语言 (HiveQL)对hadoop,使得能够轻松地进行数据汇总、查询和分析。
Pig: Pig 是一种高级数据流语言和执行框架,用于并行计算。它提供了一种类似于 SQL 的语言 (Pig Latin),用于表达复杂的数据转换。
Mahout: Mahout 是一个可扩展的机器学习和数据挖掘库,提供了各种算法,如聚类、分类和推荐系统。
Flume: Flume 是一个分布式的、高可靠的、高可用的服务,用于有效地采集、聚合和传输大量日志数据。(可以对数据进行简单处理并写到各种数据接收方)
Sqoop: Sqoop 是一个工具,用于在 Hadoop 和结构化(关系型)数据存储系统之间高效地传输批量数据。(主要通过Java数据库连接和关系数据库进行交互)
Ambari: Ambari 是一个 Web 界面,用于配置、管理和监控 Hadoop 集群。它简化了 Hadoop 的部署和操作。
3、HDFS的读写任务:
4、HBase的消息通信机制:
-
客户端与HBase的通信:
- 客户端通过HBase客户端API与HBase集群进行通信。
- 客户端首先通过Zookeeper获取HMaster和RegionServer的位置信息。
- 客户端直接与RegionServer通信,进行数据读写操作。
-
HMaster与RegionServer的通信:
- HMaster通过Zookeeper监控RegionServer的状态。
- HMaster向RegionServer发送管理命令,如分配Region、迁移Region等。
- RegionServer定期向HMaster汇报其状态和负载信息。
-
RegionServer之间的通信:
- RegionServer之间通常不直接通信,但在某些情况下(如Region迁移)需要通过HMaster进行协调。
- RegionServer通过HDFS进行数据存储和读取,HDFS的DataNode之间会进行数据块的复制和同步。
-
Zookeeper的角色:
- Zookeeper在HBase集群中扮演协调者的角色,确保HMaster和RegionServer的高可用性。
- Zookeeper存储HBase集群的元数据,如HMaster的位置信息、RegionServer的状态等。
- Zookeeper通过心跳机制监控HMaster和RegionServer的健康状态。
5、SecondaryNameNode的运行机制:
SecondaryNameNode定期合并NameNode的编辑日志和检查点,生成新的检查点。当NameNode宕机时,可以使用SecondaryNameNode的检查点快速恢复NameNode的元数据。
6、Hadoop单机模式和伪分布式模式:
-
单机模式:Hadoop在单台机器上运行,仅用于学习和开发。
-
伪分布式模式:Hadoop在单台机器上模拟分布式环境,用于开发和测试。
-
在 Hadoop 的单机模式中,所有的守护进程(如 NameNode、DataNode、JobTracker、TaskTracker 等)都在同一个机器上运行,这是正确的。
但是,在伪分布模式中,Hadoop 会模拟一个分布式环境,启动多个守护进程,每个守护进程都在不同的端口上运行。这些守护进程可以在同一台机器上运行,也可以在不同的机器上运行。
因此,说 Hadoop 单机模式和伪分布模式的守护进程都运行在同一台机器上是不准确的。在伪分布模式中,可以根据需要将守护进程分布到不同的机器上,以提高性能和可扩展性。
7、HDFS无法高效存储大量小文件:
8、HDFS的文件写入:
9、HDFS为存储MapReduce并行切分和处理数据:
HDFS的数据块大小(默认64MB)与MapReduce任务的输入数据大小相匹配,便于MapReduce并行处理。每个分片不能太小,否则启动与停止各个分片处理所需的开销将占很大一部分执行时间
10、HDFS的块大小:
默认块大小为64MB,可根据具体应用场景进行调整。较大的块大小可减少寻址开销,但会降低容错性。
11、MapReduce的来源:
MapReduce是受Google MapReduce论文启发而开发的并行计算框架。
12、Hadoop API的运行机制:
Hadoop API提供了抽象的编程模型,隐藏了底层分布式系统的复杂性。用户只需编写Map和Reduce函数,Hadoop负责任务调度、容错等。
13、YARN的调度:
YARN提供资源管理和作业调度功能,支持多种调度策略,如FIFO、容量调度和公平调度。
二、名词解释:
1、Hadoop:
一个开源的分布式计算框架,提供可靠、可扩展的大数据处理能力。为用户提供底层细节透明的分布式基础架构
2、NameNode:
HDFS的主节点,负责文件系统元数据的管理和存储。
3、DataNode:
HDFS的从节点,负责存储和处理数据块。
4、SecondaryNameNode:
协助NameNode管理HDFS元数据,提供快速故障恢复。
5、JobTracker:
MapReduce 1.0中负责任务调度和监控的主节点。在Hadoop 1.x版本中,确实只有一个主节点(Master Node),即JobTracker。这个单一的JobTracker负责整个集群的作业管理和任务调度。然而,这种架构存在单点故障(SPOF)的问题,如果JobTracker失败,整个集群的作业管理和调度将中断。
6、TaskTracker:
MapReduce 1.0中负责在slave节点上执行任务的从节点。TaskTracker运行在每个工作节点上,负责执行由 JobTracker 分配的任务。
定期向 JobTracker 汇报任务的执行状态和节点的资源使用情况
7、HBase:
构建在HDFS之上的分布式、可扩展的NoSQL数据库。
8、云数据库:
运行在云平台上的数据库服务,具有弹性扩展、高可用等特点。
9、Spark:
一种快速、通用、可扩展的大数据处理引擎。
10、流计算:
针对实时或近实时数据流进行的数据处理和分析。
11、Pregel:
一种基于图的并行计算框架,用于处理大规模图数据。
12、Hive:
构建在Hadoop之上的数据仓库工具,提供SQL查询功能。
三、简答题:
1、大数据的四个特点:
1、数据量大(Volume):
2、处理速度快(Velocity) :通常要达到秒极响应,和数据挖掘不同有实时分析结果
3、数据类型繁多(Variety):结构化数据(指存储在关系数据库中的数据)和非结构化数据1:9的比例最好是非结构,现在更多存储在nosql中
4、价值密度低(Value)
2、大数据的计算模式:
3、Hadoop特性:
4、Hadoop集群包含以下节点:
5、NameNode的数据结构:
6、HDFS体系结构:
7、HDFS体系结构的局限性:
8、NoSQL数据库特点:
9、关系数据库与 NoSQL 数据库的优劣势比较:
-
关系数据库优势:数据结构规范,遵循特定范式,便于理解和维护;支持复杂的关联查询和事务操作,保证数据的完整性和一致性;技术成熟,有广泛的工具和技术支持。劣势:扩展性相对较差,面对大规模数据和高并发场景时性能可能受限;模式固定,不易灵活适应快速变化的业务需求。
-
NoSQL 数据库优势:具有高度的可扩展性,能轻松应对海量数据和高并发;灵活的数据模型,可适应不同类型的数据结构;通常具有较好的读写性能。劣势:缺乏统一的标准和规范;事务支持相对较弱,可能难以保证强一致性;数据管理相对复杂。
10、云数据库的特点:
具有弹性扩展能力,可根据业务需求快速调整资源;高可用性,自动进行数据备份和故障转移;简化的管理和维护,用户无需关注底层硬件设施;提供多租户支持,资源隔离且成本效益高;支持远程访问,方便跨地域协作。
Hadoop 1.0 的不足:资源管理和任务调度紧密耦合,导致灵活性受限;单点故障问题,如 NameNode 故障可能导致整个集群不可用;对内存资源利用效率不高,难以支持需要大量内存的任务;不支持资源的动态分配和实时调度。
11、MapReduce 1.0 的缺陷:
启动开销较大,对于短任务效率较低;不适合实时性要求较高的任务;数据处理流程相对固定,不够灵活。
12、YARN 的发展目标:
分离资源管理和任务调度,提高系统的灵活性和可扩展性;更好地支持多计算框架并存;实现更高效的资源分配和调度策略;提高集群的整体性能和资源利用率。
13、Spark 的特点:
基于内存计算,速度快;支持多种数据源和数据格式;提供丰富的 API,便于开发和编程;具有良好的容错性和可扩展性;可以与其他大数据框架无缝集成。
14、流数据的特征:
数据实时生成和到达;数据量大且连续不断;数据到达顺序不一定有序;数据有效期短,需要实时处理。
15、流处理系统与传统的数据处理系统有如下不同:
更强调实时性和低延迟;处理方式通常是基于事件驱动;对数据的完整性和准确性要求相对较低,更关注实时响应;通常采用分布式架构以应对高并发。
16、Hive 与 Impala 的相同点:
都基于 Hadoop 生态系统;都支持对大规模数据进行分析查询;都提供类似 SQL 的接口,方便用户使用。
四、问答
1、Hadoop 的框架组成部分以及核心组成的描述:
Hadoop 框架主要包括 HDFS(分布式文件系统)和 MapReduce(分布式计算框架)。HDFS 由 NameNode(管理元数据)、DataNode(存储实际数据)等组成;MapReduce 由 Map 任务和 Reduce 任务构成。核心是分布式存储和分布式计算的协同工作。
2、SecondaryNameNode 的工作过程:
定期与 NameNode 通信,获取编辑日志;将编辑日志和 NameNode 中的元数据镜像合并成新的元数据镜像;将新的元数据镜像传回给 NameNode。
3、HDFS 的名称节点和数据节点的出错机制:
NameNode 通过心跳机制监控 DataNode 状态,DataNode 出错会被标记;NameNode 自身有数据备份和恢复机制。DataNode 出错时hdfs会标记为不可用,会重新复制数据块到其他节点。
4、HDFS 读数据的过程(用图示):
客户端向 NameNode 请求数据块位置信息;根据信息找到相应的 DataNode 读取数据。
5、HDFS 写数据的过程(用图示):
客户端向 NameNode 请求创建文件;NameNode 分配数据块并返回位置信息;客户端向 DataNode 写入数据,同时复制到其他节点;最后向 NameNode 汇报完成。
6、Hbase 与传统关系数据库的对比:
数据模型不同,Hbase 是非关系型;可扩展性更强;存储方式不同;适合大规模数据实时读写。
7、HBase 的系统架构:
- HBase 由 Master 节点和 RegionServer 节点组成。
- Master 节点负责管理和协调 RegionServer 节点的工作,包括Region 的分配、负载均衡等。
- RegionServer 节点负责存储和管理实际的数据,每个 Region 对应一个表的一部分数据。
8、MapReduce 体系结构的组成部分:
- MapReduce 体系结构由 JobTracker 和 TaskTracker 组成。
- JobTracker 负责作业的调度和监控,将任务分配给 TaskTracker 执行。
- TaskTracker 负责执行具体的任务,并向 JobTracker 汇报任务的执行情况。
9、YARN 的工作流程:
YARN 使用资源管理器 (ResourceManager) 和节点管理器 (NodeManager) 来管理和分配集群资源。
作业提交到 YARN 后,ResourceManager 会为作业分配合适的容器并分派到 NodeManager 执行。
NodeManager 负责监控容器资源使用情况,并向 ResourceManager 汇报。
ResourceManager 根据资源使用情况动态调度和分配集群资源。
YARN的架构主要包括以下几个组件:
1、 ResourceManager:
- 负责整个集群的资源管理和调度。
- 包括两个主要模块:调度器(Scheduler)和应用管理器(Application Manager)。
2、NodeManager:
运行在每个节点上,负责管理该节点的资源(如CPU、内存)并监控容器(Container)的运行状态。
3、ApplicationMaster:
- 每个应用程序都有一个独立的ApplicationMaster,负责应用程序的生命周期管理,包括资源请求、任务调度和故障恢复。
4、Container:
- YARN中的资源分配单元,每个Container包含一定量的CPU和内存资源,用于运行应用程序的任务。
特性:
- 资源利用率高:
- YARN通过细粒度的资源管理和调度,提高了集群的资源利用率。
- 扩展性强:
- YARN支持多种计算框架(如MapReduce、Spark、Tez等),使得Hadoop生态系统更加灵活和扩展性更强。
- 高可用性:
- YARN提供了应用程序的高可用性和故障恢复机制,确保作业的可靠运行
10、Spark 的运行流程:
用户程序提交到 Spark 集群后,Spark 驱动器程序 (Driver) 会将作业划分为多个阶段 (Stage)。
每个 Stage 包含多个任务 (Task),由执行器 (Executor) 并行执行。
Executor 向驱动器报告任务状态和资源利用情况。
驱动器根据反馈信息动态调度和分配资源。
11、NoSQL 数据库四大类型及示例:
- 键值存储 (Key-Value Store): Redis, Memcached
- 列族存储 (Column Family): Cassandra, HBase
- 文档存储 (Document-Oriented): MongoDB, CouchDB
- 图数据库 (Graph): Neo4j, JanusGraph