HDFS详解一之HDFS架构设计

HDFS架构设计

架构图:

进程有三个:

namenode nn 名称节点

secondary namenode snn 第二名称节点

datanode dn 数据节点

 hdfs架构是主从架构

Rack :  机架      一个机架可以放多个主机 正常可以放10个   有些GPU主机放 5个主机 GPU主机特别耗电

比如上图中机架1号Rack1放3个主机,机架2号Rack2放2个主机。

这里是物理机架,后面还有虚拟机架。

(面试可能会问到)

nn(老大): 文件系统的命名空间 ,它就是维护这个文件系统的,维护元数据信息

a.文件名称
b.文件目录结构
c.文件属性 创建时间 权限 副本数
d.文件对应哪些数据块
    -->数据块对应哪些datanode节点上(比如A块有三个副本,这三个副本分别放在哪些datanode上)

blockmap块的映射:一个文件分为哪些块,有哪些副本数,这些块分别放在哪些datanode节点上
nn节点不会持久化存储这种映射关系,它是动态变化的
dn定期发送blockreport(块报告) 给nn,(比如告诉它这个节点有哪些块,块的情况怎样等等)
以此nn在【内存】中动态维护这种映射关系!

假设生产上机器内存是 8G,如果小文件特别特别多。结果会撑爆。原因:

维护这些小文件要在hdfs上nn里去维护,比如说文件名称,目录,映射关系等等,假如说维护1个小文件,需要250个字节

那如果是1亿个小文件呢?那就是 1亿*250个字节  估计需要20多G的内存。那么就会把nn节点撑爆了。

那么加入生产上确实有很多小文件怎么办?那就合并

比如说:100小文件合并一个大文件 : nn节点需要300字节  那么1亿个小文件,就是1亿/100 * 300字节  估计才200多M的内存

生产经验建议: 合并为一个文件后,尽量在块大小 ,小于等于128M,比如120M

生产上,hdfs合并小文件有哪些方法?(面试可能问到)

待补充。。。。。

namenode作用:
管理文件系统的命名空间,
维护文件系统树,以两种文件永久保存在磁盘上
    ①命名空间镜像文件 fsimage
    ②编辑日志editlog

[root@hadoop001 current]# pwd
/tmp/hadoop-hadoop/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(小弟干活的)

(hdfs高容错 :比如三个副本 只要有一个没有问题就可以)
dn:
做存储的:  ①存储数据块   ②还有数据块的 校验和   ,一般要么去读要么写 读写的时候根据校验和看数据块是不是损坏 
与nn通信:
      a.datanode每隔3秒向namenode发送一个心跳,告诉nn我还活着
      b.每10次心跳发送一次当前节点的blockreport
dn作用: 读写文件的数据块

snn(万年老二):

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

snn定期对nn做备份,12点的时候snn对nn做了备份,12点半如果nn挂了,这个时候用snn对nn进行恢复,只能恢复到12点的那个状态。这个是1.0版本的。后面还有实时的备份 热备。

参照官网:Apache Hadoop 3.3.4 – HDFS Architecture

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值