2.一个文件存储方式
a.按大小切割成若干个block,存储在不同的节点上
b.每个block默认存三个副本
block大小和副本数由Client上传文件的时候设置,文件上传成功以后,副本数可以变更,但是Block 大小不可变。
四、HDFS设计思想
一个50G的文件上传到HDFS上,首先该文件被切割成了若干个64MB的block,block1在node1,node2,node3上存储了3(默认3个,可以设置)个副本,block2在node2,node3,node4上存储了3个副 本block3....直到所有的block都存储3个副本;
五、NameNode(NN)、 SencondryNameNode (SNN)、DataNode(DN)
1.NameNode (NN) 的工作
a.接受客户端的读写服务
b.保存metadata的信息,包括:文件的owership和permissions、文件包含哪些block、block保存在哪些DataNode节点上(在启动时由DataNode上报)
c.NameNode 的metadata信息会在启动后加载到内存中
.metadata信息在磁盘上存储的文件为“fsimage”
.Block的位置信息不保存在fsimage中(由DataNode上报)
.edits中保存对metadata的操作日志
2.SecondryNameNode(SNN) 的工作
a.它不是NN的备份(但可以做NN的部分备份的工作),它的主要工作是帮助NN合并edits log 减少NN的启动时间
b.SNN合并时机
.根据配置文件设置的时间间隔fs.checkpoint.period 默认3600秒
.根据配置文件设置的edits log的大小 fs.checpoint.size 默认的edits log 大小为64MB
c.SNN合并流程
1>NN 创建一个新的edits log 来接替老的 edits 的工作
2>NN 将fsimage 和 旧的edits 拷备到 SNN上
3>SNN上进行合并操作,产生一个新的fsimage
4>将新的fsimage 复制一份到NN上
5>使用新的fsimage 和 新的edits log
3.DataNode (DN)
a.存储数块(block)
b.启动DN线程时,DN会自动向NN汇报Block的信息
c.NN向DN发送心跳检测,与其DN保持联系(3秒一次) 如果NN 连续10分钟没有收到DN的心跳,则认为该DN已经lost,并从其他DN中备份一份该DN上的所有block
d.block的放置策略
.第一个副本,放置在上传文件的DN上,如果是集群外提交,则随便选择一台磁盘、内存、CPU不太忙的节点存储