hdfs 概述

本文介绍了HDFS的架构组成,包括NameNode、DataNode和SecondaryNameNode的角色及职责,并详细解析了HDFS的启动过程、写操作流程,以及NameNode如何管理文件系统的元数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hdfs 

简单说是分布式的文件系统 

 

一、hdfs的角色划分

client:分block

NameNode:是Master节点。管理数据块映射;处理客户端的读写请求;配置副本策略;管理HDFS的名称空间;

SecondaryNameNode:是一个小弟,分担大哥namenode的工作量;是NameNode的冷备份;合并fsimage和fsedits然后再发给namenode。

DataNode:Slave节点,干活的。负责存储client发来的数据块block;执行数据块的读写操作。

fsimage:元数据镜像文件(文件系统的目录树。)

edits:元数据的操作日志(针对文件系统做的修改操作记录)

fsimage+edits 类比数据库中的数据表和日志表

namenode内存中存储的是fsimage+edits。

 

SecondaryNameNode默认1小时,从namenode上,获取fsimage和edits来进行合并,然后再发送给namenode。减少namenode的工作量。

 

二、启动过程

http://blog.youkuaiyun.com/amber_amber/article/details/38268407

1、namenode

1》Server成员的构造(用于RCP)

2》FSNameSystem的构造 

核心数据结构包括:

l  blocksMap:map,保存数据块block相关的映射关系,包括文件与块,块与datanode的映射等。

l  curruptReplicasMap:保存所有损坏的块,所有副本都损坏。

l  datanodeMap:曾近连接过的所有的datanode,是全集。

l  recentInvalidateSets:最近失效的block。

l  excessReplicateMap:机器与机器上多余的block的映射,这些block等待被删除。

l  Heartbeats:当前发送心跳包的datanode,也就是alive的datanode。

FSDirectory对象:这里存放着文件系统的层次结构。

 

过程:初始化blocksMap等数据结构,加载fsimage文件到类FSImage中,读取edits文件,利用fsimage和edits构造文件系统层次结构。

 

 

3》启动后台守护进程

l  PendingReplicaitonBlocks$PendingReplicationMonitor: 监控block的copy过程

l  FSNamesystem$HeartbeatMonitor,心跳包的检测

l  FSNamesystem$ReplicationMonitor: 监控复本数量,如果不足,就copy。

l  LeaseManager$Monitor:控制写请求,文件不能同时多人写。

l  DecommissionManager$Monitor:处理数据节点的退役

 

2、启动datanode

 

1》获取并设置各种配置信息,整理自己的block信息并进行封装

2》从namenode获取namespaceID, version以及StorageID等信息

3》datanode向namenode注册。

向namenode发送服务地址,信息查询端口,客户端访问端口以及datanodeID等,还包括block_report块数据;FSNameSystem先验证该datanode是否被允许挂载(通过dfs.hosts列表验证),然后把datanode数据映射到元数据中,这里主要是获取block_report块与datanode的映射关系,添加到BlocksMap中[hx1] ,然后再把这个datanode添加到heartsbeats中进行监控。

 

4》启动datanode线程。周期性向namenode发送block_Report和heartbeats,同时接受namenode的指令。

3、Secondary namenode的启动

注册到namenode,并且从namenode同步当前的fsimage,edits等文件信息;启动secondary namenode上用于轮训的进程,定期执行检查点的创建操作。

 

 

三、写操作的流程

http://www.cnblogs.com/laov/p/3434917.html

1、client通知namenode,获得datanodes

2、具体写每个block和package(内部复制)

3、写别的block

4、通知nn结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值