大数据(Hadoop)面试题及答案

声明:此文档由本人学习整理所做,答案由个人整理,所引部分已经标出出处,牛友们按需查看,文章难免有纰漏错误之处,望交流指正。
题目摘自牛客网:大数据面试题V3.0,约870篇牛客大数据面经480道面试题 发布者:蓦_然 ,在此表达感谢。

Hadoop基础

  1. 介绍下Hadoop

● Hadoop是什么

○ 1.Hadoop是一个由Apache基金会开发的分布式系统基础架构

○ 2.主要解决海量数据的存储和分析计算问题

○ 3.广义上来说,Hadoop通常指的是广泛的概念--Hadoop生态圈

  1. Hadoop的特点

● Hadoop的优势(4高)

○ 1.高可靠性:Hadoop底层维护多个数据副本,所以即使Hadoop某个计算或者存储节点出现故障,也不会导致数据的丢失。

○ 2.高拓展性:在集群之间分配任务数据,可以方便拓展数以千计的节点

○ 3.高效性:在MapReduce的思想下,Hadoop是并行工作的,加快了任务处理的速度。

○ 4.高容错性:能够自动将失败的任务重新分配。

  1. 说下Hadoop生态圈组件及其作用

● 大数据技术生态体系

○ 1)Sqoop:Sqoop 是一款开源的工具,主要用于在大数据框架(Hadoop、Hive 等)与传统的数据库(MySql) 间进行数据的传递,可以将一个关系型数据库中的数据导进到 Hadoop 的 HDFS 中,也可以将 HDFS 的数据导进到关系型数据库中。

○ 2)Flume:Flume 是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume 支持在日志系统中定制各类数据发送方,用于收集数据。

○ 3)Kafka:Kafka 是一种高吞吐量的分布式 发布/订阅消息系统;

○ 4)Spark:Spark 是当前非常流行的开源大数据内存计算框架。可以基于 Hadoop 上存储的大数据进行计算。

○ 5)Flink:Flink 是当前非常流行的开源大数据内存计算框架。用于实时计算的场景较多。

○ 6)Oozie:Oozie 是一个管理 Hdoop 作业(job)的工作流程调度管理系统。

○ 7)Hbase:HBase 是一个分布式的、面向列的开源数据库。HBase 不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。

○ 8)Hive:Hive 是基于 Hadoop 的一个 数据仓库工具,可以将结构化的数据文件映射为一张 数据库表,并提供简单的 SQL 查询功能。可以将 SQL 语句转换为 MapReduce 任务进行运行。

■ 其优点是学习成本低,可以通过类 SQL 语句快速实现简单的 MapReduce 统计,不必开发专门的 MapReduce 应用,十分适合数据仓库的统计分析。

○ 9)ZooKeeper:它是一个针对大型分布式系统的 可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。

  1. Hadoop主要分哪几个部分? 他们有什么作用?
    ● Hadoop1.x

    ○ MapReduce(计算+资源调度)

    ○ HDFS(数据存储)

    ○ Common(辅助工具)

● Hadoop2.x

○ MapReduce(计算)

○ HDFS(数据存储)

○ Yarn(资源调度)
5. Hadoop 1.x,2x,3.x 的区别
Hadoop1.x 的组成为:Common(辅助工具)、HDFS(数据存储)、MapReduce (计算+资源调度);

Hadoop2.x 的组成为:Common(辅助工具)、HDFS(数据存储)、MapReduce (计算)、Yarn (资源调度)

Hadoop3.x在组成上和Hadoop2.x没有任何区别

  1. Hadoop集群工作时启动哪些进程? 它们有什么作用?

● 一、HDFS 架构概述

○ 1、NameNode(NN):存储文件的元数据,如:文件名,文件目录结构,文件属性,以及每个文件的块列表和块所在的DataNode等

○ 2、DataNode(DN):在本地文件系统存储文件的块数据,以及块数据的校验和。

○ 3、Secondary NameNode(2NN):每隔一段时间对NameNode进行元数据的备份。

● 二、YARN 架构概述

○ 1、ResourceManager(RM):

■ 1.处理客户端的请求

■ 2.监控NodeManager

■ 3.启动或者监控ApplicationMaster

■ 4.资源分配和调度

○ 2、NodeManager(NM):

■ 1.管理单个节点上的资源

■ 2.处理来自ResourceManager的命令

■ 3.处理来自ApplicationManager的命令

○ 3、ApplicationMaster(AM):

■ 1.负责数据的切分

■ 2.为应用程序申请资源并分配内部的任务。

■ 3.任务的监控和容错

○ 4、Container:

■ YARN中资源的抽象,封装了本地节点的多维度资源。如:内存、CPU、磁盘、网络等

● 三、MapReduce 架构概述

○ MapReduce 将计算过程分为两个阶段:Map 和 Reduce

○ 1)Map 阶段并行处理输入数据

○ 2)Reduce 阶段对 Map 结果进行汇总

  1. 在集群计算的时候,什么是集群的主要瓶颈

● MapReduce的执行效率的瓶颈在于两点:

○ 1、计算机的性能

■ CPU、内存、磁盘健康、网络带宽

○ 2、I/O操作优化

■ 1、数据倾斜

■ 2、Map和Reduce数量设计的不合理

■ 3、Map运行的时间过长、导致Reduce等待时间过久

■ 4、小文件过多

■ 5、大量的不可切分的超大的压缩文件

■ 6、Spill次数过多(导致大量落盘操作)

■ 7、Merge次数过多
  1. 搭建Hadoop集群的xml文件有哪些?
    ● 2)配置文件说明

    ○ core-default.xml

    ○ hdfs-default.xml

    ○ yarn-default.xml

    ○ mapred-default.xml

  2. Hadoop的checkpoint流程

● 5.1 NN和2NN工作机制

○ 1、NameNode的元数据信息是通过Fsimage文件 + Edits编辑日志来维护的,当NameNode启动的时候Fsimage文件和Edits编辑日志的内容会被加载到内存中进行合并形成最新的元数据信息,当我们对元数据进行操作的时候,考虑到直接修改文件的低效性,从而不会直接修改Fsimage文件,而是会往Edits编辑日志文件中追加操作记录。

○ 2、当满足一定条件的时候 SecondaryNameNode会将Fsimage文件和 Edits 编辑日志文件的合并:SecondaryNameNode首先会让NameNode停止对正在使用的Edits编辑日志文件的使用,并重新生成一个新的Edits编辑日志文件。

○ 3、接着把NameNode 的 Fsimage文件和已停止的Edits文件拷贝到本地在内存中。将Edits编辑日志文件的操作记录合并到Fsimage 文件中形成一个最新的Fsimage文件,最后会将这个最新的Fsimage文件推送给NameNode并自己也备份一份。

  1. Hadoop的默认块大小是多少? 为什么要设置这么大?

● HDFS中的文件在物理上是分块存储(Block),块的大小可以通过配置参数(dfs.blocksize)来规定,默认的大小是128M。

● HDFS块大小设置与磁盘的传输速度紧密相关。寻址时间为传输时间的百分之一时,为最佳的状态。一般的寻址时间约为10ms,则传输时间约为1s,而目前磁盘的传输速度普遍为100MB/s,所以将Block的大小设置为128M最为合理,当然,随着磁盘的传输速度的提升,可以适当调整Block的大小。

  1. Block划分的原因

● Block划分的原因

○ (1)分布式存储大文件,可以动态调整集群的规模。

○ (2)容易对数据进行备份,提高容错能力

○ (3)使用抽象块概念而非整个文件作为存储单元,大大简化存储子系统的设计

  1. Hadoop常见的压缩算法?

● 1.3 压缩方式选择

○ 1.3.1 Gzip压缩

■ 优点:压缩率比较高,并且压缩/解压的速度比较快,(压缩率第二,解压缩速率倒数第二)

■ 缺点:不支持对文件Split(切分)

○ 1.3.2 Bzip2压缩

■ 优点:支持对文件进行Split;具有很高的压缩率,比Gzip压缩率都高(压缩率第一,解压缩速率倒数第一)

■ 缺点:压缩/解压速度慢

○ 1.3.3 Lzo压缩

■ 优点:合理的压缩率,压缩/解压速度比较快,支持Split,是Hadoop中最流行的压缩格式。

■ 缺点:压缩率比Gzip要低一些,Hadoop本身不支持,需要单独安装

○ 1.3.4 Snappy压缩

■ 优点:高速的压缩速度和合理的压缩率

■ 缺点:不支持Split,压缩率比Gzip要低,Hadoop本省也不支持,需要单独安装。
  1. Hadoop作业提交到YARN的流程?

● 1)作业提交

○ 第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。

○ 第2步:Client向RM申请一个作业id。

○ 第3步:RM给Client返回该job资源的提交路径和作业id。

○ 第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。

○ 第5步:Client提交完资源后,向RM申请运行ApplicationMaster。

  1. Hadoop的Combiner的作用

● 3.3.7 Combiner合并

○ 1)Combiner是MR程序汇总Mapper和Reducer之外的一种组件

○ 2)Combiner组件的父类就是Reducer

○ 3) Combiner和Reducer组件的区别局在于运行的位置

■ Combiner是在每一个MapTask所在的节点运行

■ Reducer是接受全局的所有Mapper的输出结果,然后进行运算。

○ 4)Combiner的意义就是对每一个MapTask的输出进行局部汇总,以减少网络传输量。

○ 5)Combiner能够应用的前提是不能影响最终的业务逻辑。

○ 自定义Combiner实现步骤:

■ 1.自定义一个Combiner并继承Reducer,重写Reduce方法

■ 2.在Job驱动中配置使用。
  1. Hadoop序列化和反序列化

● 什么是序列化?

○ 序列化就是把内存中的对象,转换成字节序列(或者其他的数据传输协议)以便于存储大到磁盘(持久化)或者网络传输。

○ 反序列化就是将收到的字节序列(或者其他的数据传输协议)或者磁盘的持久化数据,转换成内存中的对象。

  1. Hadoop的运行模式
    本地模式:(hadoop默认安装后启动就是本地模式,就是将来的数据存在Linux本地,并且运行MR程序的时候也是在本地机器上运行)

伪分布式模式:伪分布式其实就只在一台机器上启动HDFS集群,启动YARN集群,并且数据存在HDFS集群上,以及运行MR程序也是在YARN上运行,计算后的结果也是输出到HDFS上。本质上就是利用一台服务器中多个java进程去模拟多个服务

完全分布式:完全分布式其实就是多台机器上分别启动HDFS集群,启动YARN集群,并且数据存在HDFS集群上的以及运行MR程序也是在YARN上运行,计算后的结果也是输出到HDFS上。

  1. Hadoop小文件处理问题

● 2.4.1 Hadoop小文件弊端

○ 1、HDFS 上每个文件都要在 NameNode 上创建对应的元数据,这个元数据的大小约为150byte,这样当小文件比较多的时候,就会产生很多的元数据文件,一方面会大量占用NameNode 的内存空间,另一方面就是元数据文件过多,使得寻址索引速度变慢。

○ 2、小文件过多,在进行 MR 计算时,会生成过多切片,需要启动过多个 MapTask。每个MapTask 处理的数据量小,导致 MapTask 的处理时间比启动时间还小,白白消耗资源。

  1. Hadoop为什么要从1.x升级到2.x?

● 3.1 Hadoop2.x新特性

○ 3.1.1 集群间数据拷贝

■ 1)scp 实现两个远程主机之间的文件复制

■ 2)采用 distcp 命令实现两个 Hadoop 集群之间的递归数据复制

○ 3.1.2 小文件存档

■ HDFS存档文件或HAR文件是一个更高效的文件存档工具,能够将多个小文件打包成一个 HAR 文件,从而达到减少 NameNode 的内存使用。具体来说,HDFS存档文件对内还是多个独立文件 ,对NameNode而言却是一个整体,从而减少了NameNode的内存使用。

○ 3.1.3 回收站

■ 开启回收站的功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。

  ● 1、默认值fs.trash.interval = 0,0表示禁用回收站,其他值表示设置的存活时间。

  ● 2、默认值fs.trash.checkpoint.interval = 0 ,检查回收站的间隔时间,如果该值为0,则该值设置和fs.trash.interval的参数值相等

  ● 3、要求fs.trash.checkpoint.interval <= fs.trash.interval

    ○ 检查时间fs.trash.checkpoint.interval时间到,会检查回收站中的文件,删除达到存活时间的文件。
  1. Hadoop为什么要从2.x升级到3.x?

● 3.2 Hadoop3.x新特性

○ 3.2.1 多NN的HA架构

■ Hadoop3.x 允许用户运行多个备用 NameNode。

  ● 例如,通过配置三个 NameNode 和五个 JournalNode,群集能够容忍两个节点而不是一个节点的故障。

■ HDFS HA 功能通过配置 多个 Active/Standby 状态的 NameNodes 实现在集群中对 NameNode的热备来解决单点故障问题。

○ 3.2.2 纠删码

■ 纠删码(Erasure Coding)能够在不到 50% 的数据冗余情况下提供和 3 副本相同的容错能力,因此,使用纠删码作为副本机制的改进是自然而然的。

■ 缺点:副本策略牺牲空间,纠删码策略牺牲时间

■ 
  1. Hadoop的优缺点

● 2.4 Hadoop的优势(4高)

○ 1.高可靠性:Hadoop底层维护多个数据副本,所以即使Hadoop某个计算或者存储节点出现故障,也不会导致数据的丢失。

○ 2.高拓展性:在集群之间分配任务数据,可以方便拓展数以千计的节点

○ 3.高效性:在MapReduce的思想下,Hadoop是并行工作的,加快了任务处理的速度。

○ 4.高容错性:能够自动将失败的任务重新分配。

Hadoop的缺点
1、Hadoop不适用于低延迟数据访问。
2、Hadoop不能高效存储大量小文件。
3、Hadoop不支持多用户写入并任意修改文件。

#大数据开发实习##实习##笔试题目##求offer#
全部评论
感谢分享
点赞 回复 分享
发布于 2022-05-13 11:41
感谢分享
点赞 回复 分享
发布于 2022-06-02 08:03
感谢分享
点赞 回复 分享
发布于 2022-06-04 11:13
感谢分享
点赞 回复 分享
发布于 2022-06-27 18:40

相关推荐

评论
46
271
分享
牛客网
牛客企业服务