hadoop面试题汇总

hadoop面试题汇总hadoop 面试题汇总 1 说说搭建 hadoop 集群的 3 个 xml 文件 答 core site xml 核心配置文件 hdfs site xml hdfs 配置文件 mapred site xml MapReduce 配置文件 2 正常的 hadoop 集群工作都会启动哪些进程 答 NameNodeData 他们的作用分别是什么 NameNode 主节点 负责维护整个 Hdfs 文件系统的目录树 以及每个文件所

hadoop面试题汇总

1. 说说搭建hadoop集群的3个xml文件。

答:

  • core-site.xml:核心配置文件。
  • hdfs-site.xml:hdfs配置文件。
  • /mapred-site.xml:MapReduce配置文件。

2. 正常的hadoop集群工作都会启动哪些进程?

答:

  • NameNode
  • DataNode
  • Secondary NameNode

3. 他们的作用分别是什么?

  • NameNode:主节点,负责维护整个Hdfs文件系统的目录树,以及每个文件所对应的block块信息(元数据)。
  • DataNode:从节点,负责存储具体的文件数据,并且每个block可以在多个DataNode上存储多个副本。
  • Secondary NameNode:相当于一个备用的NameNode, 当NameNode死机之后,可以将Secondary NameNode的数据备份到NameNode上面 ,但不能备份完整数据,它有两大功能,1 镜像备份,2 日志与镜像定期合并。

4. 你能详细介绍一下SecondaryNode 的具体作用吗?

  • 2NN主要负责对NN的元数据进行合并,当满足一定条件的下,2NN会监测本地时间,每隔一个小时会主动对NN的edits文件和fsimage文件进行一次合并。合并的时候,首先会通知NN,这时候NN就会停止对正在使用的edits文件的追加,同时会新建一个新的edits编辑日志文件,保证NN的正常工作。接下来 2NN会把NN本地的fsimage文件和edits编辑日志拉取2NN的本地,在内存中对二者进行合并,最后产生最新fsimage文件。把最新的fsimage文件再发送给NN的本地。注意还有一个情况,当NN的edits文件中的操作次数累计达到100万次,即便还没到1小时,2NN(每隔60秒会监测一次NN方的edits文件的操作次数)也会进行合并。 2NN 也会自己把最新的fsimage文件备份一份。

5. HDFS的块默认是保存几份?一个块多大?

  • 默认保存是3份,一个块是128M。

6. 之前的64M 是从哪个版本变换的?

  • hadoop 1.0 默认是64M, hadoop 2.0 由64M 改为128M.

7. 那假设现在是128M,那我在工作中想把它调为256M,那我需要调整什么,才能改变块的大小?

  • 主要是磁盘的存储决定 块的大小,块组成的文件的大小取决于磁盘的传输速率,调整磁盘,可以改变块的大小。

8. Hdfs的读写过程你了解吗?简单讲讲?

  • 写过程:
    1、客户端跟NameNode 通信,请求上传文件,NameNode检查文件,父目录是否存在,并向客户端返回是否可以上传文件
    2、客户端请求第一个block块该上传到哪个DataNode服务器上,NameNode查询从节点之后,返回对应的DataNode 服务器A,B,C等。
    3、客户端请求NameNode服务器,采取就近原则,选择A服务器上传数据(本质上是个RPC调用,建立PipeLine),A收到请求后,A调B,B调C,将每个pipline建立连接,然后逐级返回给客户端
    4、客户端开始往A上传第一个block,以Package为单位,A收到一个Package,就会传给B,B传给C,A每传一个package就会放入一个应答队列,等待应答。
    5、当第一个block传输完成后,客户端再次请求NameNode上传第二个block。




  • 读过程:
    1、客户端通过DistributedFileSystem向NameNode请求下载文件,NameNode通过查询元数据,找到文件块所在的DataNode地址。
    2、挑选一台DataNode(就近原则,然后随机)服务器,请求读取数据。
    3、DataNode开始传输数据给客户端(从磁盘里面读取数据输入流,以Packet为单位来做校验)。
    4、客户端以Packet为单位接收,先在本地缓存,然后写入目标文件。



9. 说一下MapReduce的工作原理?

  • 原理:
    1、客户端启动一个job,然后向JobTracker请求一个jobID
    2、 然后将运行所需要的资源文件上传到HDFS上,包括MapReduce程序打包的jar包,配置文件,以及计算的输入划分信息等
    3、 这些文件全部存储在JobTracker专门创建的JobID文件夹中(jar文件会有10个副本,输入划分信息对应着JobTracker应该启动多少个Map任务)
    4、JobTracker将这些资源文件放入作业队列中,调度器根据调度算法对作业文件进行调度,根据输入划分信息划分Map任务并将map任务分配给TaskTracker执行。
    5、TaskTracker每隔一段时间发送给JobTracker一个心跳,告诉它自己的运行情况,这个心跳中包含map任务完成的进度等。
    6、当最后一个任务完成后,JobTracker会将该任务设为成功,返回给客户端。客户端得到结果,得知任务完成便显示消息给用户。





10. 你在具体讲一下map中的一些步骤,例如partition,sort,combiner,shuffle等等。

  • 好的,sort 主要是排序,combiner是合并,partition是分片等。
    首先Mapper根据文件进行分区,sort将Mapper产生的结果按照key进行排序,combiner将key相同的记录进行合并,partition是把数据均衡的分配个Reducer. shuffle是Mapper将结果传给Reduce,在这期间容易发生数据倾斜等。

11. 那这个数据倾斜一般是在Mapper端发生的还是Reduce中发生的?

  • Mapper将数据处理完传给Reduce,当Reduce进行处理时,因为一部分key的数据量过大,导致其他分区已经执行完成而数据量过大的key执行时间过长,所以数据倾斜是发生在Reduce端的。

12. 那发生数据倾斜是因为这个key分布不均匀,那你会怎么优化呢?

  • 可以在Mapper期间将大数据量相同的key进行分散,通过添加N以内的随机数前缀,对数据较多的Key进行子扩展,先进行局部操作,再去除随机数之后进行聚合操作,避免在进行Shuffle操作时出现数据倾斜问题。

13. 那Mapper端进行combiner之后,除了速度会提升,那从Mapper端到Reduce端的数据量会怎么变?

  • 数据量会减少,因为combiner之后,会将相同的key进行一次聚合,数据量会在这时候减少一部分

14. map 输出的数据如果超出他的那个小文件内存之后,那他是落地到磁盘还是落地到HDFS中?

  • 落地到磁盘中,因为map,reduce操作,就是一次次的I/O请求

15. Map到Reduce默认的分区机制是什么?

  • 这个是根据那个hash进行计算 对map中的key做hash,对reduce个数取模。

16. hadoop的调优主要针对配置文件的调优你知道哪几种?

  • 1、因为MapReduce运算时是在磁盘中进行的,所以 通过修改磁盘I/O,也就是设置和的预读缓冲区大小来提高hadoop里面大文件顺序读的性能。以此来提高I/O性能。
    2、通过修改三个配置文件的参数如 core-site.xml,mapred-site.xml,hdfs-site.xml等
    例如 修改core 文件里面的buffer.size,来修改读写缓冲区的大小,还有hdfs文件里面的block.size修改块的大小等都可以进行调优

17. 给你出个题,现在有1G的数据文件,里面有四个字段,分别是id,name,age,class,然后要按照class来分组,id来排序,口述一下MapReduce的过程是怎么实现的?这里面会有几个map?

  • 1、首先1G文件,那默认一个块是128M,所以可以分为8个块,对应的就是8个Mapper
    2、然后定义一个对象,将四个属性封装到对象中,实现序列化和反序列化
    3、定义一个类继承partitioner类,调用对象中的class属性设置分组,
    4、在map端对文件进行读取,然后通过Split来进行分割,调用对象的id作为key,然后进行局部sort排序,在combiner局部聚合后通过reduce来进行整体聚合。


18. 说说yarn吧,它有什么优势,能解决什么问题?

  • yarn集群主要分为主节点ResourceManage,从节点 NodeManage ResourceManage负责资源的分配,将集群的资源分配给各个应用使用,资源分配的基本单元是Container,NodeManage则是一个计算节点的管理者,负责启动应用的所需的Conbiner,并对内部资源进行监控等。yarn一般和mapreduce进行结合,主要是对MapReduce中的资源计算进行维护等。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/212398.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午8:08
下一篇 2026年3月18日 下午8:08


相关推荐

  • ssh公私钥登录方式设置

    ssh公私钥登录方式设置

    2022年1月30日
    48
  • 做10年Windows程序员与做10年Linux程序员的区别

    如果一个程序员从来没有在linux,unix下开发过程序,一直在windows下面开发程序,同样是工作10年,大部分情况下与在linux,unix下面开发10年的程序员水平会差别很大。我写这篇文章

    2021年12月27日
    38
  • pycharm 2021.11 激活码-激活码分享

    (pycharm 2021.11 激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html4M…

    2022年3月29日
    155
  • 运算放大电路在音频放大电路中的应用研究与实现「建议收藏」

    运算放大电路在音频放大电路中的应用研究与实现「建议收藏」1、导言放大电路是构成各种功能模拟电路的基础电路,也是对模拟信号最基本的处理。音频信号可以分解成若干频率的正玄波之和,其频率分为在20Hz~20KHz。不当的放大电路会造成音频信号的失真,亦会带来干扰和噪声。所有电子信息系统组成的原则都应包含:1、满足功能和性能要求,2、尽量简单,3、电磁兼容,4、调试应用简单。因此本文就来研究在不会增大电路复杂度的前提下,如何实现音频信号放大的同时对信号进…

    2022年5月29日
    37
  • 持久层(数据层,Dao层) MyBatis框架「建议收藏」

    持久层(数据层,Dao层) MyBatis框架「建议收藏」所谓的持久层就是把数据可以永久保持的存储到设备中,不像放到内存中那样断电就消失,一般来说,持久层为直接的理解就是对数据库的各种操作,如CRUD(增加,删除,修改,查询),更新等操作持久层,就是把持久

    2022年7月2日
    46
  • opencv行人检测python_19年赚钱新思路

    opencv行人检测python_19年赚钱新思路CVPR2019行人检测新思路:高级语义特征检测取得精度新突破原创: CV君 我爱计算机视觉 今天点击我爱计算机视觉置顶或标星,更快获取CVML新技术今天跟大家

    2022年8月5日
    13

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号