0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一文解析HDFS架构及读取写入数据流程

姚小熊27 来源:51cto 作者:51cto 2021-01-28 14:04 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Hadoop到目前为止发展已经有10余年,版本经过无数次的更新迭代,目前业内大家把Hadoop大的版本分为Hadoop1.0、Hadoop2.0、Hadoop3.0 三个版本。

一、Hadoop 简介

Hadoop版本刚出来的时候是为了解决两个问题:一是海量数据如何存储的问题,一个是海量数据如何计算的问题。Hadoop的核心设计就是HDFS和 Mapreduce.HDFS解决了海量数据如何存储的问题, Mapreduce解决了海量数据如何计算的问题。HDFS的全称:Hadoop Distributed File System。

二、分布式文件系统

图片 HDFS其实就可以理解为一个分布式文件系统,可以看如图1所示有4个服务器是不是都有他自己的文件系统都可以进行存储数据,假设每个服务器的存储空间存储10G的数据。假设数据量很小的时候存储10G的数据还是ok的当数据量大于服务器的存储空间时是不是单个服务器就没法存储了。 我们是不是可以在服务器中部署一个Hadoop这样就能构建出一个集群(超级大电脑)。这样就存储 4*10=40G的数据量,这样我们面向用户时是不是只有一台超级大的电脑相当于一个分布式文件系统。

HDFS是一个主从的架构、主节点只有一个NemeNode。从节点有多个DataNode。

三、HDFS 架构

图片 假设我们这里有5台服务器每台服务器都部署上Hadoop,我们随便选择一台服务器部署上NameNode剩下服务器部署上DataNode。

客户端上传文件时假设文件大小为129MHDFS默认切分的大小为128M这时就会产生出2个blkNameNode去通知DataNode上传文件(这里有一定的策略),我们就假设就将这几个文件分别存储在4个服务器上。为什们要进行分别存储在,假设DataNode服务器有一天突然挂掉了我们是不是还可通过DataNode4或2和3进行读取数据,这样是不是就防止数据丢失。

NameNode

管理元数据信息(文件目录树):文件与Block块,Block块与DataNode主机关系 NameNode为快速响应用户操作,所以把元数据信息加载到内存里

DataNode

存储数据,把上传的数据划分固定大小文件块(Block)在Hadoop2.73之前是64M之后改为了128M 为了保证数据安全,每个文件默认都是三个副本

SecondaryNamenode

周期性的到NameNode节点拉取Edtis和fsimage文件,将这两个文件加入到内存进行 然后将这两个文件加入到内存中进行合并产生新的fsimage发送给NameNode。

四、HDFS写入数据流程

客户端会带着文件路径向NameNode发送写入请求通过 RPC 与 NameNode 建立通讯, NameNode 检查目标文件,返回是否可以上传; Client 请求第一个 block 该传输到哪些 DataNode 服务器上; NameNode 根据副本数量和副本放置策略进行节点分配,返回DataNode节点,如:A,B,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 都会返回含有该 block副本的 DataNode 地址 这些返回的 DataNode 地址,会按照集群拓扑结构得出 DataNode 与客户端的距离,然后进行排序,排序两个规则:网络拓扑结构中距离 Client 近的排靠前;心跳机制中超时汇报的 DN 状态为 STALE,这样的排靠后; Client 选取排序靠前的 DataNode 调用FSDataInputSteam的read方法来读取 block块数据,如果客户端本身就是DataNode,那么将从本地直接获取block块数据 当读完一批的 block块后,若文件读取还没有结束,客户端会继续向NameNode 获取下一批的 block 列表,继续读取 所有block块读取完成后,Client调用FSDataInputStream.close()方法,关闭输入流,并将读取来所有的 block块合并成一个完整的最终文件

六、HDFS缺陷

注意:早期版本

单点问题 内存受限

总结

上述给大家讲解了简单的HDFS架构,我在最后面留了一个小问题,我会在下期通过画图的方式给大家讲解,我在这里为大家提供大数据的资料需要的朋友可以去下面GitHub去下载,信自己,努力和汗水总会能得到回报的。
责任编辑:YYX

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    7457

    浏览量

    96833
  • 存储
    +关注

    关注

    13

    文章

    5190

    浏览量

    91641
  • HDFS
    +关注

    关注

    1

    文章

    32

    浏览量

    10246
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    列车监控系统SSD持续写入稳定性:天硕工业级SSD解析轨道交通存储

    列车监控系统长期产生连续视频数据,SSD面临的关键问题并非短时峰值写入速度,而是长期持续写入过程中的性能稳定性。本文从视频数据负载出发,分析缓存、垃圾回收、写放大及闪存管理对SSD持续
    的头像 发表于 09-14 17:11 157次阅读

    多路传感器原始数据回放:自动驾驶采集‑回放体化设备选型解析

    、多路感知数据回放在智驾研发中的价值 在 ADAS 与高阶自动驾驶研发流程中,路测采集的多路相机、激光雷达、毫米波雷达原始数据,需要通过离线回放完成感知算法复现、问题定位、算法迭代,
    发表于 09-10 16:05

    马士兵-大数据架构师合集,嵌入式物联网工程师

    面向 P7 大数据架构师,马士兵企业级项目与源码解析合集 大数据行业正在经历场从\"会用工具\"到\"能定
    发表于 08-20 10:35

    马士兵-大数据架构师合集

    面向P7级大数据架构师的马士兵企业级项目与源码解析合集,核心是打破中高级大数据开发者“只会用组件、不敢碰源码、架构设计靠经验堆砌”的能力瓶颈
    发表于 08-19 11:13

    RK3588平台IMX766摄像头适配Patch全解析:驱动架构+软硬件数据流深度拆解

     是消费与工业领域主流的高规格图像传感器,具备大底、高动态、10bit RAW 输出等特性。 本文基于份完整的 Linux 内核适配 Patch,从 设备树配置、编译脚本、驱动源码架构、上电时序、全链
    的头像 发表于 06-16 07:07 922次阅读
    RK3588平台IMX766摄像头适配Patch全<b class='flag-5'>解析</b>:驱动<b class='flag-5'>架构</b>+软硬件<b class='flag-5'>数据流</b>深度拆解

    无人值守电子汽车衡系统如何实现?硬件架构数据流程与异常处理

    无人值守电子汽车衡系统并不是简单地给地磅增加车牌识别和道闸。完整系统需要将称重传感器、仪表、车辆识别、视频监控、流程控制、业务软件及数据接口进行联动,并处理断网、识别失败、车辆未完全上磅等异常情况。
    的头像 发表于 06-12 13:48 330次阅读

    读懂存储芯片筛选流程

    工业级存储芯片在高温环境下长时间工作时,可能出现数据读取错误、金属化电迁移、键合点疲劳等失效问题,从而影响系统整体可靠性。例如,研制的某款DDR3芯片在高温125℃的环境下持续工作10小时之后
    的头像 发表于 06-08 10:01 1605次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b>读懂存储芯片筛选<b class='flag-5'>流程</b>

    深度剖析U-Boot ADC Uclass:从架构到实战的全维度解析

    数据流到实战开发,全方位拆解 U-Boot ADC Uclass 的设计精髓,帮你吃透这核心子系统。 架构概览:三层架构,职责分明
    的头像 发表于 04-26 07:08 492次阅读
    深度剖析U-Boot ADC Uclass:从<b class='flag-5'>架构</b>到实战的全维度<b class='flag-5'>解析</b>

    搞懂瑞芯微平台Trust架构:从原理到问题排查全解析

    的 Trust 固件正是基于这技术构建的安全基石,承担着电源管理、安全隔离、数据保护等关键职能。本文将从基础原理、平台实现到问题排查,全面解析瑞芯微 Trust 架构的核心知识。
    的头像 发表于 04-13 16:14 5299次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b>搞懂瑞芯微平台Trust<b class='flag-5'>架构</b>:从原理到问题排查全<b class='flag-5'>解析</b>

    淘宝 API 技术架构与实战指南:从实时数据流到 AIGC 融合的电商开发新范式

    ​  在数字经济加速渗透的今天,淘宝开放平台 API 已从简单的数据交互工具进化为支撑电商创新的核心基础设施。2025 年,淘宝 API 体系迎来重大技术跃迁,实时数据流、GraphQL 接口与隐私
    的头像 发表于 04-07 16:10 786次阅读

    写入,永久锁定!OTP存储操作需谨慎

    今天,我们起来聊聊LuatOS中的OTP功能。 OTP(One-Time Programmable Memory) 是次性可编程存储。其核心特点是 “写入,永久锁定” ,
    的头像 发表于 01-27 17:52 1636次阅读
    <b class='flag-5'>一</b>次<b class='flag-5'>写入</b>,永久锁定!OTP存储操作需谨慎

    【瑞萨RA6E2地奇星开发板试用】内部Code flash和Data flash写入数据并通过OLED显示

    Flash 擦除、写入读取数据验证的全流程可行性,为后续嵌入式项目存储方案提供参考依据。 1.2 硬件与软件环境 类别 参数/配置 开发板 瑞萨RA6E2地奇星开发板 主控芯片
    发表于 12-12 20:15

    欧姆龙推出全新数据流边缘控制器DX1

    2025年11月,欧姆龙自动化(中国)有限公司发布新品【数据流控制器DX1】。DX1作为一款数据流边缘控制器,面对生产现场数据采集与活用困难、数据需求因人/设备而异、需关停设备才能引入
    的头像 发表于 11-26 18:02 1681次阅读
    欧姆龙推出全新<b class='flag-5'>数据流</b>边缘控制器DX1

    modbus消息帧的模块化架构介绍

    01/02/03/04 读取线圈/输入/保持寄存器 数据写入 05/06/15/16 写入单个/多个寄存器 诊断类 08/0B/0E 设备诊断/异常报告 3.
    发表于 11-17 08:15

    视频数据流传输的框架搭建思路

    采集模块是在 DDR3 和传感器都初始化完成之后才开始输出数据的,避免了在 DDR3 初始化过程中向里面写入数据。 为了避免当前读取的图像与上
    发表于 10-24 06:53