HDFS是如何设计架构的?
前言
Hadoop到目前为止发展已经有10余年,版本经过无数次的更新迭代,目前业内大家把Hadoop大的版本分为Hadoop1.0、Hadoop2.0、Hadoop3.0 三个版本。
一、Hadoop 简介
Hadoop版本刚出来的时候是为了解决两个问题:一是海量数据如何存储的问题,一个是海量数据如何HD计算的问题。Hadoop的核心设计就是HDFS和 Mapreduce.HDFS解决了海量数据如何存储的问题, Mapreduce解决了海量数据如何计算的问题。HDFS的全称:Hadoop Distributed File System。
二、分布式文件系统
图片 HDFS其实就可以理解为一个分布式文件系统,可以看如图1所示有4个FS服务器是不是都有他自己的文件系统都可以进行存储数据,假设每个服务器的存储空间存储10G的数据。假设数据量很小的时候存储10G的数据还是ok的当数据量大于服务器的存储空间时是不是单个服务器就没法存储了。 我们是不是可以在服务器中部署一个Hadoop这样就能构建出一个集群(超级大电脑)。这样就存储 4*10=40G的数据是如量,这样我们面向用户时是不是只有一台超级大的电脑相当于一个分布式文件系统。
HDFS是一个主从的架构、主节点只有一个NemeNode。从节点有多个DataNode。
三、HDFS 架构
图片 假设我们这里有5台服务器每台服务器都部署上Hadoop,我们随便选择一台服务器部署上NameNode剩下服务器部署上DataN何设ode。
客户端上传文件时假设文件大小为129MHDFS默认切分的大小为128M这时就会产生出2个blkNameNode去通知DataNode上传文件(这里有一定的策略),我们就假设就将这几个文件分别存储在4个服务器上。为什们要进行分别存储在,假设DataNode服务器有一天突然挂掉了我们是不是还可通过Da计架taNode4或2和3进行读取数据,这样是不是就防止数据丢失。
NameNode
管理元数据信息(文件目录树):文件与Block块,Block块与DataNode主机关系 NameNode为快速响应用户操作,所以把元数据信息加载到内存里
DataNode
存储数据,把上传的数据划分固定大小文件块(Block)在Had构的oop2.73之前是64M之后改为了128M 为了保证数据安全,每个文件默认都是三个副本
SecondaryNamenode
周期性的到NameNode节点拉取Edtis和fsimage文件,将这两个文件加入到内存进行 然后将这两个文件加入到内存中进行合并产生新的fsimage发送给NameNode。
四、HDFHDS写入数据流程
客户端会带着文件路径向NameNode发送写入请求通过 RPC 与 NameNode 建立通讯, NameNode 检查目标文件,返回是否可以上传; Client 请求第一个 block 该传输到哪些 DataNode 服务器上; NameNode 根据副本数量和副本放置策略进行节点分配,返回DataNode节点,如:A,BFS,C Client 请求A节点建立pipeline管道,A收到请求会继续调用B,然后B调用C,将整个pipeline管道建立完成后,逐级返回消息到Client; Client收到A返回的消息之后开始往A上传第一个block块,block块被切分成64K的packet包不断的在pepiline管道里传递,从A到B,B到是如C进行复制存储 当一个 block块 传输完成之后,Client 再次请求 NameNode 上传第二个block块的存储节点,不断往复存储 当所有block块传输完成之后,Client调用FSDataOutputSteam的close方法关闭输出流,最后调用FileSystem的complete方法告知NameNode数据何设写入成功
五、HDFS读取数据流程
客户端会先带着读取路径向NameNode发送读取请求,通过 RPC 与 NameNode 建立通讯,NameNode检查目标文件,来确定请求文件 block块的位置信息 NameNode会视情况返回文件的部分或者全部block块列表,对于每个block块,NameNode 都会返回含有该 bloc计架k副本的 DataNode 地址 这些返回的 DataNode 地址,会按照集群拓扑结构得出 DataNode 与客户端的距离,然后进行排序,排序两个规则:网络拓扑结构中距离 Client 近的排靠前;心跳机制中超时汇报的 DN 状态为 STALE,这样的排靠后; Client 选取排序靠前的 DataNode 调用FSDataInputS构的team的read方法来读取 block块数据,如果客户端本身就是DataNode,那么将从本地直接获取block块数据 当读完一批的 block块后,若文件读取还没有结束,客户端会继续向NameNode 获取下一批的 block 列表,继续读取 所有block块读取完成后,Client调用FSDataInputStreaHDm.close()方法,关闭输入流,并将读取来所有的 block块合并成一个完整的最终文件
六、HDFS缺陷
注意:早期版本
单点问题 内存受限
总结
上述给大家讲解了简单的HDFS架构,我在最后面留了一个小问题,我会在下期通过画图的方式给大家讲解,我在这里为大家提供大数据的资料需要的朋友可以去下面GitHub去下载,信FS自己,努力和汗水总会能得到回报的。我是大数据老哥,我们下期见~~~
(责任编辑:新品发布)
- 谷歌即将推出 “AI 模式” 作为默认搜索体验,允许用户在初次搜索后与 AI 继续对话
- 钉钉AI表格助理正式上线:一句话生成表格,打造企业级AI应用平台
- 第一个AI教堂关了!这位被川普特赦的谷歌前工程师曾为AI封神
- 云安全日报210330:Apache Druid开源分布式数据库发现远程代码执行漏洞,需要尽快升级
- DeepL 推出企业级 AI 智能体,挑战 OpenAI 与微软
- 浜戣�绠楁牳蹇冩妧鏈疍ocker鏁欑▼锛氬湪 ECS 涓婇儴缃� Docker 瀹瑰櫒
- 外媒:微软将耗资20亿美元在印度推出第四个数据中心
- AI安全新独角兽诞生:Irregular获巨额融资,模拟环境预测模型风险
- 标签: 法拉第未来 贾跃亭 FFAI PhysicalAI
- 中山大学联合美团打造X-SAM模型,单次操作可分割多个对象,20项测试全面领先
- Opera 推出 Neon 浏览器,三款 AI 助手共舞引发用户混淆
- 苹果居然把耳机卖到了四千多?来看看这些同类产品,最低仅799
- 标签: 小米 蔚来 易车 AutoReport汽车产经
- 标签: 多益网络 高新技术企业 广州
- 标签: 王石 万科地产 深圳 造谣
- 标签: 长安汽车 韩某 内幕交易 投服中心
- 数据分析的 7 种武器
- 阿里云领投硅基流动数亿元A轮融资
- 标签: 爱理财的小羊 D基金公司 A产品 蚂蚁财富
- 对话神策数据桑文锋:后疫情时代如何开展营销工作?
- Solidigm推出D5-P5430数据中心QLC SSD views+
- 如何增强并保护混合、多云 IT 环境? views+
- 标签: 搜狐 views+
- 谷歌:引领ML发展的迁移学习,究竟在迁移什么?丨NeurIPS 2020 views+
- 标签: 追觅汽车 蔚来 荣耀机器人 李斌 views+
- 标签: 中国移动 陈忠岳 杨杰 views+
- 云计算核心技术Docker教程:使用scratch 创建一个简单的父图像 views+
- 苹果推出全新 FS-DFM 模型,AI 长文本写作效率提升128倍! views+
- 谷歌和脸书在美面临的五起反垄断诉讼:规模和关键指控分别为何 views+
- 标签: 小米汽车 李女士 定金返还 格式条款 views+
