Hadoop----hdfs篇

hdfs概述

  • HDFS(Hadoop Distributed File System)
    hadoop中的文件系统,用于存储文件。是分布式的,由多个服务器联合起来实现其功能。
  • **使用场景:**适合一次写入多次读取的场景,不支持文件修改,但可追加

hdfs特点

  • 1.高容错性

    自动保存多个副本(默认3个),某一副本丢失后可自动恢复

  • 2. 适合大数据处理

    (1)数据规模:可处理达到PB级别的数据
    (2)文本规模:可处理百万规模以上的文件数量
    注:hdfs中文件在物理上是以block(块)为单位存储的(默认一块128M)

  • 3. 可构建在廉价机器上

hdfs组成架构

一个主/从架构。即一个NameNode(主机),多个datanode(从机,通常一个节点一个)。

  • 1. NN(NameNode)

    –管理数据块的映射(即保存元数据信息)
    –处理客户端请求
    –配置副本策略
    –管理hdfs的命名空间

  • 注: namenode内存中存储的是fsimage+edits
    fsimage(镜像文件):元数据,文件系统的目录树,即各数据块的映射信息()
    edits(编辑日志):fsimage之后针对文件系统修改的操作记录

  • 2. 2NN(SecondaryNameNode)

    –NN的助手,分担NN的工作量,定时从NN中获取fsimage+edits并进行合并,形成最新的fsimage并发给NN
    –是NN的冷备,即NN挂掉时不能代替NN,因为始终缺了最新的edits那部分数据

  • 3. DN(DataNode)

    –存储数据块
    –执行客户端请求

hdfs读写流程

(1)客户端写数据流程
客户端写数据流程在这里插入图片描述

  • – 客户端向NN发出上传文件请求
    – NN检查后(是否已有重名文件;是否有写权限)回复客户端是否可上传
    – 客户端收到可上传响应后向NN申请上传第一块数据
    – NN返回数据块存入的位置,即DN信息

    – 客户端创建写入流
    – 客户端向网络拓扑距离最近的节点请求建立传输通道
    – 第一个节点收到请求后依次传给其他节点,并依次应答给客户端
    – 客户端收到应答成功的信息后开始向第一个节点传输第一块数据(以数据包的形式),第一个节点将收到的数据先放入缓存,然后边写入 本地边向其他节点传输(备份)
    – 数据传输完成后,客户端向NN请求上传第二块数据,依此类推,所有块传输完成后,客户端通知NN数据传输完成
    – 客户端关闭写入流

(2)客户端读数据流程
在这里插入图片描述

  • – 客户端向NN发出下载文件请求
    – NN检查(文件是否存在;是否有读权限)通过后,将文件的位置信息(DN)返回给客户端
    – 客户端拿到数据块位置信息后,打开数据读入流,与网络拓扑距离最近的DN节点建立通信并请求下载第一块数据
    – DN节点就会将第一块数据返回给客户端(以数据包为单位)
    – 客户端以包为单位接收,先在本地缓存,然后写入目标文件
    – 依此类推,进入第二块数据的下载,流程同第一块

hdfs-NN和2NN工作机制(NameNode和SecondaryNameNode)

在这里插入图片描述

说明:

NN:是运行在内存中的(因为要随时访问并相应客户端请求),NN中存储fsimage和edits
2NN:用于定时合并NN中的镜像文件和编辑日志

工作机制

  • – 集群刚启动时,NN将磁盘中的镜像文件fsimage读入内存,加载最后的编辑日志edits(seen_txid中保存最后一个edits数字)中的更新操作,得到完整的数据;(即集群刚启动时NN就对镜像文件和编辑日志进行了一次合并)

    – 当客户端对数据进行增删改后,NN就会将操作记录写入新的编辑日志edits
    – 2NN每隔1分钟向NN请求一次checkpoint,检查是否需要合并;当:最新的编辑日志数据满了(100万条操作记录)或时间过了一个小时就需要合并

    – NN滚动创建一个新的edits文件(此后更新操作写入该文件),并将当前正在写的edits文件重命名和fsimage一起发给2NN
    – 2NN将这两个文件加载到内存进行合并,形成最新的fsimage文件并发给NN
    – NN用2NN发过来的fsimage替换当前内存中的fsimage文件

hdfs-DN工作机制(DataNode)

在这里插入图片描述

  • – DN启动后会根据集群ID向NN注册自己的信息,并汇报自己所持有的数据块信息
    – 之后DN每隔1小时向NN汇报自己所持有的数据块信息
    – DN每3秒心跳一次,让NN知道自己还存活并带回NN给自己的命令
    – 当NN超过10分30秒没有收到某个DN的心跳,就会认为该节点不可用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值