美文网首页
HDFS概念笔记

HDFS概念笔记

作者: 一只森林鹿Luluzeng | 来源:发表于2020-03-12 11:21 被阅读0次

    一、基本概念

    1、HDFS介绍

    HDFS是Hadoop Distribute File System(分布式文件系统)的简称。是Hadoop核心组件之一,作为最底层的分布式存储服务而存在。

    解决问题:大数据存储。是横跨在多台计算机上的存储系统。分布式文件系统为存储和处理超大规模数据提供所需的扩展能力。

    传统存储模式到HDFS的历程:

    1)传统存储,上传/下载耗时;

    2)传统存储遇到存储瓶颈时,纵向扩展加磁盘加内存,但始终有上限;

    3)继而进行横向扩展,增加服务器。对文件分割成更小的块,每个块放到不同的服务器进行分布式存储(datanode)。这解决了上传的问题,但是读取文件成本变高。所以需要一个记录文件切割及保存在哪里的相关信息(namenode);

    4)且如果其中一个宕机挂掉了,那么就无法读取。为了解决单点故障,可以把文件进行备份存储(snn)。

    datanode,存放数据的

    namenode,记录数据的位置

    snn,数据备份

    整个集群加起来就是HDFS

    2、HDFS设计目标

    1、硬件故障时常态。故障的检测和自动快速恢复;

    2、HDFS被设计成时候批量处理,而不是用户交互式的。注重数据访问的高吞吐量;

    3、支持大文件,GB到TB级别;

    4、write-one-red-many,一次写入多次读取;

    5、移动计算的代价比移动数据的代价低;

    6、在异构的硬件和软件平台上的可移植性。

    二、HDFS重要特性

    首先它是一个文件系统,用于存储文件,通过统一的命名空间目录树来定位文件。其次它是分布式的,有很多服务器联合起来实现其功能,集群中的服务器有各自的角色,

    1、master/slave架构(主从架构)

    一般HDFS集群是有一个namenode和一定数量的DataNode组成,NameNode是集群主节点,DataNode是集群从节点。2种角色各司其事,协调完成分布式文件存储服务。

    2、分块存储

    HDFS的文件在物理上是分块存储的。块的大小通过配置参数来决定。默认是128M(Hadoop2.x版本)。

    3、名字空间(NameSpace)

    HDFS支持传统的层次型文件组织结构。NameNode负责维护文件系统的名字空间。任何文件系统名字空间或属性的修改都将被namenode记录下来。HDFS会给客户端提供一个统一抽象目录树,客户端通过路径来访问文件,例如:hdfs://namede:port/dir-a/dir-b/dir-c/file.data。

    4、Namenode元数据管理

    元数据:目录机构及文件分块位置信息叫元数据。namenode负责维护整个HDFS文件系统的目录树结构,以及每个文件对于的block快信息(block的id,所做的DataNode服务器)

    5、DataNode数据存储

    文件的各个block具体存储管理有DataNode节点承担。每个block都可以在多个DataNode上。DataNode需要定时想namenode汇报自己持有的block信息。存储多个副本(副本数量也可以通过参数设置dfs.replication,默认是3)。注意:常说的副本个数一般要连同自己本身

    6、副本机制

    为了容错,文件的所有block都会有副本。每个文件的block大小和副本系数都是可配置的。应用程序可以指定某个文件的副本数据。副本系统可以在文件创建的时候指定,也可以在之后改变。

    7、一次写入,多次读出

    HDF不支持文件的修改。正因为如此,HDFS适合用来做大数据分析的底层存储服务,并不适用来做网盘等。因为修改不方便,延迟大,网络开销大,成本太高。

    三、HDFS基本操作

    1、Shell命令行客户端

    hadoop fs <args>

    文件系统shell包括与Hadoop已经Hadoop支持的其他系统(如本地FS,HFTP FS,S3 FS等)直接交互的各类类似shell的命令。

    四、HDFS基本原理

    1、NameNode

    1)是HDFS的核心

    2)又称为Master

    3)NameNode仅存储HDFS的元数据:文件系统中所有文件的目录树,并跟踪给整个集群中的文件

    4)NameNode不存储实际数据或数据集。数据本身实际存储在DataNodes中。

    5)namenode知道HDFS中任何给定的文件的块列表及其位置。使用此信息namenode知道如何从块中构建文件。(如果不知道,那么存储服务就是失败的)

    6)为了提高响应效率。元数据保存在内存当中,对元数据做定时备份。NameNode并不会持久化存储每个文件中各个块所在的DataNode位置(不会保存在日志当中,也不会保存在镜像当中,只会在内存元素中有),这些信息会在系统启动时草赶时间节点重建。

    7)NameNode对于HDFS至关重要,当NameNode关闭时,HDFS/Hadoop集群无法访问。

    8)NameNode是Hadoop集群中的单点故障。单独故障:它如果出了问题,其他不可以用。

    9)NameNode所在集群通常会配置大量内存(RAM)

    2、DataNode

    1)DataNode负责将实际数据存储在HDFS中。

    2)DataNode也称为slave。

    3)DataNode和NameNode

    4)DataNode启动时,它将腹部自己到namenode,并汇报自己负责持有的块列表。

    5)当某个DataNode关闭时,不加影响数据或集群可用性。DataNode将安排其他DataNode管理的块进行副本复制。

    6)DataNode所在机器通常配置大量硬盘空间。因为实际数据存储在DataNode中。

    7)DataNode会定金(dfs.heartbeat.interval配置项配置,默认3s)想namenode发送心跳,如果namenode长时间没收到心跳,namenode就会认为该DataNode失效。

    8)block汇报持有块,汇报时间间隔取参数dfs,blockreport.intervaIMsec,默认6小时

    五、HDFS工作机制

    NameNode(1个)负责整个文件系统元数据;DataNode(可能多个)负责管理具体文件数据块存储;Secondary NameNode(理解为秘书)协助NameNode进行元数据备份。

    HDFS的内容部工作机制对客户端保持透明,客户端请求访问HDFS都是通过向namenode申请来进行。

    六、HDFS数据流程

    七、案例:Shell定时采集数据至HDFS

        一般日志文件生成的逻辑有业务系统决定,比如每小时滚动一次,或者一定大小滚动一次,避免单个日志文件多大不方便操作。

        比如滚动后的文件命名为access.log.x,其中x为数字。正在进行写的日志文件叫access.log。这样的话,如果日志文件后缀有数字的,就满足上传条件,就把这些文件移动到准备上传的工作区间目录(比如叫toupoad)。工作区间有文件夹之后,可以试用Hadoop put命名将文件上传。

    相关文章

      网友评论

          本文标题:HDFS概念笔记

          本文链接:https://www.haomeiwen.com/subject/hbiidhtx.html