Hadoop面试题---面试鸭
1. Hadoop的核心组件是什么?在大数据处理中的角色是什么?
答:Hadoop的核心组件包括:HDFS(Hadoop分布式文件系统)、Yarn、MapReduce(分布式计算框架)以及Hadoop Common(通用工具库)
HDFS:提供了高吞吐量的数据访问能力,用于存储大数据集。
Yarn:负责资源管理和任务调度,确保各计算任务能够顺利执行。
MapReduce:处理和生成大数据集的编程模型,通过并行处理来提升计算效率。
Hadoop Common:提供了Hadoop其余组件所需的公用工具和库。
2. Hadoop为什么设计为一个分布式系统?有什么优势?
答:主要原因是为了处理海量的数据,分布式系统将数据和计算任务分割为小块,分配到多个机器上并行,从而大幅提升系统的可扩展性和容错能力。主要的优势有以下:
高扩展性:可以增加更多的机器节点来扩展存储和计算能力。
高容错性:通过数据冗余存储,即时一台机器发生故障,也能确保继续工作。
高吞吐量:Hadoop支持并行数据处理,能有效提升数据读写熟读和计算性能。
成本消息:可以使用廉价的机器搭建集群,减少硬件开支。
3. Hadoop的NameNode和DataNode之间如何通信?
答:NameNode和DataNode之间主要是通过RPC(远程过程调用)机制实现。DataNode定期向NameNode发送心跳和块报告来报告它的存活状态和存储块状态。NameNode基于这些报告来维护文件系统的元数据,并告知DataNode应执行的操作。
- DataNode向NameNode发送心跳,告诉它自己还活着
- NameNode收到心跳信号后返回命令,例如复制块、删除块等操作
- 块报告,DataNode周期性地向NameNode发送块报告,报告自己上面有哪些数据块及其状态。
心跳信息:默认3秒一次
块报告:默认周期是6小时一次
4. 在Hadoop中,JobTracker和TaskTracker的作用是什么?
答:在Hadoop的架构中,JobTracker和TaskTracker是MapReduce的核心组件。
JobTracker:是运行在主节点上的服务,负责接受MapReduce作业(job)的请求,分割这些作业成任务(task),然后将这些任务分配给集群中的各个节点。JobTracker主要负责整个流程的协调和监控,包括资源管理、任务分配、任务失败的处理等等。
TaskTracker:它运行在从节点,负责JobTracker的调度,实际执行Map和Reduce任务,一旦任务完成,会向JobTracker发送状态汇报,在任务处理中,如果任务失败,TaskTacker还负责重新执行该任务。
5. Hadoop中的Job是如何提交和执行的?
答:一个Job是通过以下步骤提交和执行的:
- 客户端创建一个Job对象,并配置作业相关设置(如输出路径、输入路径、Mapper类、Reducer类)
- 客户端调用Job的submit()方法,将作业提交给集群
- 客户端与ResourceManager通信,通过一个应用程序ID,并为该Job创建Application Master
- Application Master 向ResourceManager请求资源,并根据资源分配执行任务
- 任务运行过程中,任务输出、状态甚至失败都会被Application Master监控
- Application Master完成所有任务后,通过ResourceManager作业完成
6.Hadoop中的作业调度策略是什么,如何选择合适的调度器?
答:Hadoop主要有三种调度器:FIFO调度器、公平调度器、容量调度器。
- FIFO调度器:遵从先进先出的原则,按照作业提交的顺序进行处理,不考虑资源的公平性,只根据顺序来执行;
- 公平调度器:主要关注资源的公平分配,确保所有用户和作业都能获得合理的资源,通过划分池来进行资源分配,每个池中的优先级相同,保证资源的均衡使用;
- 容量调度器:允许多个组织共享一个集群,同时确保每个组织都能得到自己的资源配额,适用于多个部门或者团队共享同一个Hadoop集群,通过划分队列并为每个队列设定最大资源限制来实现资源隔离和分享。
7. Hadoop集群如何进行扩展?
答:Hadoop集群的扩展一般为增加数据节点(DataNode)。
- 准备新节点,确认硬件配置;
- 在新节点上同步安装相同版本的Hadoop;
- 将Hadoop配置文件同步至新节点,如core-site.xml、hdfs-site.xml、mapred-site.xml等
- 更新主节点配置,将新节点信息更新到NameNode和其他关键节点上,更新配置文件hdfs-site.xml等
- 刷新配置,在NameNode上运行 hdfs dfsadmin -refreshNodes,感知新节点
- 启动新节点
- 验证新节点是否加入成功并开始提供服务:hdfs dfsadmin -report
8. 在Hadoop中,集群节点失效如何处理?
答:Hadoop集群中节点失效(心跳机制确认是否失效)主要依赖HDFS和YARN,各自采取措施保证数据和计算任务的高可用。
HDFS:通过数据块的副本机制来处理,默认情况下,每个数据块都会存储在三个不同的节点当中,当一个节点失效时,HDFS会自动在其他健康的节点上复制数据块以保证数据的可用性。
YARN:通过任务重试和资源重新分配处理节点时效,当节点失效时,YARN ResourceManager会重新调度的在该节点上运行的任务,将任务分配给其他健康的节点保证计算任务继续进行。