HDFS架构流程原理(面试开发重点)

HDFS定义及优缺点
 HDFS是分布式文件管理系统,这种系统可以管理多台机器的文件,是可以分布式的存储文件,适合一次写入,多次读出的场景,但不支持文件的修改。
 优点:多副本提高容错,可以处理大数据,使用机器廉价。
 缺点:不适合实时数据,害怕小文件,只能追加不能随机修改。

HDFS成员及工作原理(面试开发重点)
 NameNode(nn):主管,管理数据块(block)和与客户端通信。
 工作机制:nn的元数据存在内存中但是会在磁盘上产生备份元数据的Fsimage,为防止断电丢数据,引入Edits文件,只记录对元数据产生的操作。断电后只需要合并Fsimage和Edits即可恢复原来操作。nn只负责第一次开启时将两个文件加载到内存中合并,后面合并任务交给2nn
 DataNode(dn):小弟,存储数据块,执行读写操作。
 工作机制:数据块在dn上以文件的形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,校验和,时间戳。,dn启动后先向nn注册,周期性汇报块信息,心跳是每3秒一次,由dn向nn发送,返回结果带有nn命令,10分钟nn未收到心跳,该节点不可用。
 SecondaryNameNode(2nn):秘书,分担nn工作量,定期合并Fsimage和Edits,紧急情况下可恢复nn,2nn在合并了两个文件后将结果返回给nn。
 client:客户端,将文件切分为block,输入命令管理HDFS。
HDFS文件块大小(面试重点)
 文件在HDFS上是按块(block)存储的,在hadoop2.0后为128M,块的大小不能太大也不能太小。
HDFS写数据流程(面试重点)
1、客户端通过Distributed FileSystem向nn请求上传文件,nn检查后返回是否可以上传。
2、客户端请求第一个block上传到哪个dn上,nn返回dn1,dn2,dn3
3、客户端通过FSDataOutputStream请求dn1上传,dn1回将2和3调起,通信管道完成
4、客户端上传第一个block到dn1上,以packet为单位,dn1传给2和3
5、第一个block传完后,重复上述步骤,传第二个block
HDFS写数据流程
1、客户端通过DistributedFileSystem向nn请求下载文件,nn找到文件所在dn地址
2、就近挑选一台dn,请求读取数据
3、dn开始传输数据到客户端,以packet为单位,客户端接收后现在本地缓存,再写入目标文件