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中的资源计算进行维护等。

hadoop面试题汇总相关推荐

  1. Hadoop面试题汇总-20221031

    Hadoop面试题汇总 HDFS部分 1.请描述HDFS的写流程. 答: 首先由客户端向 NameNode 发起文件上传请求,NameNode 检查文件要上传的目录,并鉴权. 如果上传用户对此目录有权 ...

  2. 2021最全大数据面试题汇总---hadoop篇,附答案!

    大数据面试题来了! 本篇文章搜集了常见的大数据面试题以及答案,包含了Hadoop,Flume,Hbase,Hive,kafka,spark,zookeeper等方面的内容,助同学们收到心仪的Offer ...

  3. hadoop+海量数据面试题汇总(一)

    hadoop面试题 Q1. Name the most common InputFormats defined in Hadoop? Which one is default ? Following  ...

  4. 阿里巴巴历年经典面试题汇总:Java岗

    这个系列计划收集几百份朋友和读者的面经,作者合集方便查看,各位有面经屯着可以联系我哦 本系列历史文章: 学姐百度实习面经 学姐,来挑战字节最牛部门 最强阿里巴巴历年经典面试题汇总:C++研发岗 关于我 ...

  5. Hadoop面试题 (网上收集版带答案)

    1.列出安装Hadoop流程步骤 a) 创建hadoop账号 b) 更改ip c) 安装Java 更改/etc/profile 配置环境变量 d) 修改host文件域名 e) 安装ssh 配置无密码登 ...

  6. 运维攻城狮面试题汇总

    面试题汇总 什么是运维?什么是游戏运维? 1)运维是指大型组织已经建立好的网络软硬件的维护,就是要保证业务的上线与运作的正常,在他运转的过程中,对他进行维护,他集合了网络.系统.数据库.开发.安全.监 ...

  7. 常见大数据面试题汇总带答案

    大数据面试题汇总 **牛客网刷sql题** redis flume flink(大部分知识点写过的帖子里都有) mr,java ,集群 算法题 kafka 维度建模分为哪几种? SQL高频面试题 hb ...

  8. 深圳公司大数据面试题汇总

    点击上方 "大数据肌肉猿"关注, 星标一起成长 后台回复[加群],进入高质量学习交流群 2021年大数据肌肉猿公众号奖励制度 相关阅读: 上海小公司大数据面试题汇总 背景 本文为# ...

  9. Java经典面试题汇总200道

    超详细的Java学习资料汇总 Java经典面试题汇总 Java 基础 1. JDK 和 JRE 有什么区别? 2. == 和 equals 的区别是什么? 3. 两个对象的 hashCode()相同, ...

  10. spark 面试题汇总

    大数据面试题汇总 大数据面试题汇总 - 简书 spark 资源调优 1.列式存储和行式存储的区别 行存储,数据行存储,一个文件可表达一个二维表.适用于一般的业务场景如CSV文件,文本文件 因为这里的行 ...

最新文章

  1. java在jsp中判断td的值是1还是2_Snap7,Eel与S71200简单组态1
  2. DB2 导入导出总结
  3. python opencv图片旋转180度_Python opencv图像镜像翻转
  4. Asp.Net MVC4下设置W3P3(IIS)调试步骤
  5. VTK:几何对象之Tetrahedron
  6. phing用户手册第四章Getting Started译文
  7. 更改应用程序图标_在 Windows 10 version 1903 中查看应用程序是否支持 DPI 感知
  8. 网络适配器本地连接没有有效ip地址配置错误的解决办法
  9. 视频质量,分辨率,码率之间的关系 2
  10. phpMyAdmin view_create.php 跨站脚本漏洞
  11. java jdbc 参数 转义_jdbc URL中的各个参数详解
  12. javaweb实现学生管理系统
  13. Python 实例教程100例
  14. java jersey使用总结_Java Jersey2使用总结
  15. 亚马逊将为语音助手研发AI芯片 欲追赶苹果
  16. 电脑蓝牙无法搜索到其它蓝牙设备
  17. 心态-《生活的艺术》书中的精髓:中国人享受生活,所以有着独特的生活的艺术,享受生活首先要有闲暇时光,也要去感受生活,才会体验到生活的乐趣
  18. 深圳大学数学文化赏析MOOC答案
  19. 超详细零信任市场解读
  20. 第十一讲 免费空间申请

热门文章

  1. Matlab R2017的下载与安装详细教程以及软件的学习资源
  2. Android AAB增量安装
  3. 利用excel内的doi和python批量下载外文文献
  4. 专利进阶(一):软件专利工程师浅谈如何针对计算机软件类专利申请进行技术挖掘
  5. HART转PROFIBUS DP(V0)+RS485方法
  6. Java数组之冒泡排序
  7. 【OR】YALMIP安装及使用
  8. ffplay源码编译
  9. linux dstat rpm,dstat监控工具介绍
  10. 基于JSP和MYSQL数据库实现的请假管理系统