客户端写数据到HDFS的流程:
client就是shell命令行
1.client先发送给namenode一个写数据请求
2.namenode返回容许写请求
3.client向namenode请求写BLK1
4.namenode返回告知BLK1写入哪几个机器 (ex. dn1,dn2,dn3)
5.找dn1创建数据传输的连接
6.dn2和dn3分别创建链接
7.dn1,dn2,dn3分别返回链接是否创建成功文件名
8.client正式开始数据的传输到dn1,而后dn1-->dn2,dn2-->dn3
9.传输完成以后告知namenode,记录文件名,大小,副本数量,分别记录信息node
Namenode:存储的元数据信息
namenode:(filename, numReplicas, block_ids)
元数据:hdfs的目录结构以及每一个文件的block信息(id)shell
文件名,副本数量,blk的id 存在什么地方:对应配置 {hadoop.tmp.dir}/name/....下面
checkpoint概念: secondaryNamenode扮演一个小弟的概念,由于NN上内存的树形结构,因此每次操做文件都和内存发生IO很麻烦,因此会有一个fsimage镜像,内存定时的把数据序列化到fsimage上去,同时有一个edit日志记录这个时间段内对数据进行的操做,这时候secondary namenode会把这个fsimage和edit日志加载到secondary namenode下面,这时候secondary namenode进行反序列化,而且执行edit日志中存储的以前的操做,这时候就获得了最原始的数据oop
Safemode:在start hdfs后的30秒,hdfs会检查文件的完整性是否合格,在这个safemode期间,是不容许对文件系统进行操做的spa