Hadoop概述信息
hadoop 有三大组成部分,HDFS(分布式文件存储系统)、YARN(资源管理器)、MAPREDUCE(分布式计算框架) ,下边我们来简单介绍一下
HDFS 分布式文件存储系统
HDFS分布式文件系统,是由Google的GFS谷歌文件系统开源出来,其存储模型是有主从结构的,可以划分出来以下几点
-
NameNode(NN)
基于内存存储,不会和磁盘发生交互,使用映射快照和日志文件进行持久化,保存元数据信息,
以及保存文件名,文件属性,block块列表偏移量,位置信息和副本位置(block位置信息不会持久化,由 DN 心跳汇报) -
DataNode(DN)
以文件形式进行本地磁盘目录存储block块信息,同时会存储block块的元数据文件(MD5文件,用于校验文件完整性)
启动 DN 时会向 NN 发送心跳信息,同时汇报block的位置信息,默认心跳时间是3秒一次,如果 NN 10分钟没有收到 DN 的心跳汇报,
则认为其已经丢失,由于副本数会小于系统配置副本数,NN 会进行copy该block块信息到其他 DN 上-
block,是将文件线性切割成块,也是偏移量 offset,大小默认设置为128M,副本数默认为3个,分散存储在集群节点中,
已上传的文件block副本数可以调整,大小不可以调整,只支持一次写入多次读取,同一时刻只有一个写入者 -
副本的放置位置的逻辑
第一个副本:放置在上传文件的 DN,如果是集群外提交,则随机挑选一台磁盘不满,CPU不忙的
第二个副本:放置在与同一个副本不同的机架上的某个 DN
第三个副本:放置在与第二个副本同一个机架,不同的 DN 上
更多个脚本:出去上边3个,其他随机放置在不同的 DN 上
-
-
SecondaryNameNode (2NN)
它不是 NN 的备份,主要工作是帮助 NN 合并 fsimage 和 edits log信息,减少 NN 启动时间-
2NN 执行合并文件的时机:根据配置的时间间隔 dfs.namenode.checkpoint.perid 默认是3600秒,
或者根据配置文件设置一定数量的文件系统事物之后 dfs.namenode.checkpoint.txns,默认是 1000000次事物
如果同时设置了这两个属性,则达到的哪一个阈值将触发一个检查点 -
2NN 合并的流程
NN 在触发checkpoint时间节点,会将自己的fsimage 和 edits log 日志信息同步到 2NN。同时创建一个新的edits log
2NN 会加载fsimage 并执行log日志里的命令,生成一个最新的fsimage.ckpt文件,此时fsimage.ckpt保存的快照信息就是从hadoop启动到当前checkpoint时间节点的信息。
再次推送fsimage.ckpt 到 NN 转换成fsimage文件,此时会有一个checkpoint时间节点的快照文件,和checkpoint时间节点后的edits log日志文件
当下次再次触发checkpoint时,2NN 只需要加载edits log日志文件就可以合并下一个最新的快照文件
-
-
安全模式
-
NN 启动的时候,首先将映射文件fsimage载入内存,并执行编辑日志edits log文件里的操作
-
一旦在内存中成功建立文件系统元数据的映射,则会创建一个新的fsimage 文件和一个空的edits log文件
此刻 NN 是安全模式,即 NN 的文件系统对于客户端来说只读 -
此时,NN 接收到各个 DN 的心跳和汇报信息,会收集到数据块的位置等信息,当数据块达到最小副本数时,
会被认为是安全的,在一定比例的数据块被确认为安全后,再过若干时间,安全模式结束 -
当检测到副本数不足的数据块,块会被复制到其他 DN 中,直到达到最小副本数,系统中数据块的位置并不是由 NN 维护,而是以块列表形式存储在 DN 中
-