hadoop面试题

1、介绍一下Hadoop的框架

存储hdfs,计算框架MapReduce,资源管理Yarn

2、简单说下HDFS的读写流程

a、客户端发送请求,调用DistributedFileSystem API的open方法发送请求到Namenode,获取block的位置信息,因为真正的block是存在Datanode节点上的,而

  namenode里存放block位置信息的元数据。

b、Namenode返回所有block的位置信息,并将这些信息返回给客户端。

c、客户端拿到block的位置信息后调用FSDataInputStream  API的read方法并行的读取block信息,block默认是3个副本,所以每个block只需要取一个副本就可以了。

d、datanode返回给客户端。

3、介绍下HDFS中实现数据容错的方式/机制

a、每个数据块3个副本,分布在不同的机架上

b、DataNode定期向NameNode发送心跳

4、介绍一下Yarn的框架结构

a、ResourceManager:负责整个集群的资源管理和调度

b、ApplicationMaster:负责应用程序相关事务,比如任务调度、监控和容错等。

5、介绍一下Yarn框架中的Job调度方式

6、说明一下MapReduce的框架结构

一个完整的mapreduce程序在分布式运行时有三类实例

a、MRAppMaster:负责整个程序的过程调度及状态协调

b、mapTask:负责map阶段的整个数据处理流程

c、ReduceTask:负责reduce阶段的整个数据处理流程。

7、简单说明一下MapReduce中的Shuffle过程

8、MapReduce的容错机制是如何实现的

9、MapReduce的二次排序机制是什么?

10、HDFS启动流程

第一步:启动namenode;

第二步:启动datanode;

11、MapReduce的生命周期/MapReduce的提交执行流程

MapReduce的提交执行流程

a、作业提交

client调用Job.waitForCompletion方法,向整个集群提交MapReduce作业(第1步)。新的作业ID(应用ID)由资源管理分配(第2步)。作业的client核实作业的输出,计算输入的split,将作业的资源(包括Jar包,配置文件,split信息)拷贝给HDFS(第3步)。最后,通过调用资源管理器的YarnClient.submitApplication()提交作业(第4步)

b、作业初始化

当资源管理器收到submitApplication()的请求时,就将该请求发给调度器(scheduler),调度器分配container,然后资源管理器在该container内启动应用管理器进程,由节点管理器监控(第5a和5b步)

MapReduce作业的应用管理器是一个主类为MRAppMaster的Java应用,其通过创造一些bookkeeping对象监控作业的进度,得到任务的进度和完成报告(第6步),然后其通过分布式文件系统得到由客户端计算好的输入split(第7步),然后为每个输入split创建一个map任务,根据mapreduce,job.reduces创建reduce任务对象。

c、任务分配

如果作业很小,应用管理器会选择在其自己的JVM中运行任务

如果不是小作业,那么应用管理器向资源管理器请求container来运行所有的map和reduce任务(第8步)。这些请求时通过心跳来传输的,包括每个map任务的数据位置,比如存放输入split的主机名和机架(rask),

d、任务运行

当一个任务由资源管理器的调度器分配给一个container后,应用管理器通过联系节点管理器来启动container(第9a步和9b步)。任务由一个主类为YarnChild的Java应用执行,在运行任务之前首先本地化任务需要的资源,比如作业配置,JAR文件,以及分布式缓存的所有文件(第10步)。最后,运行map或reduce任务(第11步)

YarnChild运行在一个专用的JVM中,但是YARN不支持JVM重用。

e、进度和状态更新

YARN中的任务将其进度和状态(包括counter)返回给应用管理器,客户端每秒(通过mapreduce.client.progressmonitor.pollinterval设置)向应用管理器请求进度更新, 展示给用户。 

f、作业完成

 除了向应用管理器请求作业进度外,客户端每5分钟都会通过调用waitForCompletion()方法来检查作业是否完成,时间间隔可以通过mapreduce.client.completion.pollinterval来设置. 作业完成之后, 应用管理器和container会清理工作状态, OutputCommiter的作业清理方法也会被调用. 作业的信息会被作业历史服务器存储以备之后用户核查。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值