大数据面试技术复习hadoop,hdfs,yarn

大数据复习笔记
一、hadoop
hadoop特性:高可靠,高拓展,高效,,高容错性。
面试考点:
1.hadoop1.0和2.0区别
** hadoop1.0主要组成为mapreduce(计算+调度),hdfs(存储),common(辅助工具),2.0中加入了yarn负责资源调度,mapreduce只负责计算。3.0中组成上没有区别。**
2.常用端口号
hadoop3.x
hdfs namenode 内部通常端口 :8020/9000/9820
hdfs namenode 对用户的查询端口:9870
yarn 查看任务运行情况的:8088
历史服务器:19888
hadoop2.x
hdfs namenode 内部通常端口 :8020/9000/9820
hdfs namenode 对用户的查询端口:50070
yarn 查看任务运行情况的:8088
历史服务器:19888
二、hdfs
hdfs是一个分布式文件管理系统,是一个文件系统,用于存储文件,通过目录树来定位文件。其次是一个分布式的,由很多台服务器联合起来实现功能,集群中的服务器有各自的角色。
适用场景:适合一次写入,多次读出的场景。即一个文件经过创建,写入和关闭之后就不需要改变。
1.hdfs优缺点
优点:
(1)高容错性。数据自动保存多个副本,通过增加副本的形式,提高容错性。一个副本丢失后可以自动恢复。
(2)适合处理大数据。
(3)可以构建在廉价机器上,通过多副本机制,提高可靠性。
缺点:
(1)不适合低延时数据访问,毫秒级数据存储做不到。
(2)无法高效的对大量小文件进行存储。
存储大量小文件的话,它会占用namenode大量的内存来存储文件目录和块信息。这样是不可取的,因为namenode的内存总是有限的。
小文件存储的寻址时间会超过读取时间,违反了hdfs的设计目标。一个文件块占用150字节,不管是128m还是1kb都是150字节,一个文件块。
(3)不支持并发写入,文件随机修改
一个文件只能有一个写,不允许多个线程同时写。
仅支持数据append(追加),不支持文件的随机修改。
2.HDFS架构概述
(1)namenode:存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表和块所在的datanode等。
(2)datanode:在本地文件系统存储文件块数据以及块数据的校验和。
(3)secondarynamenode(2nn)每隔一段时间对namenode元数据备份。
3.HDFS组成架构
(1)namenode (nn)即master,是一个主管,管理者。
①管理HDFS的名称空间。
②配置副本策略。
③管理数据块(block)映射信息。
④处理客户端读写请求。
(2)datanaode:即slave。namenode下达命令,datanode执行实际的操作。
①存储实际的数据块。
②执行数据块的读写操作。
(3)secondarynamenode:并非namenode的热备。当namenode挂掉的时候,它并不能马上替换namenode并提供服务。
①辅助namenode,分担其工作量。比如定期合并fsimage和edits(快照和操作日志),并推送给namenode。
②在紧急情况下,可辅助恢复namenode。
(4)client :即客户端
①文件切分。文件上传HDFS的时候,client将文件切分成一个一个的
②与namenode交互,获取文件的位置信息。
③与datanode交互,读取或者写入数据。
④client提供一些命令来管理hdfs,比如namenode格式化。
⑤client通过一些命令来访问HDFS,比如对HDFS的增删改查。
面试考点:
HDFS的文件在物理上分块存储,hadoop2.0,3.0默认128M,1.0版本是64M。如果寻址时间为10ms,即查找到目标block的时间为10ms,专家说寻址时间为传输时间的1%时,则为最佳状态,则传输时间为10ms/0.01=1000ms=1s,目前机械盘传输速率普遍为100mb/s,即分块128m,固态200-300m/s,即256m。
面试考点:
为什么块的大小不能设置太小,也不能设置太大?
(1)HDFS设置太小,会增加寻址时间,程序一直在找块的开始位置。
(2)如果块设置的太大,从磁盘传输数据的时间会明显大于定位这个块开始所需的时间。导致程序在处理这块数据时,会非常慢。
4.HDFS命令
hadoop fs 或者 hdfs dfs
hadoop fd -chmod 666等
5.fsimage和edits解析
(1)fsimage文件:hdfs文件系统元数据的一个永久性的检查点,其中包含HDFS文件系统的所有目录和文件inode的序列化信息。
(2)edits文件:存放hdfs文件系统的所有更新操作的路径,文件系统客户端执行的所有写操作首先会被记录到edits文件中。
(3)seen_txid文件保存的是一个数字,就是最后一个edits_数字。
(4)每次namenode启动的时候都会将fsimage文件读入内存,加载edits里面的更新操作,保证内存中的元数据是最新的,同步的,可以看成namenode启动的时候就将fsimage和edits文件进行了合并。
6.datanode工作机制
datanode启动后向namenode注册,回报块信息,datanode每六个小时向namenode汇报块信息。心跳检测每三秒检测一次,保证datanode没有挂掉。超过三秒再等待10分钟+30秒没有收到datanode的心跳,则认为该节点不可用。彻底挂掉后就不会再进行读写。
7.如果数据已经损坏,但是datanode依然显示数据完好?crc(32)校验
8.面试HDFS读写流程概括

     1. HDFS写流程
     客户端发送上传请求,通过RPCt与NameNode建立通信,NameNode检查该用户是否有上传权限,以及上传的文件在目录下是否有重名。有问题报错,否则返回客户端一个可以上传的信息。
RPC是远程过程调用,它是一种通过网络从远程计算机程序上请求服务

客户端根据文件的大小进行切分,默认128M一块,切分完成后给NameNode发送请求第一个block块上传到哪个服务器上
NameNode收到请求后,根据网络拓补、机架感知、副本机制进行文件分配,返回可用的DataNode地址。
网络拓补:各种设备的物理布局
机架感知:种计算不同计算节点(TaskTracker)的距离的技术,⽤以在任务调度过程中尽量减少⽹络带宽资源的消耗
副本机制:考虑到数据的安全与高效, 数据文件默认在 HDFS 上存放三份, 存储策略为本地一份,同机架内其它某一节点上一份, 不同机架的某一节点上一份

客户端收到地址之后与服务器地址列表中的一个节点如A进行通信,建立通道,A收到请求后会继续调用B,B在调用C,将整个pipeline建立完成。
客户端开始向A上发送第一个block(先从磁盘读取然后放到本地内存缓存),以packet(数据包,64k)为单位,A收到一个packet就会发送给B,然后B发送给C。
在通道反向传输过程中,逐个发送ack应答,最终发送给客户端
当一个block传输完成之后,客户端再次请求NameNode上传第二个block,NameNode重新选择三台Datanoe给客户端。
2. HDFS读流程
客户端向NameNode发送RPC请求,请求文件block的位置
NameNode收到请求后检查用户权限以及是否有这个文件,之后返回DataNode地址
这些返回的 DataNode 地址会进行排序,排
序两个规则:网络拓扑结构中距离 Client 近的排靠前;心跳机制中超时
汇报的 DataNode 状态为 STALE,这样的排靠后

客户端选取排序靠前的DataNode来读取block
读完列表的block后,若文件读取没结束,客户端继续向NameNode获取下一批block列表
read 方法是并行的读取 block 信息,不是一块一块的读取

最后读取来的所有block会合并成一个完整的最终文件
--https://blog.csdn.net/weixin_43025525/article/details/125069954
3. Question
3.1 HDFS在读取文件时,如果其中一个块突然损坏了怎么办?
  客户端读取完 DataNode 上的块之后会进行 checksum 验证,也就是把客户端读取到本地的块与 HDFS 上的原始块进行校验,如果发现校验结果不一致,客户端会通知 NameNode,然后再从下一个拥有该 block 副本的 DataNode 继续读。

4. HDFS在上传文件的时候,如果其中一个DataNode挂掉怎么办?
  客户端上传文件时会与datanode建立通道,正向发送的是数据包,反向发送的时ack确认。当datanode突然挂掉,客户端收不到ack,客户端会通知namenode,让新的datanode复制副本,将挂掉的datanode作下线处理。

三、mapreduce
mapredu ce:将maptask传给我们的文本内容先转换成string,根据空格将这一行切分成单词,并将单词输出为<k,v>格式传送给reducer,reduce()汇总各个key的个数,并输出key的总次数。
四、yarn基础架构
yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台。而mapreduce等运算程序相当于运行于操作系统之上的应用程序。

 yarn主要由resourcemanager,nodemanager,applicationmaster和container等组件构成。
 resourcemanager:主要作用是处理客户端请求,监控nodemanager,启动或监控applicationmaster,资源的分配与调度。
 nodemanager:主要作用管理单个节点上的资源,处理来自resourcemanager的命令,处理来自applicationmaster的命令。
 applicationmaster:作用为应用程序申请资源并分配给内部的任务,任务的监控与容错。
 container:container是yarn中的资源抽象,它封装了某个节点上的多维度资源,如内存,cpu,磁盘,网络等。

yarn调度主要有三种,fifo(先进先出),容量(capacity scheduler),公平(fair scheduler)。Apache hadoop3.1.3默认的资源调度器是capacity scheduler,cdh默认的调度器是fair scheduler。
容量调度:多队列,每个队列可配置一定的资源聊,每个队列采用FIFO调度策略(多队列)。管理员可以为每个队列设置资源最低保证和资源使用上限(容量保证)。如果一个队列中的资源有剩余,可以暂时共享给那些需要资源的队列,而一旦该队列有新的应用程序提交,则其他队列借调的资源会归还给该队列。支持多用户共享集群和多应用程序同时运行(灵活性)。为防止同一个用户的作业独占队列中的资源,该调度器会对同一用户提交的作业所占资源量进行限定(多租户)。
容器调度算法:(1)从root开始,使用深度优先算法,优先选择资源占用率低的队列分配资源。
(2)作业资源分配:默认按照作业的优先级和提交时间顺序分配资源。
(3)容器资源分配:按照容器的优先级分配资源,如果优先级相同,按照数据本地性原则:①任务和数据在同一节点,任务和数据在同一机架,任务和数据不在同一节点也不在同一机架。
公平调度:支持多队列多作业,管理员可为每个队列设置最低资源和资源使用上限。其他同上。
面试重点:YARN的工作机制,yarn的调度器特点。
调度器特点:相同点支持多队列,可以借资源,支持多用户。
不同点:容量调度器有限满足先进来的任务执行。
公平调度器:在队列里面的任务公平享有队列资源。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值