HDFS的简单介绍,体系结构和数据流

▶ \blacktriangleright HDFS简单介绍 (Hadoop核心技术止之一)
  • 优缺点

    • 优点:

      • 运行在廉价的硬件之上
      • 适合存储超大文件
      • 流式数据访问:一次写入多次读取
    • 缺点:

      • 不适合低延迟数据访问 : HDFS是为了处理大型数据集分析任务、为达到高的数据吞吐量而设计的
      • 无法高效存储大量的小文件 :namenode是存储源文件并放置在内存中的,文件系统所能容纳的文件数目由namenode的内存大小决定
      • 不支持多用户写入及任意修改文件 :在HDFS的一个文件中只有一个写入者,而且写操作只能在文件末尾完成,也就是说只能执行追加操作
▶ \blacktriangleright 组成架构
  • 主控节点NameNode和从控系节点DataNode

  • HDFS集群有两类节点,并以管理者-工作者模式运行,即一个NameNode(管理者)和多个DataNode(工作者)

    • NameNode:

      • 保存文件系统的3种元数据
        1. 命名空间
        2. 数据块与文件名的映射
        3. 每个数据块副本的位置细信息,每个数据块默认有3个副本
      • 可以执行文件操作(打开、关闭、重命名),负责向DataNode分配数据块并建立数据块和DataNode的对应关系
    • DataNode:用来实际存储和管理文件的数据块

    • 负责处理文件系统用户具体的数据读写请求,同时也处理NameNode对数据块的创建和删除副本的指令

  • 文件块大小:为了提高硬盘的效率,文件系统中最小的读写为单位不是字节,而是一种数据块(Block)

    • Hadoop2.x中 ,HDFS文件每个数据块默认的大小是128MB;同时为了防止数据丢失,每个数据块默认有3个副本,且3个副本会分别复制在不同的节点上,以避免因一个节点失效造成一个数据块的彻底丢失
    • Hadoop1.x : 64MB
    • 在hdfs.site.xml文件中通过配置项dfs.replication来设置每个HDFS块在Hadoop集群中保存的的份数,值越大,冗余性越好,占用存储也越,默认值是3,也就是说有2份冗余
  • 心跳

  • Client


▶ \blacktriangleright HDFS的基本文件访问过程
  1. 用户的应用程序通过HDFS的客户端程序将文件名发送至NameNode
  2. NameNode接收到文件名之后,在HDFS目录中检索文件名对应的数据块,在根据数据块信息找到保存数据块的DataNode地址,将这些地址会送到客户端
  3. 客户端接收到DataNode地址之后,和这些DataNode并行的进行数据传输操作,同时将操作结果的相关日志提交到NameNode

▶ \blacktriangleright HDFS的数据流
  • 读数据流程

    1. 使用HDFS提供的客户端开发库Client,向远程的NameNode发起请求
    2. NameNode 会视情况返回文件的部分或者全部Block列表,对于每个Block,NameNode都会返回由该Block复制的DataNode地址
    3. Client会选取离客户端最近的DataNode来读取Block,如果客户端本身就是DataNode,那就直接从本地直接获取数据
    4. 读取完当前的Block的数据后,关闭和当前的DataNode的连接,为下一个Block寻找最佳的DataNode
    5. 读完列表的Block后,并且文件读取还没有结束,Client会继续通知NameNode获取下一批的Block列表
    6. 读取完一个Block会进行checksum验证,如果读取DataNode时出现错误,客户端会通知NameNode,然后再从下一个拥有该BlocfuzhideDataNode地址继续 读
      在这里插入图片描述
  • 写数据流程

    1. 使用HDFS提供的客户端开发库Client,向远程的RPC发起请求
    2. NameNode会检查要创建的文件是否已经存在,创建者是否有权限进行该操作,检查成功则会为文件常见一个记录,失败就让客户端抛出异常
    3. 当客户端开始写入文件时,会将文件切分成多个packet,并在内部以数据队列的形式管理这些packet,并且向NameNode申请新的Block,获取用来存储replicas合适的DataNode列表,列表的大小根据NameNode中队replication的设置而定

在这里插入图片描述

  • 网络拓扑-节点距离计算

    • 节点距离:两个节点到达最近的共同祖先的距离总和。
  • 副本存储节点选择(机架感知)

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值