Hadoop --- HDFS介绍

这篇具有很好参考价值的文章主要介绍了Hadoop --- HDFS介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

HDFS 全称是Hadoop Distributed File System hadoop分布式(cluser)文件存储系统。适合一次写入,多次读出的场景。

HDFS不需要单独安装,安装Hadoop的时候带了HDFS系统。

Hadoop安装可以参考: 

  1. 有基础的,已经安装了虚拟机的 : Hadoop安装
  2. 没有基础, 也没有安装虚拟机的: Hadoop集群安装

HDFS的优缺点:

  • 优点:高容错性,适合处理大数据,可构建在廉价机器上
  • 缺点:不适合低延时数据访问;无法高效对大量小文件进行存储,不支持并发写入、数据修改。

HDFS文件块大小:

HDFS中的文件再物理上是分块存储,块的大小可以通过配置参数(dfs.blocksize)来规定,默认大小在Hadoop2.x/3.x版本中是128M,1.x版本中是64M

注:寻址时间为传输时间的1%时,为最佳状态

思考:为什么块的大小不能设置太小,也不能设置太大?
(1)HDFS的块设置太小,会增加寻址时间
(2)块太大,从磁盘传输数据的时间会明显大于定位这个块开始位置所需的时间。导致程序处理块数据时,会非常慢。
总结:HDFS块的大小设置主要取决于磁盘的传输速率。

HDFS结构: 

HDFS是一个主/从体系结构(经典的Master和Slave架构)。

HDFS由四部分组成,HDFS Client,NameNode,DataNode和Secondary NameNode。

每一个HDFS集群包括一个NameNode和多个DataNode

hadoop hdfs,大数据,hadoop,hdfs,大数据

1、Client客户端 

通过Client来访问文件系统,然后由Client与NameNode和DataNode进行通信。Client对外作为文件系统的接口

  • 文件切分,文件上传HDFS的时候,将文件切分成一个一个的数据块(Block)进行存储
  • 与NameNode交互,获取文件位置
  • 与DataNode交互,读取或写入数据。存储实际的数据块,执行数据库的读写操作
  • Client提供一些命令来管理HDFS,比如NameNode格式化
  • Client可以通过一些命令来访问HDFS,比如对HDFS增删改查操作

2、NameNode ( nn ) 

相当于一个Master,管理者。 用于存储和管理文件元数据、维护文件系统的目录结构树,记录写入的每个数据块(Block)与其归属文件的对应关系。

  • 管理HDFS的名称空间
  • 配置副本策略
  • 管理数据块的映射信息
  • 处理客户端的读写请求

3.dataNode 

DataNode会通过心跳和NameNode保持通信。DataNode负责存储文件的数据(block块),并提供block的读写,并且定期的向NameNode汇报该DataNode存储的数据块信息

4、Secondary NameNode

Secondary NameNode的作用是消费EditsLog,定期地合并FsImage和EditsLog,生成新的FsImage文件,并推送给NameNode,降低了NameNode的压力。 在紧急情况下,可辅助恢复NameNode。

SecondaryNameNode机制:

  1. SecondaryNameNode不是NameNode挂了的备用节点
  2. 他的主要功能只是定期合并日志, 防止日志文件变得过大
  3. 合并过后的镜像文件在NameNode上也会保存一份

SecondaryNameNode工作过程:

  1. SecondaryNameNode向NameNode发起同步请求, 此时NameNode会将日志都写到新的日志当中
  2. SecondaryNameNode向NameNode下载镜像文件+日志文件
  3. SecondaryNameNode开始Merge这两份文件并生成新的镜像文件
  4. SecondaryNameNode向NameNode传回新的镜像文件
  5. NameNode文件将新的镜像文件和日志文件替换成当前正在使用的文件

注: 

1、FsImage(文件系统镜像二进制)
  存储某一个时间点(checkPoint)的NameNode镜像数据
  默认存储位置 : /opt/install/hadoop-2.5.2/data/tmp/dfs/name
  dfs.namenode.name.dir
   
 2、EditsLog 
   可编辑日志二进制 记录(检查点以后的所有写操作)
   默认存储位置 :dfs.namenode.edits.dir 

HDFS高可用设计: 

数据存储故障容错: 

磁盘在存储数据可能会出现错乱。HDFS对于存储在DataNode上的数据块,计算并存储校验和(CkeckSum)。在读取数据的时候,重新计算读取出来的数据的校验和,如果校验不正确就抛出异常,应用程序捕获异常后就到其他DataNode上读取备份数据。

磁盘故障容错:

如果DataNode检测到本机的磁盘损坏,就将磁盘上存储的BlockID报告给NameNode, NameNode检查这些数据块的备份,通知相应的DataNode服务,将对应的数据恢复到其他服务器上,以保证数据块备份数满足要求。

DataNode故障容错:

DataNode会通过心跳和NameNode保持通信,偌DataNode超时未发送心跳,NameNode就认为该DataNode已经宕机,并立即查找DataNode上的数据块,以及这些数据块所在的服务器,随后通知这些服务器再复制一份数据到其他服务器上,以保证HDFS存储的数据块备份数符合要求。

NameNode故障容错: 

NameNode是整个HDFS的核心, 记录这所有文件的分配信息,以及所有文件路径和数据块存储信息。如果NameNode故障, 整个HDFS系统集群都无法使用,如果NameNode的数据丢失,整个集群的所有DataNode数据也就无用了。所以NameNode采用主从热备的方式提供高可用服务。如下图: 

hadoop hdfs,大数据,hadoop,hdfs,大数据

HDFS读写过程:

写流程: 

hadoop hdfs,大数据,hadoop,hdfs,大数据

  1. 请求上传:client向namenode通信,请求上传文件
  2. namenode判断是否可上传: namenode检查用户是否有上传的权限、目标文件是否已存在、父目录是否存在 
  3. 文件切分:client将文件切分成0~128M大小的block块(逻辑切分)
  4. client请求block块的存储位置
  5. namenode返回datanode地址dn1、dn2、dn3
  6. client通过FSDataOutputStream模块请求dn1上传数据,建立连接管道(本质上是一个 RPC 调用,建立 pipeline)
  7. 当dn1收到请求后会继续调用dn2, dn2调用dn3,将整个通信管道建立完成,然后逐级返回client,即图中的ack校验
  8. client开始往dn1上传第一个Block(先从磁盘读取数据放到一个本地内存缓存),以Packet为单位(默认64k),dn1收到一个Packet就会传给dn2,dn2传给dn3;dn1每传一个packet会放入一个应答队列等待应答
  9. 当一个Block传输完成之后,client再次请求NameNode上传第二个Block的服务器(重复执行4-8步)
  10. 传输完毕之后,客户端关闭流资源,并且会告诉hdfs数据传输完毕,然后hdfs收到传输完毕就恢复元数据

读流程: 

hadoop hdfs,大数据,hadoop,hdfs,大数据

  1. Client 向 NameNode 发起 RPC 请求,来确定请求文件 block 所在的位置;
  2. NameNode 会视情况返回文件的部分或者全部 block 列表,对于每个 block,NameNode 都会返回含有该 block 副本的 DataNode 地址;
  3. 这些返回的 DataNode 地址,会按照集群拓扑结构得出 DataNode 与客户端的距离,然后进行排序,排序两个规则:网络拓扑结构中距离Client近的排靠前;心跳机制中超时汇报的 DataNode 状态为 STALE,这样的排靠后;
  4. Client 选取排序靠前的 DataNode 来读取 block,如果客户端本身就是 DataNode,那么将从本地直接获取数据;底层上本质是建立 Socket Stream(FSDataInputStream),重复的调用父类 DataInputStream 的 read 方法,直到这个块上的数据读取完毕;
  5. 当读完列表的 block 后,若文件读取还没有结束,客户端会继续向 NameNode 获取下一批的 block 列表;
  6. 读取完一个 block 都会进行 checksum 验证,如果读取 DataNode 时出现错误,客户端会通知 NameNode,然后再从下一个拥有该 block 副本的 DataNode 继续读。
  7. read 方法是并行的读取 block 信息,不是一块一块的读取;NameNode 只是返回 Client 请求包含块的 DataNode 地址,并不是返回请求块的数据;
  8. 最终读取来所有的 block 会合并成一个完整的最终文件。 

 HDFS存储模型: 

  1. 文件按字节线性切割成block块, 具有offset、id

  2. 一个文件除了最后一个block, 其它block大小一致

  3. block大小依据硬件的I/O 特性调整

  4. block被分散在集群的节点中,具有location

  5. block具有副本(replication), 没有主从概念,副本不能出现在同一个节点

  6. 副本是满足可靠性和性能的关键

  7. 文件上传可以指定block大小和副本数,上传后只能修改副本数

  8. 一次写入多次读取,不支持修改,只支持追加数据 文章来源地址https://www.toymoban.com/news/detail-693202.html

到了这里,关于Hadoop --- HDFS介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据技术之Hadoop(HDFS)

    1)HDFS产生背景 随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是 分布式文件管理系统 。HDFS只是分布式文件管理系统中的一种。 2)HDFS定义

    2024年02月04日
    浏览(30)
  • Hadoop理论及实践-HDFS读写数据流程(参考Hadoop官网)

    主节点和副本节点通常指的是Hadoop分布式文件系统(HDFS)中的NameNode和DataNode。 NameNode(主节点):NameNode是Hadoop集群中的一个核心组件,它负责管理文件系统的命名空间和元数据。它记录了文件的目录结构、文件的块分配信息以及每个文件块所在的DataNode等关键信息。NameNo

    2024年02月14日
    浏览(35)
  • 尚硅谷大数据技术Hadoop教程-笔记03【Hadoop-HDFS】

    视频地址: 尚硅谷大数据Hadoop教程(Hadoop 3.x安装搭建到集群调优) 尚硅谷大数据技术Hadoop教程-笔记01【大数据概论】 尚硅谷大数据技术Hadoop教程-笔记02【Hadoop-入门】 尚硅谷大数据技术Hadoop教程-笔记03【Hadoop-HDFS】 尚硅谷大数据技术Hadoop教程-笔记04【Hadoop-MapReduce】 尚硅谷

    2023年04月08日
    浏览(67)
  • 0201hdfs集群部署-hadoop-大数据学习

    下面我们配置下单namenode节点hadoop集群,使用vmware虚拟机环境搭建。vmware虚拟机的配置,在下面链接2有,或者自行查阅文档。hadoop安装包可到官网下载,当前相关软件环境如下: 软件 版本 说明 hadoop 3.3.4 jar包 vmware 15.5 虚拟机 centos 7.6 服务器操作系统 xshell 6 远程连接 jdk 1.8

    2024年02月11日
    浏览(28)
  • HDFS 跨集群数据同步(hive,hadoop)

    两个不同的HDFS 集群数据迁移( A集群的数据 - B 集群) 采用的是 SHELL 脚本  按表进行; 日期分区进行; #!/bin/bash ##################### #创建人:DZH #创建日期: 2020-04 #内容: 数据迁移 ##################### ##################################### [ \\\"$#\\\" -ne 0 ] FILE=$1 path=$(cd `dirname $0`; pwd) ############## 获取执

    2024年04月27日
    浏览(32)
  • 大数据技术之Hadoop(HDFS)——超详细

    1.1 HDFS产出背景及定义 1)HDFS产生背景 先给大家介绍一下什么叫HDFS,我们生活在信息爆炸的时代,随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这

    2024年02月03日
    浏览(40)
  • Hadoop HDFS:海量数据的存储解决方案

    在大数据时代,数据的存储与处理成为了业界面临的一大挑战。Hadoop的分布式文件系统(Hadoop Distributed File System,简称HDFS)作为一个高可靠性、高扩展性的文件系统,提供了处理海量数据的有效解决方案。本文将深入探讨HDFS的设计原理、架构组成、核心功能以及实际应用场

    2024年04月23日
    浏览(29)
  • hadoop之hdfs生产数据块损坏修复方法

    1、手动修复 检查数据块丢失情况 hdfs fsck / 修复指定路径的hdfs文件,尝试多次 hdfs debug recoverLease -path 文件位置 -retries 重复次数 删除所有损坏的块的数据文件 hdfs fsck / -delete 2、自动修复 hdfs会自动修复损坏的数据块,当数据块损坏后, DN节点执行directoryscan(datanode进行内村和

    2023年04月11日
    浏览(46)
  • 大数据技术之Hadoop:使用命令操作HDFS(四)

    目录 一、创建文件夹 二、查看指定目录下的内容 三、上传文件到HDFS指定目录下 四、查看HDFS文件内容 五、下载HDFS文件 六、拷贝HDFS文件 七、HDFS数据移动操作 八、HDFS数据删除操作 九、HDFS的其他命令 十、hdfs web查看目录 十一、HDFS客户端工具 11.1 下载插件 11.2 本地安装Had

    2024年02月09日
    浏览(33)
  • 大数据技术之Hadoop:HDFS存储原理篇(五)

    目录 一、原理介绍 1.1 Block块 1.2 副本机制 二、fsck命令 2.1 设置默认副本数量 2.2 临时设置文件副本大小 2.3 fsck命令检查文件的副本数 2.4 block块大小的配置 三、NameNode元数据 3.1 NameNode作用 3.2 edits文件 3.3 FSImage文件 3.4 元素据合并控制参数 3.5 SecondaryNameNode的作用 四、HDFS的读

    2024年02月09日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包