HDFS概念笔记

一、基本概念

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是什麽?这将有助于我们是以后的运维使用和故障排除思路的获得。 HDFS采用mast...
    W_Bousquet阅读 2,859评论 0 2
  • Hadoop分布式文件系统(HDFS)是一种分布式文件系统。它与现有的分布式文件系统有许多相似之处。但是,与其他分...
    逍遥ii阅读 680评论 3 20
  • 目录一 HDFS概念1.概念2.组成3 HDFS 文件块大小二.HDFS命令行操作1.基本语法2.参数大全3.常用...
    Movle阅读 378评论 0 5
  • 同理心是站在对方的角度和位置上,客观地理解对方的内心感受,把这种理解传达给对方的一种沟通交流方式。同理心就是将心比...
    翟小俊阅读 101评论 0 8
  • 还记得《辣妈正传》里孙丽带着主妇们在商场血拼换型的镜头吗.....女人要的就是这股爱美、自信劲,你真以为你为家操劳...
    女人的第三世界阅读 478评论 0 3