什么是hdfs

hadoop分布式文件系统,作为大数据生态圈最底层而存在
横跨多台计算机上的存储系统
hdfs用多台计算机存储文件并且提供统一的访问接口
是高度同错的
一主多从的架构
image.png

  • 数据 存储的内容本身

  • 元数据 解释性数据

    文件系统元数据一般为 文件大小 最后修改时间 底层存储位置 属性 所属用户 权限等信息

HDFS起源和发展

这里就不记了,纯纯八股
image.png
image.png
image.png
hadoop不能直接对文件内容进行修改

hadoop特性

image.png

  • 主从架构
    master/slave 主从架构集群 ,有一个Namenode和一定数目的datanode实现,namenode为主节点,datanode为分节点

  • 分块存储 (blocks)
    物理上分块存储 默认大小128M
    可以修改hdfs-default.xml来修改dfs.blocksize

  • 副本机制(RepLication)
    默认三个副本,额外复制两份 ,用dfs.replication控制

  • 元数据记录

    文件自身属性信息:文件名称 权限 修改时间 复制银子 文件块大小
    文件块位置映射信息:记录文件快和Datanode之间的映射

  • 抽象统一的目录结构

    namespace
    层次性文件组织结构,由namenode负责维护

  • 数据块存储

    各个Block由datanode节点承担
    每一个Block可以在多个datanode上存储
    image.png
    image.png

hdfs shell操作

可以使用 hadoop fs[generic options]

  • HDFS shell CLI 支持多个操作系统

  • 具体操作什么文件系统取决于URL协议

  • 默认访问的文件系统取决于fs.defaultFS属性,以该属性值为默认文件系统
    image.png
    image.png

创建文件夹

image.png

查看目录下内容

image.png

上传文件到HDFS指定目录下

image.png
上传文件取决于你本地的客户端

查看

image.png
同样的tail也可以用

下载HDFS文件

image.png

拷贝

image.png

追加数据操作

image.png

  • 主要用于小文件的追加合并

HDFS重命名

image.png

HDFS职能

image.png

主角色 :namenode

  • Namenode为hadoop分布式文件系统的核心

  • 维护管理文件系统元数据 目录树结构,文件和块的位置信息

  • 为访问HDFS的唯一入口

  • 内部通过内存和磁盘文件管理元数据
    image.png

从角色 datanode
  • Datanode是从属角色,负责具体的数据块存储

主角色辅助角色 secondarynamenode
  • 辅助namenode

  • 帮助主角色进行元数据文件的合并

namenode职责

image.png

datanode职责

image.png

namenode需要大内存,datanode需要大磁盘

HDFS写数据流程

image.png

Pipeline管道

客户端将数据块写入第一个数据节点,每个节点保存数据之后复制到第二个数据节点一以此类推
image.png
为什么不用拓扑式传输?
充分利用带宽,减少同步延时

ACK响应

去复习计网
image.png

三副本存储策略
  • 默认副本存储策略由BlockPlacementPolicyDefault决定

  • 第一块副本 优先本地

  • 第二块副本 不同于第一块副本的不同机架

  • 第三块副本 第二块副本相同机架不同机器
    image.png

上传文件具体过程

image.png
image.png
image.png
image.png
客户端先找namenode->用pipline传递客户端和datanode->上传过程中要考虑三副本策略