客户端写数据到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,记录文件名,大小,副本数量,分别记录信息
Namenode:存储的元数据信息
namenode:(filename, numReplicas, block_ids)
元数据:hdfs的目录结构以及每个文件的block信息(id)
文件名,副本数量,blk的id
存在什么地方:对应配置 {hadoop.tmp.dir}/name/....下面
checkpoint概念: secondaryNamenode扮演一个小弟的概念,因为NN上内存的树形结构,所以每次操作文件都和内存发生IO很麻烦,所以会有一个fsimage镜像,内存定时的把数据序列化到fsimage上去,同时有一个edit日志记录这个时间段内对数据进行的操作,这时候secondary namenode会把这个fsimage和edit日志加载到secondary namenode下面,这时候secondary namenode进行反序列化,并且执行edit日志中存储的之前的操作,这时候就得到了最原始的数据
Safemode:在start hdfs后的30秒,hdfs会检查文件的完整性是否合格,在这个safemode期间,是不允许对文件系统进行操作的
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。