HDFS架构设计

HDFS架构设计
进程
namenode nn 名称节点
secondary namenode snn 第二名称节点
datanode dn 数据节点

主从架构
Rack : 机架 可以放多个主机 10个 GPU主机 5个

nn: 文件系统的命名空间
a.文件名称
b.文件目录结构
c.文件属性 创建时间 权限 副本数
d.文件对应哪些数据块
-->数据块对应哪些datanode节点上
blockmap
nn节点不会持久化存储这种映射关系
dn定期发送blockreport 给nn,
以此nn在【内存】中动态维护这种映射关系!

假设 nn 8G内存,如果小文件很多会撑爆了内存

(生产上 hdfs不适合存储小文件?为什么不合适?如果真的有小文件,该怎么办?该怎么合并)
1个小文件: nn节点需要250字节
1亿: 1亿*250字节 大

假如真的有小文件 合并
100小文件合并一个大文件 : nn节点需要300字节
1亿/100 * 300字节 小

建议: 合并为一个文件尽量在块大小 120m <=128m

作用:
管理文件系统的命名空间,
维护文件系统树,以两种文件永久保存在磁盘上
命名空间镜像文件 fsimage
编辑日志editlog
[root@hadoop001 current]# pwd
/tmp/hadoop-root/dfs/name/current
[root@hadoop001 current]# ll
total 1040
-rw-r--r--. 1 root root 1048576 Feb 17 20:23 edits_inprogress_0000000000000000001
-rw-r--r--. 1 root root 321 Feb 17 19:23 fsimage_0000000000000000000
-rw-r--r--. 1 root root 62 Feb 17 19:23 fsimage_0000000000000000000.md5
-rw-r--r--. 1 root root 2 Feb 17 19:23 seen_txid
-rw-r--r--. 1 root root 219 Feb 17 19:23 VERSION
[root@hadoop001 current]#

dn:
存储: 数据块 和数据块的校验和
与nn通信:
a.每隔3秒发送一个心跳
hadoop001:50070
b.每10次心跳发送一次当前节点的blockreport
作用: 读写文件的数据块

snn:
存储: fsiamge+editlog
作用: 定期合并fsimage+editlog文件为新的fsimage文件
推送个nn节点,简称为检查点 checkpoint
参数 :
dfs.namenode.checkpoint.period 3600s

snn对nn每一小时备份一次,如果nn在12点30挂了,文件损坏,那么12点到12点半的数据相当于的数据snn没有备份,用snn恢复只能恢复到12点的数据,所以这种架构是不可靠的,这种架构是在hadoop1.x上的架构,后边有出现了HA,他有两个nn,做了实时的热备,snn相当于做了一个冷备,HA如果一个节点nn挂了,另一个nn瞬间起来,对外提供服务。

editlog: 读写的记录  
fsiamge: 读写的记录

所在目录/tmp/hadoop-root/dfs/name/current

secondarynamenode就是用来备份编辑日志和镜像文件的

猜你喜欢

转载自www.cnblogs.com/xuziyu/p/10426399.html