试题A

1.HDFS写数据流程(可画图)
1)客户端通过对DistributedFileSystem对象调用create()方法来创建新文件。
2)DistributedFileSystem对Namenode创建一个RPC调用(远程过程调用),在文件系统的 命名空间中新建一个文件,此时文件中还没有相应的数据库。
3)Namenode执行各种不同的检查,以确保这个文件不存在以及客户端有新建该文件的权限。如果检查通过,namenode就会为创建新文件记录一条记录,否则,文件创建失败并向客户端抛出一个IOException异常。DistributedFileSystem向客户端返回一个FSFataOutputStream对象,由此客户端开始写入数据。
4)在客户端写入数据时,FSOutputStream将它分成一个个数据包,并写入内部队列,这个队列称为“数据队列”(Data Queue)。FSOutputStream处理新的数据块。这一组datanode构成一个管道,以默认3个副本为例,所以该管道中有3个节点。FSOutputStream将数据包流式传输到管道中第一个datanode,该datanode存储数据包并将它发送到管道中的第2个datanode,同样,第2个datanode存储该数据包并且发送给管道中的第3个个datanode。
5)datanode写入数据成功后,会为FSOutputStream发送一个写入成功的信息回执,也称为确认队列,当收到管道中所有的datanode确认信息后,该数据包才会从确认队列中删除。

2.namenode的启动过程

3.HDFS为什么不适合存储小文件
1)小文件过多,会过多占用namenode的内存,并浪费block。
2)文件过小,寻道时间大于数据读写时间,这不符合HDFS的设计。

4.什么情况下会进入安全模式
块的数量低于阀值,datanode启动数量不够都会进入安全模式。

5.安全模式的解决办法
1、修复丢失数据
2、调低阀值和datanode数量
3、通过命令进入或者离开安全模式
hdfs dfsadmin -safemode enter|leave
4、重新格式化集群

6.说一下HDFS的可靠性策略
1)冗余副本策略 – 可以指定数据文件的副本数量,默认是3;保证所有的数据块都有副本,不至于在一个datanode宕机后,数据的丢失。
2)机架策略 – 集群一般放在不同机架上,机架间带宽要比机架内带宽要小;HDFS具有“机架感知”能力,它能自动实现在本机架上存放一个副本,然后在其它机架再存放另一副本,这样可以防止机架失效时数据丢失,也可以提高带宽利用率。
3)心跳机制 – Namenode周期性从datanode接收心跳信号和块报告,Namenode根据块报告验证元数据;Namenode对没有按时发送心跳的datanode会被标记为宕机,不会再给它任何I/O请求;Datanode失效造成副本数量下降,并且低于预先设置的阈值,namenode会检测出这些数据块,并在合适的时机迕行重新复制;引发重新复制的原因还包括数据副本本身损坏、磁盘错误,复制因子被增大等。
4)安全模式 – Namenode启动时会先经过一个“安全模式”阶段,安全模式阶段不会产生数据写;在安全模式阶段Namenode收集各个datanode的报告,当数据块达到最小副本数以上时,会被认为是“安全”的;在一定比例(可设置)的数据块被确定为“安全”后,再过若干时间,安全模式结束;当检测到副本数不足的数据块时,该块会被复制直到达到最小副本数。
5)校验和 – 在文件建立时,每个数据块都产生校验和,校验和会保存在.meta文件内;
客户端获取数据时可以检查校验和是否相同,从而发现数据块是否损坏;如果正在读取的数据块损坏,则可以继续读取其它副本。
6)回收站 – 删除文件时,其实是放入回收站/trash,回收站里的文件可以快速恢复;
可以设置一个时间阈值,当回收站里文件的存放时间超过这个阈值,就被彻底删除,并且释放占用的数据块。
7)元数据保护 – 映像文件和事务日志是Namenode的核心数据,可以配置为拥有多个副本;副本会降低Namenode的处理速度,但增加安全性。
8)快照机制 – 支持存储某个时间点的映像,需要时可以使数据重返这个时间点的状态;

7.HDFS的优缺点
HDFS的优点:
1)处理超大文件 – 这里的超大文件通常是指百MB、甚至数百TB大小的文件。目前在实际应用中,HDFS已经能用来存储管理PB级的数据了。
2)流式的访问数据 – HDFS的设计建立在“一次写入、多次读写”任务的基础上。这意味着一个数据集一旦由数据源生成,就会被复制分发到不同的存储节点中,然后响应各种各样的数据分析任务请求。在多数情况下,分析任务都会涉及数据集中的大部分数据,也就是说,对HDFS来说,请求读取整个数据集要比读取一条记录更加高效。
3)运行于廉价的商用机器集群上 – Hadoop设计对应急需求比较低,只须运行在低廉的商用硬件集群上,而无需在昂贵的高可用性机器上。廉价的商用机也就意味着大型集群中出现节点故障情况的概率非常高。HDFS遇到了上述故障时,被设计成能够继续运行且不让用户察觉到明显的中断。

HDFS的缺点:
1)不适合低延迟数据访问 – 如果要处理一些用户要求时间比较短的低延迟应用请求,则HDFS不适合。HDFS是为了处理大型数据集分析任务的,主要是为达到高的数据吞吐量而设计的,这就可能要求以高延迟作为代价。
改进策略:
对于那些有低延时要求的应用程序,HBase是一个更好的选择,通过上层数据管理项目尽可能地弥补这个不足。在性能上有了很大的提升,它的口号是goes real time。使用缓存或多个master设计可以降低Clinet的数据请求压力,以减少延时。
2)无法高效存储大量的小文件
因为NameNode把文件系统的元数据放置在内存中,所有文件系统所能容纳的文件数目是由NameNode的内存大小来决定。还有一个问题就是,因为MapTask的数量是由Splits来决定的,所以用MR处理大量的小文件时,就会产生过多的MapTask,线程管理开销将会增加作业时间。当Hadoop处理很多小文件(文件大小小于HDFS中Block大小)的时候,由于FileInputFormat不会对小文件进行划分,所以每一个小文件都会被当做一个Split并分配一个Map任务,导致效率底下。
例如:一个1G的文件,会被划分成16个64MB的Split,并分配16个Map任务处理,而10000个100Kb的文件会被10000个Map任务处理。
改进策略:要想让HDFS能处理好小文件,有不少方法。利用SequenceFile、MapFile、Har等方式归档小文件,这个方法的原理就是把小文件归档起来管理,HBase就是基于此的。
3)不支持多用户写入及任意修改文件 – 在HDFS的一个文件中只有一个写入者,而且写操作只能在文件末尾完成,即只能执行追加操作,目前HDFS还不支持多个用户对同一文件的写操作,以及在文件任意位置进行修改。

8.NodeManager的工作职责
NodeManager 是 Yarn 每个节点的代理,在hadoop集群中负责计算个字的节点。这包含同ResourceManager(RM)保持日期同步,监督container的生命周期,监控container资源的使用情况,跟踪node 心跳,日志管理和一些可以被不同YRAN应用程序使用的辅助服务。

9.HDFS的设计思想
1)存储超大文件
2)最高效的访问模式是 一次写入、多次读取(流式数据访问)
3)运行在普通廉价的服务器上

10.namenode的工作职责,datanode的工作职责
1)NameNode
1、管理HDFS的命名空间
2、管理数据块的映射信息
3、配置副本策略
4、处理客户端的请求
2)DataNode
1、存储真正的数据
2、执行数据块的读写操作
3、定时向NameNode进行汇报(心跳机制)

11.zookeeper的应用场景
主从协调、服务器节点的动态上下线、统一的配置管理、分布式共享锁、统一的名称服务。

12.阐述zookeeper分布式锁的实现原理
第一类实现:
先创建一个永久节点/lock
所有客户端在/lock节点下创建临时有序节点,编号最小的获得锁可以访问资源,资源访问结束后断开连接,下一个编号最小的获得锁。用完删除,依次执行。
第二类实现:
可以将zookeeper上的一个znode看做是一把锁,所有客户端都去创建相同名字的临时节点,最终创建成功的客户端就获得了锁,用完删除,然后所有客户端再重新去创建。
13.HDFS高可用原理
14.checkpoint过程及作用
15.HDFS副本放置策略
16.说说你对分布式系统的理解
17.离线分析项目的处理流程
18.MR的运行全流程(画图)
20.如何控制MapTask数量,如何控制ReduceTask数量
21.现块的大小为128M,现在有一文件大小为260M,进行spilt的时候,会被分成几片
22.分片与分块的区别?
23.HDFS文件系统的优化?
24.如果有1GB的数据需要排序,但只有10M的内存如何排序处理?
25.编写一个shell脚本,在mini1上执行脚本可以启动mini1,mini2,mini3的zookeeper
26.写MR程序求出每个班成绩前三名,要求每个班级的结果输出一个文件
1 gp1808 80
2 gp1808 92
3 gp1808 84
4 gp1808 86
5 gp1808 88
6 gp1808 70
7 gp1808 98
8 gp1808 84
9 gp1808 86
10 gp1807 90
11 gp1807 92
12 gp1807 84
13 gp1807 86
14 gp1807 88
15 gp1807 80
16 gp1807 92
17 gp1807 84
18 gp1807 86
19 gp1805 80
20 gp1805 92
21 gp1805 94
22 gp1805 86
23 gp1805 88
24 gp1805 80
25 gp1805 92
26 gp1805 94
27 gp1805 86

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值