Hadoop核心组件
1.分布式存储系统HDFS(Hadoop Distributed File System)分布式存储层
2.资源管理系统YARN(Yet Another Resource Negotiator)集群资源管理层
3.分布式计算框架MapReduce分布式计算层
HDFS
HDFS(Hadoop Distributed File System,Hadoop 分布式文件系统)是一个高度容错性的系统,适合部署在廉价的机器上。HDFS 能提供高吞吐量的数据访问,适合那些有着超大数据集(largedata set)的应用程序。
核心组件
NameNode
DataNode
SecondaryNameNode(NameNode的快照)
hdfs体系结构
HDFS采用master/slave架构。一个HDFS集群是由一个Namenode和一定数目的Datanode组成。
Namenode是一个中心服务器,负责管理文件系统的命名空间和客户端对文件的访问。
Namenode执行文件系统的命名空间操作,例如打开、关闭、重命名文件和目录,同时决定block到具体Datanode节点的映射。
Datanode负责处理文件系统的读写请求,在Namenode的指挥下进行block的创建、删除和复制
一个文件其实分成一个或多个block,这些block存储在Datanode集合里
2.记录每个文件数据在DateNode上的位置和副本信息
3.协调客户端对文件的访问
editlog :任何对文件系统数据产生的操作,都会被保存!
fsimage /.md5:文件系统元数据的一个永久性的检查点,包括数据块到文件的映射、文件的属性等
seen_txid :非常重要,是存放事务相关信息的文件
version文件的内容
第一步:首先加载硬盘上的fsimage文件和edits文件,在内存中merge后将新的fsimage写到磁盘上,这个过程叫checkpoint
(一般NameNode会配置两个目录来存放fsimage和edits文件,分别是本地磁盘和NFS,防止NameNode所在机器的磁盘坏掉后数据丢失。
NameNode启动时会比较NFS和本地磁盘中的fstime中记载的checkpoint时间加载最新的fsimage。)
第二步:NameNode加载完fsimage&edits文件后,会将merge后的结果同时写到本地磁盘和NFS。此时磁盘上有一份原始的fsimage文件和一份checkpoint文件:fsimage.ckpt。同时edits文件为空。
第三步:写完checkpoint后,将fsimage.ckpt改名为fsimage(覆盖原有的fsimage),并将最新时间戳写入fstime文件
2.一次写入,多次读取,但是不能修改
3.文件是由数据块组成,典型的数据块是128MB
4.数据块尽量部署到各个节点上
Blk_refix:HDFS中的文件数据块,存储的是原始文件内容
Blk_refix.meta:块的元数据文件:包括版本和类型信息的头文件,与一系列块的的区域校验和组成。
VERSION:文本文件,文件的内容为:
其中NamesopaceID、cTime、layoutVersion与NameNode保持一致,namespaceID是第一次连接NameNode获得的。storageType对于DataNode来说是唯一的,用于NameNode表示DataNode。
datanode启动时,每个datanode对本地磁盘进行扫描,将本datanode上保存的block信息汇报给namenode
namenode在接收到每个datanode的块信息汇报后,将接收到的块信息,以及其所在的datanode信息等保存在内存中。
Namenode将block ->datanodes list的对应表信息保存在BlocksMap(如图所示)中。