地表最强系列之:带你学HDFS

HDFS是什么?

  1. 认识HDFS

HDFS是Hadoop项目的核心子项目,用于大数据领域的数据储存 。HDFS是被设计成适合运行在通用硬件上的分布式系统它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分。

  1. HDFS优点

     - 支持处理超大文件。这里的超大文件通常是指GB到TB量级的数据文件.
     - 可以运行在廉价的机器上,减少成本.
     - 高容错率。HDFFS上传的数据会自动保存多个副本,即通过增加副本的数量来增加HDFS的容错率。一个副本丢失,HDFS股本冗余机制会自动复制到其他机器上的副本。
     - 流式文件写入。HDFS提供一次写入、多次读取的服务。文件一旦写入,就不能修改,只能增加,可以提高I/O流的性能.
     - 
    
  • HDFS的缺点

      - 不适合低延迟数据访问场景.HDFS是为高吞吐数据传输设计的,因此可能牺牲延时HBase更适合低延时的数据访问。
      - 不适合小文件的储存场景.文件的元数据(如目录结构,文件block的节点列表,block-node mapping)保存在NameNode的内存中, 整个文件系统的文件数量会受限于NameNode的内存大小。 经验而言,一个文件/目录/文件块一般占有150字节的元数据内存空间。如果有100万个文件,每个文件占用1个文件块,则需要大约300M的内存。因此十亿级别的文件数量在现有商用机器上难以支持。
      - 不适合并发写入,文件随机修改的场景.
    

HDFS的架构

在这里插入图片描述

  • Client(客户端)

    • 文件切分。文件上传HDFS时,Client按照Block大小切分文件,然后进行存储
    • 与NameNode交互,获取文件位置信息
    • 与DataNode交互,读取或写入数据
    • Client提供一些命令管理和访问HDFS
  • 数据块(Block)

    • HDFS最基本的储存单位是数据块,CDH发行版默认的块大小是128MB
    • HDFS中的文件被分成以Block Size为单位的数据块结构储存,小于一个块大小的文件不会占据整个块的空间.
  • 元数据节点(NameNode)

    • 管理文件系统命名空间的主服务器和管理客户端对文件的访问组成,如打开,关闭和重命名文件和目录。负责管理文件目录、文件和block的对应关系以及block和datanode的对应关系,维护目录树,接管用户的请求。
  • 数据节点 (DataNode)

    • 保存块,每个块对应一个元数据信息文件.这个文件主要描述块属于哪个文件,是文件中第几块等信息.
    • 启动Datanode进程的时候向Namenode汇报块信息.
    • 通过向Namenode发送心跳与其保持联系(3秒一次),如果Namenode在10分钟还没有收到Datanode的心跳,则认为该Datanode已经丢失,Namenode会将该DataNode上的块复制到其他Datanode上
  • 从元数据节点(Secondary Namenode)
    Secondary Namenode 并不是Namenode宕机时的备用 节点,它的主要作用是周期性地将EditLog文件中对HDFS的操作合并到一个FsImage(镜像文件)文件中,然后清空Editlog文件,防止日志文件过大.合并后的FsImage文件也在元数据节点保存了一份,Namenode重启时就会加载最新的FsImage文件,这样周期性地合并可以减少HDFS重启时间.Secondary Namenode 是用来帮助Namenode将内存中的元数据信息持久化到硬盘上的.

HDFS命令

hdfs dfs   -ls  /-mkdir/-put/-rm/-help
这个和Linux相似

使用HDFS shell操作完成移动通信数据管理

  • 创建存放数据文件的目录
hdfs dfs -mkdir /hdfs/shell
hdfs dfs -ls /hdfs/shell
  • 将通讯数据上传到HDFS并查看
hdfs dfs -put /home/hadoop/data/mobile.txt /hdfs/shell
hdfs dfs -text /hdfs/shell/mobile.txt
  • 下载文件到本地
hdfs dfs -get /hdfs/shell/mobile.txt /home/hadoop
  • 统计目录下文件大小
hdfs dfs -du /hdfs/shell
  • 删除移动数据文件和目录
hdfs dfs -rm /hdfs/shell/mobile.txt
hdfs dfs -rmr /hdfs

HDFS的副本机制

副本的存放位置会严重影响HDFS的可靠性和性能,HDFS上的文件对应的块保存有多个副本且提供容错机制,因此副本的丢失或宕机能够自动恢复,默认保存3个副本.HDFS副本摆放机制如图
在这里插入图片描述

  • 副本的存放策略
    一般情况下,当副本设置为3时,HDFS的副本摆放策略是将第一个副本放置在上传文件的DataNode上,第二个副本放置在同一机架的不同节点上,第三个副本放置在不同机架上.该策略可以减少机架间的写流量,提高写性能,并且该策略不会影响数据的可靠性和可用性
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值