Hadoop精选18道面试题(附回答思路)

news2024/9/28 13:27:57

1.简述Hadoop1和Hadoop2的架构异同

HDFS HA(High Availablity)
	一旦Active节点出现故障,就可以立即切换到Standby节点,避免了单点故障问题。
	加入了对zookeeper支持实现比较可靠的高可用。
	
YARN
	将MapReduce1.0中的资源管理调度功能分离出来形成了YARN,一个纯粹的资源任务管理调度框架,避免了内存受限问题。

2.简述HDFS

Hadoop分布式文件系统

文件系统
	目录树定位文件
	
分布式
	数据大,要拆,要分,再存。
	"拆":block 128M
	"分":编号,找namenode,分配
	"存":传完第一份后内网互传
		  副本机制,一式三份
		  均衡

3.Hadoop生态系统与Hadoop框架

Hadoop生态系统除Hadoop之外,还包含zookeeper、Flume、Hbase、Hive、Sqoop等辅助框架

4.Hadoop核心组件(定义+组成+优点(思想))

HDFS 分布式文件系统 提供高吞吐量的数据访问和存储,特别适合大数据集的分布式存储。
	 NameNode*2(Active|Standby)+DataNode*N
	 具有高容错性 支持流式访问
	 
MapReduce 分布式计算框架 用于大规模数据集的并行处理
	 Map+Shuffle+Reduce
	 分而治之 构造抽象模型
	 
YARN 分布式资源管理系统 负责任务调度和集群资源管理
	 ResourceManager & ApplicationManager
		NodeManager
HDFS角色
	 NameNode,DataNode,SecondaryNameNode
Hadoop架构
	 HDFS——分布式文件系统
	 MapReduce——分布式计算框架
	 YARN——分布式资源管理系统
	 Commons

5.Block大小

如果一个文件小于128M,它只占用文件本身大小的空间,其它空间别的文件也能用。
Block大小设置主要取决于磁盘传输速率。
(把文件分为N块,读取文件时就要寻址N次)

6.NameNode与SecondaryNameNode的区别与联系

区别
1)NameNode存储了文件系统下所有目录和文件的访问,修改,执行时间,块大小,执行权限等
2)SecondaryNameNode并非NameNode的热备(≠ StandBy NameNode)。定期触发CheckPoint(服务),代替NameNode合并EditLog和fsimage文件。

联系
1)SecondaryNameNode中保存了一份和NameNode一致的fsimage和edits文件。但是,NameNode还有一份正在使用的编辑日志edit_inporgress,这是SecondaryNameNode没有的。
2)在主namenode发生故障时(假设没有及时备份数据),可以从SecondaryNameNode恢复历史的数据。

7.SecondaryNameNode的目的是什么

SecondaryNameNode定期触发CheckPoint,代表NameNode合并编辑日志EditLog和镜像文件Fsimage,从而减小EditLog的大小,减少NN启动时间。
同时在合并期间,NameNode也可以对外提供写操作。

8.HDFS的读/写数据流程

HDFS的写(上传)数据流程

在这里插入图片描述

1)HDFS client创建DFS对象,通过该对象向NameNode请求上传文件,NameNode检查权限,并判断该目标文件是否已存在。
2)如果权限许可,目标文件也存在,NameNode响应请求。
3)客户端请求第一个Block上传到哪几台DataNode服务器上。
4)NameNode返回3个DataNode结点
5)HDFS client创建FS DataOutputStream数据流对象,请求dn1建立传输通道,dn1接收到请求之后会继续调用dn2建立通道…
6)传输通道建立完成之后,dn1,dn2,dn3逐级应答客户端。
7)客户端开始往dn1上传第一个Block,dn1利用通道传向dn2,dn2利用通道传向dn3…(直到传到Block副本应在的位置停止)
8)当一个Block传输完成之后,客户端再次请求NameNode上传第二个Block到服务器。(重复3-7步)

HDFS的读数据流程

在这里插入图片描述

1)HDFS client创建DFS对象,该对象向NameNode请求下载文件,NameNode通过查询元数据,找到文件块所在的DataNode地址。
2)挑选一台DataNode(要考虑结点距离最近选择原则,DataNode负载均衡)服务器,请求读取数据。
3)数据从DataNode传到客户端,如果在传输过程中出现宕机,才会考虑向含有该副本的其他节点获取数据。
4)客户端接收,写在本地缓存,然后写入目标文件。

9.请简述DataNode的工作机制

1)一个数据块在DataNode上以文件的形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据的校验信息。
2)DataNode 启动后向 NameNode 注册,之后周期性(默认 6 小时)的向 NameNode 上报所有的块信息。同时,DN 扫描自己节点块信息列表的时间,检查DN中的块是否完好,如果某块磁盘损坏,就将该块磁盘上存储的所有 BlockID报告给NameNode。
3)心跳是每 3 秒一次,心跳返回结果带有 NameNode 给该 DataNode 的命令如复制块数据到另一台机器,或删除某个数据块。 如果超过 10 分钟 + 30s 没有收到某个 DataNode 的心跳,则认为该节点不可用。

10.如果数据误删,如何抢救?

1.立即关闭Hadoop服务
2.打开edit_log文件,删除未发送的心跳包的命令

11.如何理解Hadoop中的数据倾斜现象?

A.可能因为HDFS的存储不均衡:可能的原因是后扩展了集群的几台机器
B.使用默认的HashPartitoner
C.输入数据中不均匀的键分布
解决方法:执行 /opt/software/hadoop-3.1.3/sbin/start-balancer.sh

12.Namenode和Datanode的心跳机制:

心跳是datanode向namenode发送的小数据包,表明它是活跃的。默认情况下,
每3秒datanode就会向namenode发送一次心跳信号。如果namenode在10分钟内
没有收到任何datanode的心跳,它会将该datanode标记为“死亡”,并开始数据
的复制过程,将其复制到其他datanode,以保持数据的冗余和可靠性。

13.Safe Mode

Safe Mode是HDFS的一种状态,在此状态下,系统处于只读模式,不会进行数据块的复制或删除。
这通常用于系统维护或故障恢复。
管理员可以使用命令"hdfs dfsadmin -safemode enter"进入安全模式,"hdfs dfsadmin -safemode leave"退出安全模式,而"hdfs dfsadmin -safemode get"则用来查询系统是否处于安全模式。

14.Hadoop启动流程

首先,启动HDFS,通常包括启动namenodes,datanodes和secondary namenodes。
其次,启动YARN的资源管理器和节点管理器。
最后,如果在集群中运行MapReduce作业,则还需要启动MapReduce的历史服务器。

15.如何检查?

检查服务:jps
检查路径:
cd /opt/software/hadoop-3.1.3/logs/hadoop-root-namenode-single.log
检查端口:netstat -anutp | grep 9870
检查安全模式:hdfs dfsadmin -safemode get
重启服务

16.YARN的组成架构

ResourceManager,NodeManager,ApplicationMaster,Container

ResourceManager
	全局资源管理调度分配
	ResourceScheduler
		全局资源的调度与分配
	ApplicationManager
		接收客户端请求,监控NodeManager,启动和监控ApplicationMaster,必要时进行重启。
		
NodeManager
	管理节点的资源与任务
	定时向RM汇报节点的资源使用情况和容器运行情况
	接受来自RM的开启或关闭Container的指令
	接受来自AM分配MapTask|ReduceTask的指令
	
ApplicationMaster
	负责整个应用程序
	负责数据切片
	向RM申请资源
	分配MapTask|ReduceTask,启动或停止Container中的task
	容错
Container
	资源封装(CPU|DISK|MEM)
	虚拟机

17.YARN的工作原理

在这里插入图片描述

18.Hadoop HA的整体架构

1.主备NameNode
2.主备控制转换器ZKFC
3.Zookeeper
4.JournalNodes
5.DataNode

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1363800.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mac/Window 如何下载安装 Pycharm 2023

文章目录 1. 下载 Pycharm2. jiebra 工具下载3. jiebra 工具安装3.1 Window 端3.2 Mac 端 1. 下载 Pycharm Pycharm 下载官网,可以下载的是最新版的 Pycharm,但不保证可以jihuo; 如果需要保证可用的,建议直接下载资源&#xff…

@Transactional 注解的12种失效场景

请直接看原文: 原文链接:啪!啪!Transactional 注解的12种失效场景,这坑我踩个遍-腾讯云开发者社区-腾讯云 (tencent.com) ------------------------------------------------------------------------------------------------------------…

C++完成Query执行sql语句的接口封装和测试

1、在LXMysql.h 创建Query执行函数 //封装 执行sql语句 if sqllen 0 strlen获取字符长度bool Query(const char*sql,unsigned long sqllen0); 2、在LXMysql.cpp编写函数 bool LXMysql::Query(const char* sql, unsigned long sqllen){if (!mysql)//如果mysql没有初始化好{c…

功能强大且易于使用的视频转换软件—Avdshare Video Converter for Mac/win

在当今的数字时代,我们的生活离不开各种形式的媒体娱乐,而视频内容无疑是其中最为受欢迎的一种。然而,我们常常会遇到一些问题,比如我们在电脑上下载的视频无法在手机上播放,或是我们想将视频转换为其他格式以适应不同…

.NetCore部署微服务(一)

目录 前言 什么是微服务 微服务的优势 微服务的原则 创建项目 在Docker中运行服务 客户端调用 简单的集群服务 前言 写这篇文章旨在用最简单的代码阐述一下微服务 什么是微服务 微服务描述了从单独可部署的服务构建分布式应用程序的体系结构流程,同时这些…

【Linux】之搭建 PostgreSQL 环境

前言 在 Linux 系统下安装 PostgreSQL,可以选择快捷方便的 Docker 安装,但正常的服务器都是直接原生安装的,所以,这里我将讲解如何正常安装 PostgreSQL 以及安装之后的一些配置。如果想了解 Docker 安装的话,可以查看我…

二叉树的经典算法(算法村第八关青铜挑战)

二叉树里的双指针 所谓的双指针就是定义了两个变量,在二叉树中有需要至少定义两个变量才能解决问题。这两个指针可能针对一棵树,也可能针对两棵树,姑且也称之为“双指针”。这些问题一般与对称、反转和合并等类型题相关。 判断两棵树是否相…

004-Zynq实现SD卡存储灰度图片(彩色图片存储正点已开源)

文章目录 前言一、为什么参考ov7725照相机实验存储不了灰度?二、SD卡实现步骤1.配置Zynq核中的SD卡接口2.PS端勾选xilffs3.PS端代码4.读卡器读取SD卡结果呈现 总结 前言 最近在弄SD卡存储灰度图片,参考了正点原子的OV7725照相机实验,但发现最…

网安入门09-Sql注入(绕过方法梳理)

ByPass SQL注入ByPass是指攻击者通过各种手段绕过应用程序中已经实施的SQL注入防御措施,例如输入恶意数据、修改请求头等方式,绕过过滤、转义、限制等操作,从而成功地执行恶意SQL语句。攻击者使用SQL注入ByPass技术可以让应用程序的防御措施…

为什么Java中“1000==1000”为false,而”100==100“为true?

大家好,我是可乐。 在日常编程中,我们经常遇到一些看似简单却隐藏着复杂逻辑的问题。 比如,你是否想过为什么在 Java 中表达式10001000会返回 false,而 100100 却返回 true 呢? Integer a 100; Integer b 100; Sy…

王国维的人生三境界,这一生至少当一次傻瓜

一、人生三境界 古今之成大事业、大学问者,必经过三种之境界。“昨夜西风凋碧树,独上高楼,望尽天涯路。”此第一境也。“衣带渐宽终不悔,为伊消得人憔悴。”此第二境也。“众里寻他千百度,蓦然回首,那人却…

双向数据绑定详细解析(超详细)

文章目录 一、什么是双向绑定二、双向绑定的原理是什么理解ViewModel 三、实现双向绑定实现编译Compile依赖收集 参考文献 一、什么是双向绑定 我们先从单向绑定切入单向绑定非常简单,就是把Model绑定到View,当我们用JavaScript代码更新Model时&#xf…

永磁同步电机的磁场定向控制

目录 概述 通过系统仿真验证行为 探索模型架构 生成用于集成到嵌入式应用程序的控制器 C 代码 指定控制器模型的参考行为 创建 PIL 实现 准备用于 PIL 测试的控制器模型 测试生成的代码的行为和执行时间 结论 此示例说明从电机控制算法生成 C 代码并验证其编译行为和执…

AcWing 998. 起床困难综合症

原题链接 其实上面这一堆就是想说,输入 n,m以及 n 个数和该数所对应的运算,其中运算包括有 与、或、异或 三种,真正的问题就是在所有不大于 m 的数(非负数)中,对给定的 n 个数都按该数所对应的运算运算一遍…

GFS论文解读(一)——设计概述

介绍 在当今大数据时代,分布式文件系统已经成为处理海量数据的重要工具。而在这个领域中,「GFS(Google File System)」论文无疑是一篇具有里程碑意义的文献。GFS 由 Google 公司发表于 2003 年,它介绍了 Google 公司内…

C练习——肇事卡车车牌号

题目: 一辆卡车违反交通规则,撞人后逃跑。现场有3人目击事件,但没有记住车牌号,只记住了车号的一些特征。 甲说:“牌照前两位数字是相同的”,乙说:“牌照的后两位数字是相同的,但与…

centos通过yum安装redis

1. 安装yum添加epel源(此步根据环境,如果有源则可跳过,在阿里去可跳过) yum install epel-release 2 使用yum安装Redis yum install redis 出现如下图所示的内容 3 Redis配置 vim /etc/redis.conf :set number(显示行号) 61行&#x…

Flume基础知识(十一):Flume自定义接口

1)案例需求 使用 Flume 采集服务器本地日志,需要按照日志类型的不同,将不同种类的日志发往不同的分析系统。 2)需求分析 在实际的开发中,一台服务器产生的日志类型可能有很多种,不同类型的日志可能需要 发送…

在群晖NAS上搭建私有部署笔记软件——Blossom

一、Blossom 简介 Blossom 是一个需要私有部署的笔记软件,虽然本身定位是一个云端软件,但你仍然可以在本地部署,数据和图片都将保存在本地,不依赖任何的图床或者对象存储。 Blossom | Blossom (wangyunf.com)https://www.wangyun…

Zoho SalesIQ:提高品牌在社交媒体上参与度的实用指南

在当今快节奏的数字世界中,品牌参与度变得比以往任何时候都更加重要。社交媒体在企业与客户互动方面发挥着至关重要的作用,了解如何很好地利用社交媒体来增强品牌参与度至关重要。 正如我们在之前的博客中所了解到的,品牌参与是指在品牌与其…