大数据面试题V3.0 -- Hadoop基础
Hadoop基础
-
介绍下Hadoop
分布式系统架构。开发分布式程序。利用集群的威力进行高速运算和存储。
-
Hadoop的特点
高可靠性 高效性 高可扩展性 高容错性 低成本
-
说下Hadoop生态圈组件及其作用
1,HDFS (分布式文件系统) 2,资源管理器(YARN 和 mesos) 3,mapreduce(分布式计算框架) 4,flume(日志收集工具) 5, hive(基于hadoop的数据仓库) 6,hbase(分布式列存数据库) 7,zookeeper(分布式协作服务) 8,sqoop(数据同步工具) 9,pig(基于hadoop的数据流系统) 10,mahout(数据挖掘算法库)
-
Hadoop主要分哪几个部分?他们有什么作用?
三大核心组件: HDFS(分布式文件存储) MAPREDUCE(分布式计算) YARN(资源调度)
-
Hadoop 1.x,2x,3.x的区别
Hadoop1.x : MR 处理业务逻辑运算 和 资源的调度,耦合性较大。 Hadoop2.x : 增加了Yarn。Yarn负责资源的调度,MR负责运算。 Hadoop3.x : 在组成上没有变化。
-
Hadoop集群工作时启动哪些进程?它们有什么作用?
1)NameNode主服务器,管理 名称空间 和对 文件访问,保存metadate。 2)SecondaryNameNode提供周期检查点和清理任务。 3)DataNode守护进程,负责管理连接到节点的存储。 4)ResourceManager JobTracker负责调度DataNode上的工作。TaskTracker执行实际工作。 5)NodeManager TaskTracker执行任务。 6)DFSZKFailoverController高可用时它负责监控NN的状态,并及时的把状态信息写入ZK。它通过一个独立线程周期性的调用NN上的一个特定接口来获取NN的健康状态。FC也有选择谁作为Active NN的权利,因为最多只有两个节点,目前选择策略还比较简单(先到先得,轮换)。 7)JournalNode 高可用情况下存放namenode的editlog文件.
-
在集群计算的时候,什么是集群的主要瓶颈
磁盘IO
-
搭建Hadoop集群的xml文件有哪些?
core-site.xml 核心配置文件,主要定义文件访问 hdfs:// hadoop-env.sh 主要配java路径 hdfs-site.xml hdfs的相关配置 mapred-site.xml MR相关配置 slaves 从节点 yarm-site.xml 资源调度
-
Hadoop的checkpoint流程
1. 请求主节点Namenode 停⽌使⽤ edits⽂件,将新的写操作记录到新⽂件 edits.new。 2. 从主节点获取 fsimage 和 edits ⽂件(采⽤HTTP GET) 3. 将 fsimage 载⼊内存,执⾏ edits 的操作,创建新 fsimage,并发回主节点(使⽤HTTP POST) 4. 主节点将换旧的 fsimage ,⽤ edits.new 替换 edits⽂件。更新 fstime ⽂件 记录检查点执⾏的时间。
-
Hadoop的默认块大小是多少?为什么要设置这么大?
Hadoop 1 默认大小 64M Hadoop 2 之后默认大小 128M 为了最小化寻址开销
-
Block划分的原因
文件是分布式储存的,被分成块分别储存在不同的机器上。 而多个副本,是为了安全的考虑。
-
Hadoop常见的压缩算法?
gzip、lzo、snappy、Bzip2
-
Hadoop作业提交到YARN的流程?
(1)作业提交 Client 调用 job.waitForCompletion 方法,向整个集群提交 MapReduce 作业, 向 ResourceManager 申请一个作业 id。 RM 给 Client 返回该 job 资源的提交路径和作业 id。 Client 提交 jar 包、切片信息和配置文件到指定的资源提交路径,向 RM 申请运行 MRAppMaster。 (2)作业初始化 当 RM 收到请求后,AppManager 将该 job 添加到容量调度器 Scheduler 中。
空闲的 NodeManager 领取到该 Job,创建 Container,并产生 MRAppMaster,下载 Client 提交的资源到本地。 (3)任务分配和运行 MRAppMaster 向 RM 申请运行多个 MapTask 任务资源,
RM 将运行 MapTask 分配给空闲的 NodeManager,使其创建容器。 MRAppMaster 命令 NodeManager 启动 MapTask,对数据分区排序,等待执行结束。
MRAppMaster 向 RM 申请容器,运行 ReduceTask。ReduceTask 向 MapTask 获取相应分区的数据。
MRAppMaster 监控 Task 的运行状态 运行结束后,会向 RM 申请注销自己。
(4)进度和状态更新
YARN 中的任务将其进度和状态(包括 counter)返回给应用管理器 AppManager,
客户端每秒(通过 mapreduce.client.progressmonitor.pollinterval 设置)
向应用管理器请求进度更新, 展示给用户,AppManager 会监控 MRAppMaster。
(5)作业完成 -
Hadoop的Combiner的作用
Combine是作为 Map任务的一部分,在执行完 Map函数后紧接着执行的。能够减少中间结果的数目,从而减少网络流量。
-
Hadoop序列化和反序列化
1)序列化:将 结构化对象 转换为 字节流 的过程,以便在网络上传输或写入到磁盘进行永久存储。 2)反序列化:将 字节流 转回一系列的 结构化对象。 在Hadoop中,多个节点上进程间的通信是通过“远程过程调用(RPC)”实现的。
-
Hadoop的运行模式
1.独立(本地)运行模式:无需任何守护进程,所有的程序都运行在同一个JVM上执行。在独立模式下调试MR程序非常高效方便。所以一般该模式主要是在学习或者开发阶段调试使用 。 2.伪分布式模式: Hadoop守护进程运行在本地机器上,模拟一个小规模的集群,换句话说,可以配置一台机器的Hadoop集群,伪分布式是完全分布式的一个特例。 3.完全分布式模式:Hadoop守护进程运行在一个集群上。
-
Hadoop小文件处理问题
文件是许多记录组成的,可以通过调用 HDFS 的 sync() 方法(和 append 方法结合使用),每隔一定时间生成一个大文件。 或者,可以通过写一个 MapReduce 程序来来合并这些小文件。 MapReduce上的小文件 需要容器通过某种方式来对这些文件进行分组。
-
Hadoop为什么要从2.x升级到3.x?
1.License adoop 2.x - Apache 2.0,开源 Hadoop 3.x - Apache 2.0,开源 2.支持的最低Java版本 Hadoop 2.x - java的最低支持版本是java 7 Hadoop 3.x - java的最低支持版本是java 8 3.容错 Hadoop 2.x - 可以通过复制(浪费空间)来处理容错。 Hadoop 3.x - 可以通过Erasure编码处理容错。 4.数据平衡 Hadoop 2.x - 对于数据,平衡使用HDFS平衡器。 Hadoop 3.x - 对于数据,平衡使用Intra-data节点平衡器,该平衡器通过HDFS磁盘平衡器CLI调用。 5.存储Scheme Hadoop 2.x - 使用3X副本Scheme Hadoop 3.x - 支持HDFS中的擦除编码。 6.存储开销 Hadoop 2.x - HDFS在存储空间中有200%的开销。 Hadoop 3.x - 存储开销仅为50%。 7.存储开销示例 Hadoop 2.x - 如果有6个块,那么由于副本方案(Scheme),将有18个块占用空间。 Hadoop 3.x - 如果有6个块,那么将有9个块空间,6块block,3块用于奇偶校验。 8.YARN时间线服务 Hadoop 2.x - 使用具有可伸缩性问题的旧时间轴服务。 Hadoop 3.x - 改进时间线服务v2并提高时间线服务的可扩展性和可靠性。 9.默认端口范围 Hadoop 2.x - 在Hadoop 2.0中,一些默认端口是Linux临时端口范围。所以在启动时,他们将无法绑定。 Hadoop 3.x - 但是在Hadoop 3.0中,这些端口已经移出了短暂的范围。 10.工具 Hadoop 2.x - 使用Hive,pig,Tez,Hama,Giraph和其他Hadoop工具。 Hadoop 3.x - 可以使用Hive,pig,Tez,Hama,Giraph和其他Hadoop工具。 11.兼容的文件系统 Hadoop 2.x - HDFS(默认FS),FTP文件系统:它将所有数据存储在可远程访问的FTP服务器上。 Amazon S3(简单存储服务)文件系统Windows Azure存储Blob(WASB)文件系统。 Hadoop 3.x - 它支持所有前面以及Microsoft Azure Data Lake文件系统。 12.Datanode资源 Hadoop 2.x - Datanode资源不专用于MapReduce,我们可以将它用于其他应用程序。 Hadoop 3.x - 此处数据节点资源也可用于其他应用程序。 13.MR API兼容性 Hadoop 2.x - 与Hadoop 1.x程序兼容的MR API,可在Hadoop 2.X上执行 Hadoop 3.x - 此处,MR API与运行Hadoop 1.x程序兼容,以便在Hadoop 3.X上执行 14.支持Microsoft Windows Hadoop 2.x - 它可以部署在Windows上。 Hadoop 3.x - 它也支持Microsoft Windows。 15.插槽/容器 Hadoop 2.x - Hadoop 1适用于插槽的概念,但Hadoop 2.X适用于容器的概念。通过容器,我们可以运行通用任务。 Hadoop 3.x - 它也适用于容器的概念。 16.单点故障 Hadoop 2.x - 具有SPOF的功能,因此只要Namenode失败,它就会自动恢复。 Hadoop 3.x - 具有SPOF的功能,因此只要Namenode失败,它就会自动恢复,无需人工干预就可以克服它。 17.HDFS联盟 Hadoop 2.x - 在Hadoop 1.0中,只有一个NameNode来管理所有Namespace,但在Hadoop 2.0中,多个NameNode用于多个Namespace。 Hadoop 3.x - Hadoop 3.x还有多个名称空间用于多个名称空间。 18.可扩展性 Hadoop 2.x - 我们可以扩展到每个群集10,000个节点。 Hadoop 3.x - 更好的可扩展性。 我们可以为每个群集扩展超过10,000个节点。 19.更快地访问数据 Hadoop 2.x - 由于数据节点缓存,我们可以快速访问数据。 Hadoop 3.x - 这里也通过Datanode缓存我们可以快速访问数据。 20.HDFS快照 Hadoop 2.x - Hadoop 2增加了对快照的支持。 它为用户错误提供灾难恢复和保护。 Hadoop 3.x - Hadoop 2也支持快照功能。 21.平台 Hadoop 2.x - 可以作为各种数据分析的平台,可以运行事件处理,流媒体和实时操作。 Hadoop 3.x - 这里也可以在YARN的顶部运行事件处理,流媒体和实时操作。 22.群集资源管理 Hadoop 2.x - 对于群集资源管理,它使用YARN。 它提高了可扩展性,高可用性,多租户。 Hadoop 3.x - 对于集群,资源管理使用具有所有功能的YARN。
-
Hadoop的优缺点
-
Hadoop的优点 1、具有 按位存储 和处理数据能力的高可靠性。 2、通过可用的计算机 集群 分配数据,完成存储和计算任务,这些集群可以方便地扩展到数以千计的节点中,具有高扩展性。 3、能够在节点之间进行 动态地移动数据,并保证各个节点的动态平衡,处理速度非常快,具有高效性。 4、能够自动保存数据的 多个副本,并且能够自动将失败的任务重新分配,具有高容错性。 Hadoop的缺点 1、不适用于低延迟数据访问。 2、不能高效存储大量小文件。 3、不支持多用户写入并任意修改文件。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!