BigData-03:hadoop体系结构

本文深入解析HDFS(Hadoop分布式文件系统)的体系架构,包括NameNode、DataNode和SecondaryNameNode的角色与职责,阐述HDFS的数据上传、下载过程及高级特性如安全模式、快照、配额和回收站的使用。同时,介绍了HDFS底层的RPC和代理对象机制。

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

HDFS:数据存储

(一)HDFS的体系架构
	1、NameNode:名称节点
		(*)职责:
			(1)是HDFS的主节点、管理员
			(2)接收客户端(命令行、Java程序)的请求:创建目录、上传数据、下载数据、删除数据等等
			(3)管理和维护HDFS的日志和元信息
				(*)日志文件(edits文件):记录的是客户端的所有操作,同时体现了HDFS的最新的状态
					 是一个二进制文件
					 位置:$HADOOP_HOME/tmp/dfs/name/current
					 edits_inprogress_0000000000000000107 代表:正在操作的日志文件
					 
					 举例:hdfs dfs -mkdir /aaa
					 HDFS提供了一个日志查看器(edits viewer),把edits文件转成文本(XML)格式
					   命令:hdfs oev -i edits_inprogress_0000000000000000107 -o ~/a.xml
					   
					   
				(*)元信息文件(fsimage文件):记录的是数据块的位置信息、数据块的冗余信息
				     没有提现HDFS的最新状态
				     是一个二进制文件
					 位置:$HADOOP_HOME/tmp/dfs/name/current
					 HDFS提供了一个元信息查看器(image viewer),把fsimage文件转为文本或者xml都可以
				
	2、DataNode:数据节点
		(*)职责:按照数据块保存数据库
		            1.x: 64M
					2.x:128M
					
		(*)数据块:表现形式:就是一个文件(blk*******)
				位置:/root/training/hadoop-2.7.3/tmp/dfs/data/current/BP-419062579-192.168.157.111-1535553141546/current/finalized/subdir0/subdir0
				
				举例:上传一个大于128M的文件
				
		(*)设置数据块冗余度原则:一般跟数据节点的个数一样;但是最大不要超过3
		(*)Hadoop 3.x以前,会造成存储空间的极大浪费
		     Hadoop 3.x以后,HDFS纠删码技术,大大的节约存储的空间(节约一半 )
	
	3、SecondaryNameNode:第二名称节点
		职责:进行日志信息的合并
		
		(*)由于edits文件记录了最新的状态信息,并且随着操作越多,edits就会越大
		(*)把edits中的最新信息写到fsimage中
		(*)edits文件就可以清空
		
		补充点知识:检查点checkpoint
		(*)Spark中的RDD的检查点:容错机制
		(*)Oracle中的检查点:会以最高优先级唤醒数据库的写进程,将脏数据写入硬盘文件

二、HDFS的原理分析(非常重要)
1、数据上传的过程
2、数据下载的过程

三、HDFS的高级特性
1、安全模式 safe mode
注意:HDFS正常运行的时候,安全模式一定是off(关闭状态)
是HDFS的一种自我保护,作用:检查数据块的副本率
HDFS处于安全模式,是只读的状态

2、快照:是一种备份
	命令:
		[-allowSnapshot <snapshotDir>]
		[-disallowSnapshot <snapshotDir>]
		
3、配额:Quota	
	(1)名称配额
		[-setQuota <quota> <dirname>...<dirname>]
		[-clrQuota <dirname>...<dirname>]
	
	(2)空间配额
		[-setSpaceQuota <quota> [-storageType <storagetype>] <dirname>...<dirname>]
		[-clrSpaceQuota [-storageType <storagetype>] <dirname>...<dirname>]

4、回收站:默认HDFS的回收站禁用	

四、HDFS底层的原理
1、RPC
2、代理对象

1、RPC:remote proceduer call 远程过程调用(协议)
2、Java的动态代理对象
	(*)如果一个类的名字前面有$,表示这是一个代理对象
	(*)是一种包装设计模式
	(*)可以增强类的功能
	(*)举例:Java的动态代理对象应用场景(典型:数据库连接池)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

phial03

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值