大数据开发面试题必备20题

问答题:

  1. HDFS的组织架构?

由HDFS Client、NameNode、DataNode和Scondary NameNode四部分组成

一个HDFS集群是由一个NameNode和一定数目的DataNode组成的。NameNode是一个中心服务器,负责管理文件系统的名字空间 (Namespace )及客户端对文件的访问

  1. HDFS 读写流程?

  1. 客户端向NameNode发出文件请求
  2. 检查是否存在文件,检查权限。通过检查直接先将操作写入EdiLog,返回输出流对象
  3. client端按128MB的快切分文件
  4. Client将NameNode返回的分配可写的DataNode列表和Data数据,发送给最近第一个DataNode节点,client端和NameNode分配给多个DataNode构成pieeline管道,client端向输出流对象中写的数据。Client每向第一个DataNode写入一个packet,直接在pipeline里传给第二....第三份。。DataNode.
  5. 每一个DataNode写完一个快,返回确认信息
  6. 写完数据,关闭输出流
  7. 发送信号给NameNode

  1. NameNode 在启动的时候会做哪些操作?

1首先启动端口号

  1. 开始加载镜像文件和编辑日志
  2. 创建RPC服务
  3. 对NameNode的资源进行检测
  4. 对DataNode的心跳进行校验
  5. 判断是都进去安全模式

  1. Secondary NameNode的工作机制?

  1. 通知NameNode准备提交edits文件,主节点将新的写操作数据记录到一个新的文件edits.new中
  2. 通过HTTP GET方式获取NameNode的fsimage与edits文件
  3. 合并获取上述两个文件,产生一个新的fsimage文件
  4. 用HTTP POST方式发送fsimage.ckpt至NameNode
  5. NameNode将fsiamege.ckpt与edits.new文件分别命名fsimage与edits,更新fstime,整个checkpoin过程到此结束

  1. Secondary NameNode 不能恢复 NameNode 的全部数据,那如何 保证 NameNode 数据存储安全?

一个NameNode有单节点故障问题,就配置双NameNode,两个关键点,必须要保证这两个NN 的元数据信息必须要同步,一个namenode挂掉之后另外一个要立马补上

  1. HDFS文件系统中小文件过多会有什么危害,如何避免?

危害:占用很大的内存甚至撑爆内存

  1. 生产上首先需要设置小文件的阈值,到达这个值对小文件进行合并。对于这个合并,一种是在HDFS存储之前就进行合并,还有一种就是计算完之后根据业务周期来进行合并。后一种需要在计算时格外对小文件进行调整
  2. 多Master设计,让元数据分散存放到不同的NameNode中。

  1. HDFS有哪些优化措施?

(1)在数据采集的时候,就将小文件或小批数据合成大文件再上传HDFS。

(2)在业务处理之前,在HDFS上使用MapReduce程序对小文件进行合并。

(3)在MapReduce处理时,可采用CombineTextInputFormat提高效率。

  1. yarn 集群的架构和工作原理?

架构:主要由ResourceManager、NodeManager、ApplicationMaster和Container构成

工作原理:1.Client向Yarn提交Application,这里我们假设是一个MapReduce作业。

ResourceManager向NodeManager通信,为该Application分配第一个容器。并在这个容器中运行这个应用程序对应的ApplicationMaster。

2.ApplicationMaster启动以后,对作业(也就是Application)进行拆分,拆分task出来,这些task可以运行在一个或多个容器中。然后向ResourceManager申请要运行程序的容器,并定时向ResourceManager发送心跳。

3.申请到容器后,ApplicationMaster会去和容器对应的NodeManager通信,而后将作业分发到对应的NodeManager中的容器去运行,这里会将拆分后的MapReduce进行分发,对应容器中运行的可能是Map任务,也可能是Reduce任务。

4.容器中运行的任务会向ApplicationMaster发送心跳,汇报自身情况。当程序运行完成后,ApplicationMaster再向ResourceManager注销并释放容器资源。

  1. yarn 的任务提交流程是怎样的?

1.Client向RM提交请求,上传jar包到HDFS上

2.RM在集群中选择一个NM,在其上启动AppMaster,在AppMaster中实例化SparkContext(Driver)

3.AppMaster向RM注册应用程序并申请资源。RM监控AppMaster的状态直到AppMaster结束。

4.AppMaster申请到资源后,与NM通信在Container中启动Executor进程

5.Executor向driver反向注册,申请任务

6.Driver对应用进行解析,最后将Task发送到Executor上

7.Executor中执行Task,并将执行结果或状态汇报给Driver

8.应用执行完毕,AppMaster通知RM注销应用,回收资源

  1. yarn 的资源调度机制有哪几种?

主要有三种:FIFO,Capacity Scheduler(容量调度器)和Fair Scheduler(公平调度器)。

  1. hive 内部表和外部表的区别?

1.内部表数据由Hive自身管理,外部表数据由HDFS管理;

2.内部表数据存储的位置是hive.metastore.warehouse.dir(默认:/user/hive/warehouse),

3外部表数据的存储位置由自己制定(如果没有LOCATION,Hive将在HDFS上的/user/hive/warehouse文件夹下以外部表的表名创建一个文件夹,并将属于这个表的数据存放在这里);

  1. hive有哪些优化措施?
  1. 慎重使用count
  2. 小文件会造成资源过度暂用以及影响查询效率
  3. 慎重使用select *
  4. 不要澡表关联后面加where条件
  5. 处理字段中带有空值的数据
  6. 设置病执行任务数
  7. 设置合理的Reducer个数
  8. JVM重用
  9. 为什么任务执行的时候只有一个reduce?
  10. 选择使用Tez引擎
  11. 选择本地模式
  12. 选怎使用严格模式

  1. HDFS 和 HBase 各自使用场景?

HDFS:GB、TB、甚至PB级数据

百万规模以上的文件数量

10K+节点规模

HBase:海量明细数据(十亿、百亿)的随时实时查询。如日志明细。交易清单,行为轨迹

  1. Hbase 的存储结构?

高可靠性、高性能、面向列、可伸缩

  1. Spark 与 MapReduce 相比,Spark 运行效率更高。 请说明效率更高来源于 Spark 内置的哪些机制?
  1. spark是基于内存进行数据处理的,MapReduce是基于磁盘进行数据处理的
  2. Spark容错性高,它通过弹性分布式数据集RDD来实现高效容错,RDD是一组分布式的存储在 节点内存中的只读性的数据集,这些集合石弹性的,某一部分丢失或者出错,可以通过整个数据集的计算流程的血缘关系来实现重建,mapreduce的容错只能重新计算
  1. Spark更通用,提供了transformation和action这两大类的多功能api,另外还有流式处理sparkstreaming模块、图计算等等,mapreduce只提供了map和reduce两种操作,流计算及其他的模块支持比较缺乏 。
  2. Spark框架和生态更为复杂,有RDD,血缘lineage、执行时的有向无环图DAG,stage划分等,很多时候spark作业都需要根据不同业务场景的需要进行调优以达到性能要求,mapreduce框架及其生态相对较为简单,对性能的要求也相对较弱,运行较为稳定,适合长期后台运行。
  3. Spark计算框架对内存的利用和运行的并行度比mapreduce高,Spark运行容器为executor,内部ThreadPool中线程运行一个Task,mapreduce在线程内部运行container,container容器分类为MapTask和ReduceTask.程序运行并行度高

6.Spark对于executor的优化,在JVM虚拟机的基础上对内存弹性利用:storage memory与Execution memory的弹性扩容,使得内存利用效率更高。

  1. hadoop 和 spark 使用场景?

Hadoop:1.分布式存储

  1. 日志处理
  2. 海量计算
  3. ETL:数据抽取到主流数据库中
  4. 使用hbase做数据分析
  5. 机器学习
  6. 搜索引擎
  7. 数据挖掘
  8. 大量从文件中顺序读
  9. 数据一次写入,多次读取
  10. 不进行本地缓存
  11. 用户细分特征建模
  12. 个性化广告推荐

Spark:用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习(Spark MLlib)和图计算(GraphX)。 这些不同类型的处理都可以在同一个应用中无缝使用

  1. RDD 机制是怎么样的?

RDD是一组分布式的存储在 节点内存中的只读性的数据集,这些集合石弹性的,某一部分丢失或者出错,可以通过整个数据集的计算流程的血缘关系来实现重建,

  1. Spark streaming 以及基本工作原理?

Spark core API的一种扩展,用于大规模、高吞吐量、容错的实时数据流处理

它支持从多种数据源读取数据,比如Kafka、Flume、Twitter和TCP Socket,并且能够使用算子比如map、reduce、join和window等来处理数据,处理后的数据可以保存到文件系统、数据库等存储中

原理:接受实时输入数据流,然后将数据拆分成batch,比如每收集一秒的数据封装成一个batch,然后将每个batch交给spark的计算引擎进行处理,最后会生产处一个结果数据流,其中的数据也是一个一个的batch组成的。

  1. spark 有哪些组件?

Master、worker、Driver、spark context、client

  1. spark 工作机制?

用户在client端提交作业后,会由Driver运行main方法并创建spark context上下文。执行add算子,形成dag图输入dagscheduler,按照add之间的依赖关系划分stage输入task scheduler。task scheduler会将stage划分为task set分发到各个节点的executor中执行。

  1. 什么是宽依赖和窄依赖?

宽依赖:

本质就是shuffle。父RDD的每一个partition中的数据,都可能会传输一部分到下一个子RDD的每一个partition中,此时会出现父RDD和子RDD的partition之间具有交互错综复杂的关系,这种情况就叫做两个RDD之间是宽依赖

窄依赖:

父RDD和子RDD的partition之间的对应关系是一对一的

  1. spark 解决了 hadoop 的哪些问题?

MR:抽象层次低,需要使用手工代码来完成程序编写,使用上难以上手;

Spark:Spark采用RDD计算模型,简单容易上手。

MR:只提供map和reduce两个操作,表达能力欠缺;

Spark:Spark采用更加丰富的算子模型,包括map、flatmap、groupbykey、reducebykey等;

MR:一个job只能包含map和reduce两个阶段,复杂的任务需要包含很多个job,这些job之间的管理以来需要开发者自己进行管理;

Spark:Spark中一个job可以包含多个转换操作,在调度时可以生成多个stage,而且如果多个map操作的分区不变,是可以放在同一个task里面去执行;

MR:中间结果存放在hdfs中;

Spark:Spark的中间结果一般存在内存中,只有当内存不够了,才会存入本地磁盘,而不是hdfs;

MR:只有等到所有的map task执行完毕后才能执行reduce task;

Spark:Spark中分区相同的转换构成流水线在一个task中执行,分区不同的需要进行shuffle操作,被划分成不同的stage需要等待前面的stage执行完才能执行。

MR:只适合batch批处理,时延高,对于交互式处理和实时处理支持不够;

Spark:Spark streaming可以将流拆成时间间隔的batch进行处理,实时计算。

  1. 数据倾斜的产生和解决办法?

数据倾斜以为着某一个或者某几个partition的数据特别大,导致这几个partition上的计算需要耗费相当长的时间。

在spark中同一个应用程序划分成多个stage,这些stage之间是串行执行的,而一个stage里面的多个task是可以并行执行,task数目由partition数目决定,如果一个partition的数目特别大,那么导致这个task执行时间很长,导致接下来的stage无法执行,从而导致整个job执行变慢。

避免数据倾斜,一般是要选用合适的key,或者自己定义相关的partitioner,通过加盐或者哈希值来拆分这些key,从而将这些数据分散到不同的partition去执行。

如下算子会导致shuffle操作,是导致数据倾斜可能发生的关键点所在:groupByKey;reduceByKey;aggregaByKey;join;cogroup;

  1. 为什么要使用 kafka?

  1. 采集数据什么Flume和kafka的区别?

缓冲和削峰:上游数据时有突发流量,下游可能扛不住,或者下游没有足够多的机器来保证冗余,kafka在中间可以起到一个缓冲的作用,把消息暂存在kafka中,下游服务就可以按照自己的节奏进行慢慢处理。

解耦和扩展性:项目开始的时候,并不能确定具体需求。消息队列可以作为一个接口层,解耦重要的业务流程。只需要遵守约定,针对数据编程即可获取扩展能力。

冗余:可以采用一对多的方式,一个生产者发布消息,可以被多个订阅topic的服务消费到,供多个毫无关联的业务使用。

健壮性:消息队列可以堆积请求,所以消费端业务即使短时间死掉,也不会影响主要业务的正常进行。

异步通信:很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们

单项选择题:

1、从 Vi 编辑模式下保存配置返回到 Centos7 系统使用(c)

A.按“shift”+“:”组合

B.按“Esc”键,然后按“shift”+“:”组合

C.按“Esc”键,然后按“shift”+“:”,输入wq 回车

D.直接输入“exit”

2、在 Centos7 系统中,查看和修改 IP 信息需要用到(b )文件

A. /etc/sysconfig/network/ifcfg-ens0

B. /etc/sysconfig/network-script/ifcfg-ens0

C. /etc/sysconfig /ifcfg-ens0

D. /etc/resolv.conf

3、tar 命令用于对文件进行打包压缩或解压,-t 参数含义(c )

A. 创建压缩文件

B. 解开压缩文件

C. 查看压缩包内有哪些文件

D.向压缩归档末尾追加文件

4、Hadoop 的安装部署的模式属于本地模式(a )

A. 默认的模式,无需运行任何守护进程(daemon),所有程序都在单个 JVM 上执行。

B. 在一台主机模拟多主机。即,Hadoop 的守护程序在本地计算机上运行,模拟集群环境,

并且是相互独立的Java 进程。

C. 完全分布模式的守护进程运行在由多台主机搭建的集群上,是真正的生产环境。

D.高容错全分布模式的守护进程运行在多台主机搭建的集群上

5、Hadoop 的安装部署的模式属于伪分布模式( b)

A. 默认的模式,无需运行任何守护进程(daemon),所有程序都在单个 JVM 上执行。

B. 在一台主机模拟多主机。即,Hadoop 的守护程序在本地计算机上运行,模拟集群环境,

并且是相互独立的Java 进程。

C. 完全分布模式的守护进程运行在由多台主机搭建的集群上,是真正的生产环境。

D.高容错全分布模式的守护进程运行在多台主机搭建的集群上

6、HDFS 默认 Block Size 的大小是(b/c )。

A.32MB B.64MB C.128MB D.256M

7、下列关于 MapReduce 说法不正确的是(a )

A. MapReduce 是一种计算框架

B. MapReduce 来源于 google 的学术论文

C. MapReduce 程序只能用 java 语言编写

D. MapReduce 隐藏了并行计算的细节,方便使用

8、HDFS 是基于流数据模式访问和处理超大文件的需求而开发的,具有高容错、高可靠性、

高可扩展性、高吞吐率等特征,适合的读写任务是 ( d)

A.一次写入,少次读

B.多次写入,少次读

C.多次写入,多次读

D.一次写入,多次读

9、关于 SecondaryNameNode 下面哪项是正确的(c )。

A. 它是 NameNode 的热备

B. 它对内存没有要求

C. 它的目的是帮助 NameNode 合并编辑日志,减少 NameNode 启动时间

D. SecondaryNameNode 应与 NameNode 部署到一个节点

10、大数据的特点不包括下面哪一项(d )。

A. 巨大的数据量

B. 多结构化数据

C. 增长速度快

D. 价值密度高

11、HBase 依赖_(a )存储底层数据

A. HDFS B. Hadoop C. Memory D. MapReduce

12、HBase 依赖(a )提供消息通信机制

A Zookeeper

B Chubby

C RPC

D Socket

13、flume 有哪个组件用于采集数据( a)

A. source

B. channel

C. sink

D. web server

14、启动 Hadoop HBase 之后,执行jps 命令,已经看到有 HMaster 的进程,但是进 入到监控界面查看,没有节点信息:

最有可能原因(c )

A. HADOOP 服务未启动

B. HBase 服务未启动

C. HBase 处于安全模式

D. HBase 服务未安装

15、关于 SecondaryNameNode 哪项是正确的?(c )

A. 它是 NameNode 的热备

B. 它对内存没有要求

C. 它的目的是帮助 NameNode 合并编辑日志,减少 NameNode 启动时间

D. 它是 NameNode 的热备,对内存有严格要求

16、关于 Hadoop 的运行机制过程顺序说法正确的是(a )

A. 作业提交--作业初始化--任务分配--任务的执行--任务进度和状态的更新--任务结束

B. 作业初始化--作业提交--任务分配--任务的执行--任务进度和状态的更新--任务结束

C. 任务分配--作业提交--作业初始化--任务的执行--任务进度和状态的更新--任务结束

D. 任务执行-作业提交--作业初始化--任务的分配--任务进度和状态的更新--任务结束

17、下面描述正确的是(bc )(多选)

A. HDFS 将数量众多的廉价机器使得硬件错误成为常态

B. HDFS 支持多种软硬件平台中的可移植性

C. HDFS 上的一个文件大小是G 或 T 数量级的,支持的文件数量达到千万数量级

D. HDFS 上的文件可以任意修改

18、YARN 服务组件包括(abcd )(多选)

A. NameManager

B. ApplicationMaster

C. Container

D. ResourceManager

19、下列属于 hadoop 的发行版本的是( ab)(多选)

A. Apache

B. Cloudera

C. Redhat

D. Centos

  • 10
    点赞
  • 131
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Hadoop是一个用于处理大规模数据的开源框架,它不仅是大数据技术的核心重点,也是面试中经常会问到的问之一。Hadoop包含了Hadoop框架本身以及Hadoop生态系统中的其他辅助框架,如zookeeper、Flume、Hbase、Hive、Sqoop等。在一个正常工作的Hadoop集群中,需要启动多个进程来完成不同的任务。这些进程包括: 1. NameNode:负责管理HDFS(Hadoop分布式文件系统)的元数据,如文件的目录结构和文件块的位置信息。 2. DataNode:负责存储实际的数据块,并向NameNode报告块的状态。 3. ResourceManager:负责管理集群上的资源分配和任务调度,协调不同应用程序之间的资源竞争。 4. NodeManager:负责管理每个节点上的资源,接收来自ResourceManager的指令,启动和监控容器,执行具体的任务。 5. SecondaryNameNode:定期从NameNode中复制元数据,用于恢复NameNode的故障。 6. JobTracker:负责任务调度和资源管理,监控任务的执行并重新调度失败的任务。 7. TaskTracker:在每个节点上运行,负责执行特定的任务,如Map任务或Reduce任务。 这些进程协同工作,以实现Hadoop集群的分布式计算和数据存储。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [大数据开发面试详解:Hadoop的运行原理](https://blog.csdn.net/xx666zz/article/details/85708344)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [2021最全大数据面试汇总---hadoop篇,附答案!](https://blog.csdn.net/weixin_45574790/article/details/119241157)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

㫪旧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值