大数据开发面试题【Hadoop篇】

1、Hadoop特点

hadoop是一个分布式计算平台,能够允许使用编程模型在集群上对大型数据集进行分布式处理

hadoop的三大组件:HDFS(分布式文件存储平台)、MR(计算引擎)、YARN(资源调度平台)

特点:

高扩容:hadoop在集群间分发数据并完成数据计算,集群可以方便进行扩展节点

成本低:hadoop使用连接的机器组成集群来分发和处理数据,不依赖高端成本;

高效率:在集群中处理和分发数据,处理速度非常快;

可靠性:存储在hdfs上的数据文件,一般有多个备份,保证数据的可靠性;(数据备份)

2、说下Hadoop生态圈组件及其作用

hive(离线数据仓库):基于hdfs,结合类SQL引擎,底层执行MR任务,用于OLAP分析查询的数据仓库。

zookeeper(管理员): 分布式协调服务。就是为用户的分布式应用程序提供协调服务,如:主从协调、服务器节点动态上下线、统一配置管理、分布式共享锁、统一名称服务等等。

kafka(消息通信中间件)

flume(日志传输组件):是一个分布式可靠的高可用的海量日志收集、聚合、移动的工具,通俗来说flume就是一个日志采集工具;

spark(批处理计算框架):是一个快速的,通用的集群计算系统。

flink(流处理计算框架)

3、Hadoop主要分哪几个部分?他们有什么作用?

HDFS:高容错、高可靠性、高可扩展性、高吞吐率的分布式文件存储系统,负责海量数据的存储;

YARN:资源管理调度系统,负责hadoop生态系统中任务的调度和监控;

MR:基于HDFS、YARN的分布式并行计算框架,负责海量数据的计算

4、Hadoop集群工作时启动哪些进程?它们有什么作用?

  1. NN:是hadoop中的主服务器,管理文件系统名称空间和对集群中存储的文件访问,这些元数据信息是存储在内存中的,也可以持久化到磁盘上。并且可以管理DN
  2. SNN:不是NN的冗余守护进程,而是提供周期性检查点和清理任务,帮助NN合并editslog,减少NN的启动时间(并不是NN的备用节点)
  3. fsimage - 它是在NameNode启动时对整个文件系统的快照
  4. edit logs - 它是在NameNode启动后,对文件系统的改动序列

只有NN重启的时候,editlogs才会合并到fsimage文件中,得到一个文件系统的最新快照,但是在NN工作很久以后,editlogs文件变得很大。导致NN的重启会花费很长时间,此时SNN的职责就是帮助editlogs合并到fsimage文件中。定时去获取NN去获取editlogs,并更新到自己的fsimage上,一旦有了新的fsimage,它将拷贝回NN中

DN:提供真实的文件数据的存储服务,以数据的形式存储HDFS文件,响应HDFS客户端的读写请求,周期性地向NN汇报心跳信息、数据块信息、缓存数据块信息

RM:负责整个集群资源的管理和调度,功能包括对ApplicationMaster的管理、NM的管理、Application管理等,负责整个集群中所有资源的统一管理和分配,并且接受来自各个节点的资源汇报信息;

NM:主要处理来自RM分配的任务,监测并且报告Container使用信息给RM;

JN:两个NameNode为了数据同步,会通过一组称作JournalNodes的独立进程进行相互通信。当active状态的NameNode的命名空间有任何修改时,会告知大部分的JournalNodes进程。standby状态的NameNode有能力读取JNs中的变更信息,并且一直监控edit log的变化,把变化应用于自己的命名空间。standby可以确保在集群出错时,命名空间状态已经完全同步了。

5、在集群计算的时候,什么是集群的主要瓶颈

  1. 网络带宽:集群中节点通常通过网络进行数据传输和通信,网络带宽不足,会导致数据传输速度慢,影响整个集群计算性能
  2. 存储性能:如果存储系统的读写能力较低,会影响数据的读取和写入速度,降低整个集群的计算效率
  3. 处理能力:集群中的节点数据量和节点的计算能力都会影响整体的计算能力,集群规模较小或者节点的计算能力较低,无法满足大规模数据处理的需求
  4. 内存容量:进行大规模数据分析和处理,需要大量的内存资源来存储和操作数据,若节点的内存不足,会导致数据无法完全加载到内存中,影响性能
  5. 数据倾斜:由于数据分布不均匀,导致某些节点的数据负载过重,从而使得这些节点成为整个集群的瓶颈(解决数据倾斜方法后续详谈)

6、搭建Hadoop集群的xml文件有哪些?

core-site.xml:配置Hadoop的核心参数,如文件系统默认方案、HDFS地址等。

hdfs-site.xml:配置HDFS的相关参数,如副本数量、数据块大小等。

mapred-site.xml:配置MapReduce相关参数,如作业跟踪器地址、任务分配器等。

yarn-site.xml:配置YARN相关参数,如资源管理器地址、节点管理器等。

hive-site.xml:如果需要使用Hive,则需要配置Hive的相关参数,如元数据存储位置、数据库连接等。

7、Hadoop的Checkpoint流程?

该流程是指在集群中,将正在运行的任务的状态信息和元数据信息保存在持久化存储中,以便在集群发生故障时候能够及时恢复任务;

若不适用HA,hadoop的checkpoint机制就是主节点的元数据备份机制,通过SN,每隔一段时间将NN的元数据更新并备份,然后返回给fsimage和NN,SNN会每隔默认60分钟,都会通知更新日志信息edits,以便后续元数据备份操作;

元数据是保存在内存当中的,这样容易丢失,NN的工作量巨大,管理众多DN,还要更新操作日志文件edits,还要将元数据信息序列化到本地,所以SNN就会开始代替NN完成元数据的保存工作
流程如下:

1、当一个任务开始执行时,Hadoop会周期性地将任务地状态信息和元数据信息写入到Checkpoint目录中。这些信息包括任务的进度、输入数据的位置、已经完成的工作等。

2、Checkpoint目录通常位于分布式文件系统(如HDFS)中,以保证数据的安全性和可靠性。

3、Hadoop还会在内存中保存一个Checkpoint ID,用于标识当前的Checkpoint。

4、在任务执行过程中,如果集群发生故障或节点失效,任务会停止执行。

5、当集群恢复正常后,Hadoop会检查Checkpoint目录中的状态信息和元数据信息,并根据Checkpoint ID找到最新的Checkpoint。

6、Hadoop会使用Checkpoint中的信息来恢复任务的执行状态,包括任务的进度、输入数据的位置等。

7、任务恢复完成后,Hadoop会继续执行任务,并从上次Checkpoint的位置继续处理数据,以确保不会重复执行已经完成的工作。

8、Hadoop的Block大小是什么?为什么要设置这么大?

hadoop的块默认大小是128M,在hadoop1.和2.x版本默认为64M
原因:

文件块越大,寻址时间越短,但磁盘的传输时间越长。磁盘传输的时间会大于寻址时间,导致处理过程变慢,其次,MR中的map任务通常一次只处理一个块中的数据,块过大运行速度也会变慢;

文件块越小,寻址时间越长,但磁盘传输时间越短。存储小文件会占用NN中大量内存来存储元数据,管理效率变低;

9、Hadoop里Block划分的原因?

  1. 分布式存储:Hadoop是一个分布式系统,数据存储在集群中的多个节点上。通过将文件划分为块,可以将这些块分散存储在不同的节点上,实现数据的分布式存储和并行处理。
  2. 数据冗余:Hadoop使用副本机制来确保数据的可靠性和容错性。将数据划分为块后,可以将每个块的多个副本分布在不同的节点上,以防止数据丢失或节点故障。
  3. 数据局限性:Hadoop采用了数据局部性原则,将计算任务分配给存储数据的节点,以减少数据的网络传输和提高计算效率。将数据划分为块后,可以更好地实现数据局部性,因为计算任务可以针对某个块进行处理,而不需要处理整个文件。
  4. 管理和调度:将数据划分为块后,Hadoop可以更方便地管理和调度数据。块的大小可以根据具体应用和硬件配置进行调整,以优化数据处理和存储地性能。

10、Hadoop中常见的压缩算法

default:默认的压缩格式

Gzip:可以减小文件的大小,但无法进行并行处理

Snappy:谷歌开发,具有很高的压缩和解压缩速度,压缩后文件较大

LZO:较快的压缩算法,可以在hadoop中实现高速压缩和解压缩,适用于大数据压缩

Bzip2:较高压缩比,速度较慢

LZ4:极快压缩速度,压缩比较低

11、Hadoop作业提交到YARN的流程?

前置基础:Container是yarn中资源的抽象,封装了某一个节点上一定量的cpu和内存资源

1、RM接收到一个作业请求后,给该作业生成唯一ApplicationID,并为该作业分配一个ApplicationMaster

2、RM将ApplicationID和ApplicationMaster的地址返回给客户端

3、客户端与ApplicationMaster的地址建立通信,发送资源请求

4、ApplicationMaster收到作业资源需求和启动命令,向RM申请资源

5、RM根据可用的资源情况为ApplicationMaster分配所需资源,将资源返回给ApplicationMaster

6、ApplicationMaster收到资源位置信息后,与NM通信,将作业所需的资源分配给具体的task

7、每个task会在独立的Container中运行,通过心跳机制汇报ApplicationMaster任务的情况

8、ApplicationMaster收到所有任务完成的信息,向RM注销自己

9、RM收到ApplicationMaster的注销请求后,将该作业从yarn状态存储中删除,释放相关资源

12、Hadoop的Combiner的作用?

Combiner是在map阶段之后,reduce阶段之前,对map输出的中间数据进行本地合并和压缩,减少数据的传数量提高整体性能,可将相同的key的多个map输出结果进行合并,减少网络传输的数据量,降低reduce的负载,提高效率;

mapper端到reducer端的数量在应用combiner之后会减少,对输出的键值对进行压缩合并,减少数据量

13、Hadoop序列化和反序列化

序列化是将数据转换为字节流的过程,反序列化是将字节流重新转换成数据的过程

以保证数据在各个节点之间的传输过程中占据更少的磁盘容量

14、Hadoop小文件处理问题?

导致的问题

  1. 存储开销:每个小文件需要占据磁盘空间,默认的块是128MB,大部分小文件会浪费磁盘空间
  2. 元数据开销:NN会为每个文件分配一个元数据块,小文件数量过多时候,元数据存储和访问的开销会增加
  3. 数据读取效率低:小文件数量庞大,导致大量的寻址时间和网络传输开销
  4. 任务调度:MR任务是以块为单位进行调度的,小文件数量庞大会导致任务调度的开销增加

处理办法

  1. 合并小文件:使用工具HAR或者自定义脚本进行合并操作,减少存储和元数据开销(将多个小文件打包成一个HAR文件,NN中的元数据也就存储一份)
  2. SequenceFile格式:将小文件换成SequenceFile格式,将多个小文件合并成一个SequenceFile文件,有效处理小文件
  3. 数据归档:将多个小文件合并为一个大文件,进行归档存储 4:数据压缩:压缩小文件,减少存储空间和网络传输开销
相关推荐
YangYang9YangYan3 小时前
2026 校招商品分析岗位 JD 拆解,核心指标、工具与面试考点
大数据·数据库·数据分析
大大大大晴天3 小时前
OpenMetadata VS DataHub VS Atlas VS Gravitino
大数据
Qyr996 小时前
2026全球汽车碳刷行业发展全景分析报告
大数据
蓝速科技7 小时前
便民服务大厅 AI 数字人一体机场景适配与落地指南丨蓝速科技
大数据·网络·数据结构·人工智能·自然语言处理·数据分析·运维开发
精益数智工坊7 小时前
云计算环境数据怎么同步?云计算集成方案有哪些?
大数据·人工智能·数据挖掘·数据可视化
huashengzsj8 小时前
什么是DMS经销商管理系统?国内经销商管理系统有哪些品牌
大数据
IT毕设梦工厂9 小时前
计算机毕业设计选题推荐:基于大数据的草鱼价格分析与可视化|毕业设计选题|计算机毕设|选题推荐|毕设指导|项目定制|源码|高质量项目
大数据·hadoop·python·数据挖掘·数据分析·课程设计·大数据毕设项目
辛迪聊物业数字化10 小时前
智慧社区物业管理软件新手部署与实操指南
大数据·php
字节跳动数据平台10 小时前
模型再强,为什么 Demo 还是进不了生产?
大数据
南京兴帝文化传媒有限公司10 小时前
本地生活服务GEO优化实战:宁国花店地图关键词布局带来订单翻倍的技术路径
大数据·人工智能·生活·geo 优化·geo优化避坑·ai搜索获客