草庐IT

Hadoop面试题及参考答案

zuolixiangfisher 2023-05-30 原文

目录

1、什么是Hadoop及其组件

Hadoop是一个开源分布式计算平台架构,基于apache协议发布,由java语言开发。主要包括

  • HDFS(分布式文件管理系统)
  • MapReduce(分布式计算框架)
  • Hive(基于Hadoop的数据仓库)
  • Pig(基于Hadoop的数据流系统)
  • HBase(一个分布式面向列的数据库)
  • Spark(快速和通用计算的Hadoop数据引擎)
  • ZooKeeper(分布式协作服务)

2、Hadoop的守护进程

  • NameNode(元数据服务器)
    主节点,存储文件的元数据(文件名,文件目录结构,文件属性——生成时间,副本数,文件权限),以及每个文件的块列表和块所在的DataNode等
  • SecondaryNameNode(辅助元数据服务器)
    用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据快照
  • DataNodes(块存储)
    在本地文件系统存储文件块数据,以及块数据校验
  • JobTracker(任务调度)
    负责接收用户提交的作业,负责启动、跟踪任务执行,每个 DataNode有一个TaskTracker,它们执行实际工作。
  • TaskTrackers(任务执行)
    负责执行由JobTracker分配的任务,管理各个任务在每个节点的执行情况。

3、Hadoop的YARN/HDFS/MapReduce分别包含哪些组件,每个组件的职能是什么?

3.1 YARN:Yet Another Resource Negotiator,是一种新的Hadoop资源管理器

  • ReasourManager
    负责资源管理的,整个系统有且只有一个 RM ,来负责资源的调度。它也包含了两个主要的组件:定时调用器(Scheduler)以及应用管理器(ApplicationManager)。
  • ApplicationMaster
    每当 Client 提交一个 Application 时候,就会新建一个 ApplicationMaster 。由这个 ApplicationMaster 去与 ResourceManager 申请容器资源,获得资源后会将要运行的程序发送到容器上启动,然后进行分布式计算。
  • NodeManager
    NodeManager 是 ResourceManager 在每台机器的上代理,负责容器的管理,并监控他们的资源使用情况(cpu,内存,磁盘及网络等),以及向ResourceManager/Scheduler 提供这些资源使用报告。
  • Container
    Container是YARN集群中资源的抽象,将NM上的资源进行量化,根据需要组装成一个个Container,然后服务于已授权资源的计算任务。计算任务在完成计算后,系统会回收资源,以供后续计算任务申请使用。Container包含两种资源:内存和CPU,后续Hadoop版本可能会增加硬盘、网络等资源。

3.2 HDFS:分布式文件管理系统

  • NameNode
  • SecondaryNameNode
  • DataNode

3.3 MapReduce:分布式计算框架,采用Master/Slave架构,1个JobTracker带多个TaskTracker

  • JobTracker
  • TaskTracker
  • MapTask
  • ReduceTask

4、一个MapReduce任务在提交阶段是如何对输入数据进行分片划分的?

通过InputSplit()函数来处理,设置分片数量为Math.max(minSize,Math.min(goalSize, blockSize)),一个数据片分配一个map任务。

5、MapReduce里的Combiner是做什么用的?什么情况下需要,和Reduce的区别是什么?

Combiner主要是在map完成后,reducer之前对数据做一次聚合,以减少数据传输的IO开销。
数据格式转换

  • map: (K1, V1) → list(K2, V2)
  • combine: (K2, list(V2)) → list(K2, V2)
  • reduce: (K2, list(V2)) → list(K3, V3)
    注意:combine的输入和reduce的完全一致,输出和map的完全一致

Combiner和Reducer的区别在于运行的位置
Combiner是在每一个MapTask所在的节点运行;
Reducer是接收全局所有Mapper的输出结果;

6、MapReduce的Shuffle过程包含了哪几个阶段,分别做了什么工作?Shuffle的数据量是由什么决定的?

  • map端shuffle
    1、split,将文件切片
    2、partition,得到key,value形式的结果
    3、写入环形内存缓冲区
    4、spill,执行溢出写
    5、归并

  • reduce端shuffle
    1、复制copy
    2、归并merge
    3、reduce

7、什么是推测机制,它是如何解决计算慢节点问题的?

当一个task被认定很慢后,JobTracker会起一个新的task attempt来双跑,取最先完成的task的结果,本文记录下Hadoop中是如何判断一个task需要起speculative task的。

8、HDFS是如何实现容错机制的?如果NameNode挂了会怎么样,DataNode挂了会怎么样?

  • HDFS 通过复制进程来保证容错机制。在文件写入 HDFS 时,HDFS 会首先把文件分割成块,并把这些数据块存储在集群不同机器上,然后在其他机器创建各个块的副本,默认情况下,HDFS 会在其他机器创建3个文件的副本。
  • NameNode挂了
    使用文件系统元数据副本(FsImage)启动一个新的 NameNode。
    然后,配置 DataNode 和客户端,以便它们可以确认这个新的 NameNode,即启动。
    现在,新的 NameNode 将在完成加载最后一个检查点 FsImage(用于元数据信息)并从 DataNode 接收到足够的块报告后开始为客户端提供服务。
  • DataNode挂了
    NameNode 定期从集群中的每个 DataNode 接收心跳(信号),这意味着 DataNode 运行正常。
    块报告包含 DataNode 上所有块的列表。如果一个 DataNode 发送心跳消息失败,则在特定时间段后将其标记为死亡。
    NameNode 使用之前创建的副本将死节点的块复制到另一个 DataNode

9、HDFS的一次读数据请求经历了怎样的过程?一次写请求经历了怎样的过程?

  • 写数据请求
    1、客户端通过Distributed FileSystem模块向NameNode请求上传文件;
    2、NameNode检查是否已存在文件和检查权限。若通过检查,直接先将操作写入EditLog,并返回输出流对象;
    3、客户端按照配置参数(dfs.blocksize,比如128MB)的大小将文件切分为块(Block),并向NameNode请求上传第一个Block;
    4、NameNode返回分配的可写的DataNode列表,比如dn1、dn2、dn3;
    5、客户端通过FSDataOutputStream模块向dn1请求上传数据,dn1收到请求会继续调用dn2,然后dn2调用dn3,将这个通信管道pipeline建 立完成;
    6、dn1、dn2、dn3逐级应答客户端;
    7、客户端开始往dn1上传第一个Block(先从磁盘读取数据放到一个本地内存缓存),以Packet为单位,dn1收到一个Packet就会传给dn2,dn2传给dn3;dn1每传一个packet会放入一个应答队列等待应答;(注:并不是每写完一个packet后就返回确认信息,因为packet中的每个chunk都携带校验信息,没必要每写一个就汇报一下,这样效率太慢。正确的做法是写完一个block块后对校验信息进行汇总分析,进而得出是否有块写错的情况发生)
    8、当一个Block传输完成之后,客户端再次请求NameNode上传第二个Block的服务器。(重复执行3-7步);
    9、写完数据,关闭输出流。

  • 读数据请求
    1、客户端通过Distributed FileSystem向NameNode请求下载文件,NameNode通过查询元数据获得这个文件的数据块位置列表,返回输入流对象;
    2、挑选一台DataNode(就近原则,然后随机)服务器,请求读取数据;
    3、DataNode开始传输数据给客户端(从磁盘里面读取数据输入流,以Packet为单位来做校验);
    4、客户端以Packet为单位接收,先在本地缓存,然后写入目标文件;
    5、写完数据,关闭输入流。

10、YARN的产生解决了什么样的调度问题?

Hadoop 由MapReduce和HDFS组成,1.x版本设计缺陷是单点故障,即MR的JobTracker和HDFS的NameNode两个核心服务均存在单点问题,这使得Hadoop在相当长时间内仅适合离线存储和离线计算。

Hadoop 2.0由三个分支组成,分别是HDFS、MapReduce和YARN,YARN是Hadoop 2.x中的资源管理系统,它是一个通用的资源管理模块,可为各类应用程序进行资源管理和调度。YARN不仅限于MapReduce一种框架使用,也可以供其他框架使用,Spark、Storm等。
Yarn的作用:解耦资源与计算

11、YARN是如何做计算资源的调度的,有哪些策略?

  • FIFO:先到先得
  • Capacity:给小任务单独一份计算资源
  • Fair:平均分配

有关Hadoop面试题及参考答案的更多相关文章

  1. hadoop安装之保姆级教程(二)之YARN的配置 - 2

    1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模

  2. Hive SQL 五大经典面试题 - 2

    目录第1题连续问题分析:解法:第2题分组问题分析:解法:第3题间隔连续问题分析:解法:第4题打折日期交叉问题分析:解法:第5题同时在线问题分析:解法:第1题连续问题如下数据为蚂蚁森林中用户领取的减少碳排放量iddtlowcarbon10012021-12-1212310022021-12-124510012021-12-134310012021-12-134510012021-12-132310022021-12-144510012021-12-1423010022021-12-154510012021-12-1523.......找出连续3天及以上减少碳排放量在100以上的用户分析:遇到这类

  3. 蓝桥杯C/C++VIP试题每日一练之报时助手 - 2

    ?作者主页:静Yu?简介:CSDN全栈优质创作者、华为云享专家、阿里云社区博客专家,前端知识交流社区创建者?社区地址:前端知识交流社区?博主的个人博客:静Yu的个人博客?博主的个人笔记本:前端面试题个人笔记本只记录前端领域的面试题目,项目总结,面试技巧等等。接下来会更新蓝桥杯官方系统基础练习的VIP试题,依然包括解题思路,源代码等等。问题描述:给定当前的时间,请用英文的读法将它读出来。时间用时h和分m表示,在英文的读法中,读一个时间的方法是:  如果m为0,则将时读出来,然后加上“o’clock”,如3:00读作“threeo’clock”。  如果m不为0,则将时读出来,然后将分读出来,如5

  4. 大数据之Hadoop数据仓库Hive - 2

    目录:一、简介二、HQL的执行流程三、索引四、索引案例五、Hive常用DDL操作六、Hive常用DML操作七、查询结果插入到表八、更新和删除操作九、查询结果写出到文件系统十、HiveCLI和Beeline命令行的基本使用十一、Hive配置一、简介Hive是一个构建在Hadoop之上的数据仓库,它可以将结构化的数据文件映射成表,并提供类SQL查询功能,用于查询的SQL语句会被转化为MapReduce作业,然后提交到Hadoop上运行。特点:简单、容易上手(提供了类似sql的查询语言hql),使得精通sql但是不了解Java编程的人也能很好地进行大数据分析;灵活性高,可以自定义用户函数(UDF)和

  5. ruby - Ruby 1.8.7 中的求幂返回错误答案 - 2

    我在irb中尝试计算3**557时遇到了这个问题。Ruby和MacRuby都安装在我的Mac(OSX10.8)中。而ruby的版本是1.8.7,MacRuby0.12(ruby1.9.2)。rib和macirb在计算3**557时给了我两个不同的答案。(macirb是对的。)$irb>>3**557=>547557021793427620635514407889455410079268087653269511938101071654296104237032917607402447243260999931319131042725875729185204428725368897246765

  6. 华为OD机试 -旋转骰子(Python) | 机试题算法思路 【2023】 - 2

    最近更新的博客华为OD机试-卡片组成的最大数字(Python)|机试题算法思路华为OD机试-网上商城优惠活动(一)(Python)|机试题算法思路华为OD机试-统计匹配的二元组个数(Python)|机试题算法思路华为OD机试-找到它(Python)|机试题算法思路华为OD机试-九宫格按键输入(Python)|机试算法备考思路华为OD机试-身高排序(Python)|备考思路使用说明参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。华为OD清单查看地址:blog.csdn.net/hihell/catego

  7. Ubuntu下Hadoop的单机安装 - 2

            云计算实验中要求我们在Linux系统安装Hadoop,故来做一个简单的记录。· 注:我的操作系统环境是Ubuntu-20.04.3,安装的JDK版本为jdk1.8.0_301,安装的Hadoop版本为hadoop2.7.1。(不确定其他版本是否会出现版本兼容问题)Hadoop安装步骤如下:        一、更新apt和安装vim编辑器        二、配置本机无密码登录SSH        三、安装JAVA环境        四、下载安装Hadoop        五、伪分布式搭建一、更新apt和安装vim编辑器1、更新aptsudoapt-getupdate2、安装vim

  8. Ruby Koans #75 test_constants_become_symbols,正确答案? - 2

    我的问题基于这个问题:RubyKoan:Constantsbecomesymbols.我有以下代码:in_ruby_version("mri")doRubyConstant="Whatisthesoundofonehandclapping?"deftest_constants_become_symbolsall_symbols=Symbol.all_symbolsassert_equal__,all_symbols.include?(__)endend正确答案应该是下面的吗?assert_equaltrue,all_symbols.include?("RubyConstant".to_

  9. 网络安全岗位面试题 - 2

    前言介绍了网络安全岗位常见的面试题,仅供参考!一、常识部分1.Linux服务器种用户关键信息存储在那个文件中?启动、停止、重启、开机自启mysql服务命令?如何查找/etc/test.txt文件中"password"关键字信息?如何精确查找80端口?/etc/passwdsystemctlstartmysqld或systemmysqldstart 启动systemctlstopmysqld或systemmysqldstop 停止systemctlrestartmysqld或systemmysqldrestart 重启systemctlenablemysqld或systemmysqldenabl

  10. MAC系统安装Hadoop - 2

    一、设置免密登录1、系统偏好设置-----共享----勾选远程登录,所有用户2、打开终端,输入命令ssh-keygen-trsa,一直回车即可2.查看生成的公钥和私钥    cd~/.ssh    ls会看到~/.ssh目录下有两个文件:①私钥:id_rsa②公钥:id_rsa.pub3.将公钥内容写入到~/.ssh/authorized_keys中    cat~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys4.测试在terminal终端输入 sshlocalhost如果出现以下询问输入yes,不需要输入密码就能登录,说明配置成功Areyousureyouw

随机推荐