【hadoop】Hadoop 面试题总结
目录
- 1 hadoop的优势
- 2 Hadoop组成
- 3 纠删码技术
- 4 HDFS架构概述
- 5 yarn架构概述
- 6 mapreduce架构概述
- 7 HDSF文件块大小
- 8 HDFS写数据流程
- 9 HDFS读数据流程
- 10 fsimage与edits元数据备份
- 11 namenode与secondarynamenode元数据备份流程
- 12 DataNode工作机制
- 13 Hadoop HA概述
- 14 HDFS-HA元数据与状态管理
1 hadoop的优势
高可靠性:底层维护多个数据副本,即使某个计算元素或存储出现故障,也不会造成数据丢失。
高扩展性:在集群间分配任务数据,方便扩展数以千计的节点
高效性:在mapreduce的思想下,Hadoop是并行工作的,以加快任务处理速度
高容错性:能够自动将失败的任务重新分配
2 Hadoop组成
Hadoop1X:mapreduce、HDFS、common(辅助工具)
Hadoop2X:mapreduce、yarn、HDFS、common(辅助工具)
①1与2版本的区别:在Hadoop1版本,Hadoop中的mapreduce同时处理业务逻辑运算和资源调度,耦合性较大,在Hadoop2版本增加了yarn,yarn只负责资源的调度,mapreduce只负责运算
②2与3版本的区别:Hadoop3版本的最低运行时版本为JDK8。Hadoop2版本仅支持2个namenode,并不能提供最大级别的容错能力,而Hadoop3提供了多个namenode。Hadoop2版本靠存储多个副本保证数据的可靠性,降低了磁盘利用率。Hadoop3引入了纠删码技术,它可以提高了50%以上的磁盘利用率。以更小的数据冗余度获得更高的数据可靠性。
3 纠删码技术
纠删码技术(Erasure coding)简称EC,是一种编码容错技术。最早用于通信行业,数据传输中的数据恢复。它通过对数据进行分块,然后计算出校验数据,使得各个部分的数据产生关联性。当一部分数据块丢失时,可以通过剩余的数据块和校验块计算出丢失的数据块。
点这里—>:纠删码原理介绍
4 HDFS架构概述
namenode:存储文件的元数据,如文件名、文件目录结构、文件属性(生成时间、副本数、文件权限等),以及每个文件的块列表和块所在的datanode等
datanode:在本地文件系统存储文件块数据,以及块数据的校验和
secondaryNamenode:用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照
5 yarn架构概述
resourcemanager:用于处理客户端请求,监控nodemanager,启动和监控applicationMaster,资源的分配与调度
nodemanager:主要作用有管理单个节点的资源,处理来自resourcemanager和applicationMaster的命令
applicationMaster:主要作用有负责数据切分,为应用程序申请资源并分配给内部的任务,并对任务进行监控和容错性的保证
container:是yarn中的资源抽象,它封装了某个节点上的多维度资源,内存、CPU、磁盘、网络等
6 mapreduce架构概述
client:用于提交job
jobTracker:负责资源监控和作业调度,监控所有TaskTracker和job的健康状态
TaskTracker:周期性的将本节点的资源使用情况和任务运行情况上传到jobTracker
task:分为mapTask和reduceTask,都由TaskTracker启动
7 HDSF文件块大小
HDFS中的文件在物理上是分块存储,块的大小通过dfs.blocksize参数设置,Hadoop1版本块默认64M,Hadoop2和3版本默认128M。块的大小根据磁盘是传输速率设置。一般寻址之间为传输时间的1%为最佳状态,根据寻址时间和磁盘传输速率计算出最佳块大小为100M左右
HDFS块的大小不能设置的太小也不能设置的太大。块设置的太小,会增加寻址时间,程序一直在寻找块开始的位置。如果设置的太大,从磁盘传输数据的时间会明显大于定位这个块位置所需的时间。导致程序在处理这块数据是会非常的慢
8 HDFS写数据流程
①客户端通过Distributed FileSystem模块向namenode请求上传文件,namenode检查目标文件是否存在,和父目录是否存在
②namenode应答客户端是否可以上传
③客户端请求第一个block可以上传到那几个datanode
④namenode向客户端返回可用的datanode列表,分别是A,B,C
⑤客户端通过FSDataOutputStream模块请求A上传数据,A收到请求后会继续调用B,B再调用C,将这个通信管道建立完成。
⑥A、B、C逐级应答客户端
⑦客户端开始往A上传第一个block(先从磁盘读取数据放到一个本地内存缓存)以packet为单位,A收到一个Packet后就会传输给B,B在传给C,A没传一个packet会放入一个应答队列等待应答
⑧当一个block传输完成之后,客户端再次请求namenode上传下一个block的服务器
9 HDFS读数据流程
①客户端通过Distributed FileSystem向namenode请求下载文件,namenode通过查询元数据,找到文件块所在的Datanode地址
②挑选一台datanode(就近原则,然后随机)服务器,请求读取数据
③datanode开始传输数据给客户端,从磁盘里面读取数据输入流,以packet为单位来做校验
④客户端以packet为单位接收,现在本地缓存,然后写入目标文件
10 fsimage与edits元数据备份
FSimage:namenode内存中元数据序列化后形成的文件。HDFS文件系统元数据的永久性检查点,其中包含了HDFS文件系统的所有目录和文件inode的序列化信息。
edits:记录客户端更新元数据的每一步操作,可以通过edits运算出元数据。存放HDFS文件系统的所有更新操作的路径,文件系统客户端执行的所有写操作首先会被记录到edits文件中。
namenode的元数据存储在内存中,为了保证元数据的可靠性,元数据会定期备份到fsimage文件中。当内存中的元数据更新时,会先将元数据的更新或修改日志写入到edits文件中,edits文件只进行追加操作,效率很高。secondarynamenode主要负责edits与fsimage文件的合并工作,以保证元数据的安全性
11 namenode与secondarynamenode元数据备份流程
–namenode工作
①第一次启动namenode格式化,创建fsimage和edits文件。如果不是第一次启动,则直接加载fsimage和edits文件到内存
②客户端发起对元数据进行增删改操作的请求
③namenode将元数据更新或修改的操作记录到edits文件中,更新滚动edits
④namenode在内存中对数据进行更新或修改操作
–secondarynamenode工作
⑤secondarynamenode询问namenode是否需要checkpoint(备份元数据),并且直接带回namenode是否checkpoint的结果
⑥secondarynamenode请求执行checkpoint
⑦namenode滚动正在写的edits
⑧namenode将滚动前的edits和fsimage文件拷贝到secondarynamenode
⑨secondarynamenode将edits和fsimage加载到内存中,进行合并生成新的镜像文件fsimage.chkpoint
⑩拷贝fsimage.chkpoint拷贝到namenode上,重命名并替换之前的fsimage文件
12 DataNode工作机制
①一个数据块在DataNode上以文件形式存储在磁盘上,包括两个文件:一个是数据本身,一个是元数据(包括数据块长度,块数据的校验和,以及时间戳)
②datanode启动后向namenode注册,通过后周期性(1小时)的向namenode上报所有块信息
③心跳是每3秒一次,心跳返回结果带有namenode给该datanode的命令(如复制块数据到另一台机器,或删除某个数据块)。如果超过10分钟没有收到某个Datanode的心跳,则认为该节点不可用
④集群运行中可以安全加入和退出一些机器
13 Hadoop HA概述
HA:high available高可用,实现高可用的最关键的策略是消除单点故障,HA分为HDFS HA 和 yarn HA。在Hadoop2版本之间namenode存在单点故障。namenode主要在两个方面影响集群,namenode发生意外,如宕机、集群将无法使用,直到管理员重启,NameNode机器需要升级,包括软件、硬件升级,此时集群也将无法使用。HDFS HA功能通过配置Active/Standby两个NameNodes实现在集群中对NameNode的热备来解决上述问题
14 HDFS-HA元数据与状态管理
①元数据管理方式需要改变,两个namenode中各自保存一份元数据,edits日志只有active状态的namenode才可以做写操作,两个namenode都可以读取edits文件,共享的edits放在一个共享存储中管理(qjouornal和NFS两个主流实现)
②需要一个状态管理功能模块。实现了一个zkfailover,常驻在每一个namenode节点上,负责监控自己所在的namenode节点,利用zk进行状态标识,当需要进行状态切换时,由zkfailover实现。切换时要防止出现brain split发生
【hadoop】Hadoop 面试题总结相关推荐
- Hadoop -- hadoop介绍
Hadoop hadoop介绍 hadoop核心组件 hadoop特性优点 hadoop发展 hadoop介绍 hadoop底层是Java语言实现 是Apache软件基金会的一款开源软件 允许用户使用 ...
- linux如何授权HADOOP,hadoop用户权限管理
在上一篇博文我描述了在单机linux上安装hadoop,网址:http://my.oschina.net/hetiangui/blog/142897,这里我主要描述下hadoop的用户权限管理. 上篇 ...
- hadoop+海量数据面试题汇总(一)
hadoop面试题 Q1. Name the most common InputFormats defined in Hadoop? Which one is default ? Following ...
- 去公司面试,记录下的hadoop最新面试题
转载自:hadoop面试题 1.简要描述如何安装配置一个apache开源版hadoop,描述即可,列出步骤更好 1) 安装JDK并配置环境变量(/etc/profile) 2) 关闭防火墙 3) 配置 ...
- Hadoop高频面试题(建议收藏)
一.什么是Hadoop? 这是一个看着不起眼,实则"送命题"的典型.往往大家关于大数据的其他内容准备得非常充分,反倒问你什么是Hadoop却有点猝不及防,回答磕磕绊绊,给面试官的印 ...
- Hadoop—常见面试题
Hadoop面试中6个常见的问题及答案 准备好面试了吗?呀,需要Hadoop的知识!!?不要慌!这里有一些可能会问到的问题以及你应该给出的答案. Q1.什么是Hadoop? Hadoop是一个开源软件 ...
- hadoop常见面试题
Q1.什么是 Hadoop? Hadoop 是一个开源软件框架,用于存储大量数据,并发处理/查询在具有多个商用硬件(即低成本硬件)节点的集群上的那些数据.总之,Hadoop 包括以下内容: HDFS( ...
- 大数据 hadoop 经典面试题 | 一
1 . 下面哪个程序负责 HDFS 数据存储?(C) A.NameNode B.JobTracker C.DataNode D.SecondaryNameNode E.tasktracker 2 . ...
- Hadoop工程师面试题解析
1. 下面哪个程序负责 HDFS 数据存储.答案C datanode a)NameNode b)Jobtracker c)Datanode d)secondaryNameNode e)tasktrac ...
- 【大数据面试题】(一)Hadoop 相关面试题总结
1.MapTask并行机度是由什么决定的? 由切片数量决定的. 2.MR是干什么的? MR将用户编写的业务逻辑代码和自带的默认组件结合起来组成一个完整的分布式应用程序放到hadoop集群上运行. 3. ...
最新文章
- SpringBoot 注解方式快速整合Mybatis
- 解析CleanMyMac隐私保护内容与使用
- 深度学习Deep Learning: dropout策略防止过拟合
- MySQL 8.0 正式版发布,比 MySQL 5.7 快 2 倍!
- mfc界面的onvscroll没反应_电脑小技巧之360安全卫士卸载不掉怎么办?只因一个开关没打开...
- Spring(二)、注解IOC
- Ubuntu为julia安装深度学习框架MXNet(支持CUDA和OPenCV编译)
- Django 06模板语言的复用
- matlab实现S函数的五种方式
- chrome保存网页为图片
- HDU4609 3-idiots fft
- 蓝牙耳机哪个品牌经济实惠?价格便宜音质好的蓝牙耳机推荐
- Project(1)——创建数据库、实体类、用户注册的持久层
- SQL SERVER 如何调试存储过程
- 手机端没有好的录屏软件?地表最强移动端录屏软件了解一下?
- oracle 物化视图没效果,Oracle物化视图失效的几种情况及测试
- JavaScript基础知识点之浏览器交互
- android 绘制控件,Android_开发_Day29_自己绘制控件
- js打开页面自动复制文本到剪贴板_浏览器剪贴板API的应用
- comsol随机几何的构建 CAD模型导入法