首页 > 大数据 > Hadoop > hadoop 源码分析HDFS架构演进
Hadoop 大版本有三个,Hadoop1、hadoop2、Hadoop3,对应的HDFS 也有三个版本 HDFS1、HDFS2、HDFS3,本文会介绍 三个版本之间的架构区别
Namenode 主要是接收客户端的请求和负责元数据管理,而 Datanode 主要就是负责存储数据。Datanode 中存储的数据都是一个个的块,每个块大小默认 64M
具体使用一个客户端上传数据的示例来说明:
然后把这些 block 存储在不同的 datanode 上,并且为每个 block 生成 3 个副3.
而每个 block 存在哪个 datanode上以及哪些 block 属于一个文件这些信息都存储在 Namanode 上,这些数据就是元数据
Namanode 为了快速响应用户的请求,还会把这些元数据放到内存中。
虽然 HDFS1 解决了分布式存储的问题,但是他的设计还是有一些缺陷,比如:
HA
解决单点问题,使用
联邦
解决内存受限问题。
这里所属的
支持亿级流量
具体是指客户端的请求,因为 Namenode 管理元数据,所有任务在执行的时候都要请求 Namenode 的元数据,而一旦任务多了这个请求量还是很可观的。
所以 Namenode 必须可以应对 亿级 的元数据请求,为了应对这么大流量的访问所以 Namenode 才把所有的元数据信息都放到内存中了。
但是又为了数据安全,Namenode 又会把 元数据信息放到磁盘上,且为了 HA 元数据还得写到 JournalNode 集群中。
那就是
双缓冲和
分端加锁
内存1中,当
内存1中的数据写到一定程度的时候,把
内存1 与
内存2交换(这里是指针交换,不是内存的copy),然后把交换后的内存刷新到磁盘或者Journalnode中。
在 Namenode 元数据管理这块,HDFS 使用了多线程去实现的,很多地方加了使用
synchronized 加了锁,但是它并没有对所有代码加锁,而是只对有线程安全问题的地方加锁。
推荐阅读:
https://www.jianshu.com/p/0ff7a26494d9
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69949806/viewspace-2915340/ ,如需转载,请注明出处,否则将追究法律责任。