大数据科普系列(五) HDFS概述

发布讲师:朱明虎

发布时间:2019年11月06日

浏览量:1564(次)

简介:

HDFS(Hadoop Distributed File System), Hadoop分布式文件系统,主要用来解决海量数据的存储问题,在大数据系统架构中为各类分布式运算框架(MapReduce、Spark、Tez,Flink等)提供数据存储服务。

 

前面我们已经讲过分布式的存储原理,下面来看看HDFS具体的架构实现:

5-1.png

    从上图可以看到,HDFS集群有3种角色:

    a)NameNode:主节点,集群老大,管理整个文件系统的目录树,负责处理客户端读写请求

    b)SecondaryNameNode:合并元数据,用来帮NameNode分担压力

    c)DataNode:从节点,存储所有文件的数据块,真正处理数据读写

 

HDFS中的文件是在物理上进行了分块存储(block),为保证数据安全,每个数据块默认存3份。而数据块的大小可以通过配置参数(dfs.blocksize)来设定,默认值在hadoop2.x版本中是128M,3.x是256M。即一个500M的文件在2.x版本的Hadoop系统中默认会被分成4个块,每个块都是一式三份存在3个不同节点。


我们再来了解一下HDFS的优缺点:

    1. 优点

      1. 适合大数据处理, GB、TB、甚至 PB 级数据,百万规模以上的文件数量,10K+节点规模

      2. 被设计用来构建在廉价机器上,通过多副本提高可靠性,提供了容错和恢复机制

      3. 高容错性,数据自动保存多个副本,副本丢失后,自动恢复

      4. 流式文件访问,一次性写入,多次读取,保证数据一致性

    2. 缺点

      1. 延迟高(涉及到多个节点之间相互通信)

      2. 不适合存储小文件(因为元数据信息存储在NameNode内存中,一条block元数据信息大约消耗150Byte,存储1亿个block的话就需要大概15GB内存,增加了NameNode的压力,从而降低整个集群的性能)

      3. 不适合并发写入、随机修改场景,因为HDFS是采用追加的方式写入数据

    

    最后再向大家介绍几个常用的HDFS Shell指令:

  1. 查看文件:hadoop fs -ls hdfs路径

  2. 上传文件:hadoop fs -put 本地路径 hdfs路径

  3. 下载文件:hadoop fs -get hdfs路径

  4. 创建文件夹:hadoop fs -mkdir hdfs路径

  5. 查看文件内容:hadoop fs -cat hdfs路径

  6. 删除文件(夹):hadoop fs –rm –r hdfs路径

 

自此,相信大家对于HDFS已经有了进一步的体会,我们下期再会!