Hadoop面试题及详细答案 110题 (01-15)-- 基础概念与架构
《前后端面试题
》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,SQL,Linux… 。
文章目录
- 一、本文面试题目录
- 1. 什么是Hadoop?它的核心组件有哪些?
- 2. Hadoop的设计目标是什么?适用于哪些场景?
- 3. Hadoop 1.x和2.x的架构区别是什么?YARN的引入解决了什么问题?
- 4. 简述Hadoop的核心组件(HDFS、MapReduce、YARN)的功能。
- 5. Hadoop与传统关系型数据库的区别是什么?
- 6. Hadoop的生态系统包含哪些工具?各自的作用是什么??
- 7. 什么是Hadoop的“移动计算比移动数据更高效”原则?
- 8. Hadoop的局限性有哪些?如何规避?
- 9. Hadoop的版本演进中,主要有哪些重要更新?
- 10. 解释Hadoop的“高容错性”具体指什么,如何实现?
- 11. Hadoop支持的编程语言有哪些?
- 12. 什么是Hadoop的“分布式文件系统”,与本地文件系统的区别??
- 13. Hadoop集群的角色有哪些?(如NameNode、DataNode等)?
- 14. 如何判断一个任务适合用Hadoop处理?
- 15. Hadoop的配置文件有哪些?各自的作用是什么??
- 二、110道Hadoop面试题目录列表
一、本文面试题目录
1. 什么是Hadoop?它的核心组件有哪些?
- 答案:Hadoop是一个开源的分布式计算框架,主要用于处理海量数据集,具有高度的可扩展性、容错性和高效的分布式存储与计算能力。它的核心组件包括Hadoop分布式文件系统(HDFS)、MapReduce和YARN(Yet Another Resource Negotiator)。HDFS用于分布式存储大量数据,MapReduce提供分布式计算框架,YARN负责集群中计算资源的管理和任务调度。
2. Hadoop的设计目标是什么?适用于哪些场景?
- 答案:Hadoop的设计目标是解决处理海量数据的问题,采用分布式存储和计算思想,实现高容错性、高吞吐量的数据访问,能在廉价硬件上运行,支持大文件存储和大规模集群扩展。它适用于日志分析、数据仓库、推荐系统、机器学习等需要处理海量结构化和非结构化数据的场景,尤其适合执行批处理任务。
3. Hadoop 1.x和2.x的架构区别是什么?YARN的引入解决了什么问题?
- 答案:Hadoop 1.x架构中,MapReduce同时负责任务调度和计算,资源管理能力有限,且NameNode存在单点故障问题。Hadoop 2.x引入了YARN,将资源管理和任务调度分离,ResourceManager负责全局资源调度,NodeManager负责节点资源管理,ApplicationMaster负责具体作业的管理。YARN的引入解决了Hadoop 1.x中资源管理效率低、扩展性差的问题,使Hadoop可以更好地支持多种应用,提高了集群资源利用率和作业处理能力,同时也解决了NameNode单点故障问题(可通过HA等机制实现)。
4. 简述Hadoop的核心组件(HDFS、MapReduce、YARN)的功能。
- 答案:
- HDFS:是Hadoop的存储基础,用于将数据分布式地存储在集群的多个节点上。NameNode负责管理HDFS的元数据,DataNode存储实际的数据块。它具有高容错性,通过数据复制确保数据可靠性,支持数据流式访问,可扩展性良好,能容纳大规模数据集。
- MapReduce:是Hadoop的核心计算模型,用于处理大规模数据集的分布式计算。它将计算任务分为Map阶段和Reduce阶段,Map阶段对输入数据进行初步处理,Reduce阶段对Map阶段的中间结果进行汇总和聚合,Shuffle和Sort阶段负责中间结果的分发和排序。
- YARN:负责集群中计算资源的管理和任务调度。ResourceManager负责全局的资源调度和管理,NodeManager负责管理每个节点上的资源,ApplicationMaster负责协调作业的执行、请求资源以及监控任务的状态。
5. Hadoop与传统关系型数据库的区别是什么?
- 答案:Hadoop适用于处理海量的结构化、半结构化和非结构化数据,采用分布式存储和计算,数据存储在多个节点上,适合批处理操作,对数据一致性要求相对较低,主要用于数据分析等场景。而传统关系型数据库适合处理结构化数据,数据存储在本地磁盘,通过SQL语句进行事务性操作,强调数据的一致性和完整性,主要用于OLTP(联机事务处理)等场景。
6. Hadoop的生态系统包含哪些工具?各自的作用是什么??
- 答案:
- Hive:一个数据仓库工具,允许用户使用类似SQL的查询语言(HiveQL)来分析存储在HDFS上的数据,会将查询语句转换为MapReduce作业。
- HBase:基于HDFS构建的分布式NoSQL数据库,支持快速随机读写大规模数据集,适用于实时读写场景。
- Pig:一个数据流处理框架,使用Pig Latin语言来描述数据处理的逻辑,可更简洁地编写复杂的MapReduce任务。
- Sqoop:用于在Hadoop和关系型数据库(如MySQL、Oracle)之间高效传输数据。
- Oozie:一个用于协调和管理Hadoop作业的工作流调度器。
- ZooKeeper:分布式协调服务,用于实现分布式锁、配置管理、任务协调等功能,Hadoop生态系统中的多个组件都依赖它。
- Flume:用于从分布式数据源收集、聚合和移动大量数据,通常用于收集日志数据。
7. 什么是Hadoop的“移动计算比移动数据更高效”原则?
- 答案:在Hadoop中,当数据达到海量级别时,将计算任务移动到数据所在的节点附近执行,比将大量数据传输到计算节点更高效。因为这样可以降低网络阻塞的影响,减少网络传输开销,提高系统数据的吞吐量,HDFS为应用提供了将它们自己移动到数据附近的接口。
8. Hadoop的局限性有哪些?如何规避?
- 答案:Hadoop的局限性包括不适合低延迟数据访问场景,如实时交易系统;不擅长处理大量小文件,会占用大量NameNode内存;MapReduce编程模型相对复杂,开发效率较低等。可通过引入HBase等组件处理实时数据,利用SequenceFile等方式合并小文件,使用Hive、Pig等高层工具简化编程来规避这些局限性。
9. Hadoop的版本演进中,主要有哪些重要更新?
- 答案:Hadoop从1.x发展到2.x,引入了YARN,实现了资源管理和任务调度的分离,提高了集群资源利用率和扩展性,解决了NameNode单点故障问题。Hadoop 3.x进一步优化了HDFS的块存储机制,默认块大小提升至256MB,增强了集群的性能和稳定性,还增加了对容器化的支持等功能。
10. 解释Hadoop的“高容错性”具体指什么,如何实现?
- 答案:Hadoop的“高容错性”是指能够在集群中部分组件出现故障的情况下,仍保证数据的可靠性和系统的正常运行。HDFS通过数据复制机制实现高容错性,每个数据块会被复制到多个DataNode上,默认副本数为3,即使某个DataNode发生故障,也可从其他副本恢复数据。此外,DataNode定期向NameNode发送心跳信号,若NameNode发现某个DataNode失去联系,会将该节点上的数据块重新复制到其他节点。MapReduce中任务失败后可自动重试,YARN会监控任务状态并重新调度失败任务,这些都体现了Hadoop的高容错性。
11. Hadoop支持的编程语言有哪些?
- 答案:Hadoop支持多种编程语言,主要包括Java,这是Hadoop原生支持的语言,很多Hadoop组件和应用都是用Java编写的;此外还支持Python、C++等,可通过相关接口或框架使用这些语言编写Hadoop应用,如使用Apache Hadoop Streaming可通过Python等语言编写MapReduce任务。
12. 什么是Hadoop的“分布式文件系统”,与本地文件系统的区别??
- 答案:Hadoop的分布式文件系统即HDFS,是专为大规模集群环境设计的,在多台机器上分布式存储大量数据。它采用主从结构,NameNode负责维护整个文件系统的元数据信息,DataNode用于保存实际的数据块。与本地文件系统相比,HDFS可通过增加DataNode扩展存储容量,支持高带宽数据访问,具有更好的容错性和可用性,默认每个数据块复制三份存放在不同节点上,适合处理海量数据分析任务。而本地文件系统基于单机环境磁盘管理机制,I/O吞吐量和并发处理能力相对有限,适用于小型至中型规模应用程序开发或个人计算机日常使用。
13. Hadoop集群的角色有哪些?(如NameNode、DataNode等)?
- 答案:Hadoop集群的主要角色有NameNode、DataNode、Secondary NameNode、ResourceManager、NodeManager、ApplicationMaster等。NameNode负责管理HDFS的命名空间和元数据;DataNode存储实际的数据块;Secondary NameNode辅助NameNode,定期合并命名空间镜像和编辑日志;ResourceManager负责YARN中全局的资源调度和管理;NodeManager管理每个节点上的资源;ApplicationMaster负责协调具体作业的执行。
14. 如何判断一个任务适合用Hadoop处理?
- 答案:如果任务涉及处理海量数据(TB级或PB级),数据类型包括结构化、半结构化或非结构化,且对处理延迟要求不高,适合批处理方式,如大规模日志分析、数据挖掘等任务,那么通常适合用Hadoop处理。另外,如果任务需要分布式计算能力,能够分解为多个并行的子任务,也适合利用Hadoop的MapReduce模型来实现。
15. Hadoop的配置文件有哪些?各自的作用是什么??
- 答案:Hadoop主要的配置文件有core - site.xml、hdfs - site.xml、mapred - site.xml等。core - site.xml用于配置Hadoop核心属性,如HDFS的默认文件系统地址等;hdfs - site.xml用于配置HDFS相关属性,如dfs.name.dir(决定元数据存储路径)、dfs.data.dir(决定数据存储路径)等;mapred - site.xml用于配置MapReduce相关属性,如MapReduce作业的运行环境等。
二、110道Hadoop面试题目录列表
文章序号 | Hadoop面试题110道 |
---|---|
1 | Hadoop面试题及详细答案110道(01-15) |
2 | Hadoop面试题及详细答案110道(16-35) |
3 | Hadoop面试题及详细答案110道(36-55) |
4 | Hadoop面试题及详细答案110道(56-70) |
5 | Hadoop面试题及详细答案110道(71-85) |
6 | Hadoop面试题及详细答案110道(86-95) |
7 | Hadoop面试题及详细答案110道(96-105) |
8 | Hadoop面试题及详细答案110道(106-110) |