4、HDFS分布式文件系统的基本概念理解

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_41685388/article/details/102665059

HDFS

Hadoop Distributed file System Hadoop分布式文件系统,主要用来解决海量数据的存储问题。

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

设计思路

将大文件,大批量文件,分布式的存储在大量(廉价)的服务器上。以便于采取分而治之的方式对海量数据进行运算分析。(分而治之,分散存储,冗余备份)

Hdfs在大数据中的应用:

为各类分布式运算框架(MapReduce ,Spark ,Tez ,Flink,....·..)提供数据存储服务。

Hdfs架构(主[master]从[slave]架构):

--  namenode(nn)   --->master

       *保存元数据信息:目录树,文件名称,文件属性,文件的块信息,block的存放列表,...

       *接受客服端的请求与响应

       *下达命令给datanode

--  datanode(dn)   --->slave

       *用于存储具体的block信息,block的校验文件

       *真正执行读写的位置

       *定期汇报节点的block状态

--  secondarynamenode(2nn)

       *辅助namenode,减轻压力

Hdfs的特点:

--1、HDFS 中的文件在物理上是分块存储(block),块的大小可以通过配置参数(dfs.blocksize) 来规定,默认大小在 hadoop2.x 版本中是 128M, hadoop1.x版本中是 64M 。
 
--2、HDFS 文件系统会给客户端提供一个统一的抽象目录树,客户端通过路径来访问文件。

如:hdfs://namenode:port/dir-a/dir-b/dir-c/file.data     如: hdfs://hadoop02:9000/soft/jdk.tar.gz 
 
--3、目录结构及文件分块位置信息(元数据)的管理由 namenode 节点承担。namenode 是 HDFS 集群主节点,负责维护整个 hdfs 文件系统的目录树,以及每一个路径(文 件)所对应的 block 块信息(block 的 id,及所在的 datanode 服务器) 
 
--4、文件的各个 block 的存储管理由 datanode 节点承担。datanode 是 HDFS 集群的从节点,每一个 block 都可以在多个 datanode 上存储多个副本(副本数量也可以通过参数设置 dfs.replication,默认是 3) 
 
--5、HDFS 是设计成适应一次写入,多次读出的场景,且不支持文件的修改 ,但是支持追加。
 
--6、不便修改,延迟大,网络开销大,成本太高。适用于做数据分析,并不适合用来做网盘应用。

Hdfs的优点:

--1、可以构建在相对廉价机器上。(通过多副本备份提高可靠性,提供了容错和恢复机制)

--2、高容错性。(数据建立保存了多个副本,副本一旦丢失后,可以自动恢复)

--3、适合批处理。(移动计算机而非数据,数据位置暴露给计算机框架)

--4、适合大数据处理。(TB、GB级数据)

--5、流式文件访问。(一次写入,可多次读取,保证数据一致性)

Hdfs的缺点:

--1、不适合小文件存取。(每个小文件至少占用一个block,一个block最多存一个文件,一个 block 元信息消耗大约 150 byte 内存,存放1亿个block,大约消耗了20GB内存 ,如果一个小文件10k,1亿个文件大小约为1TB,但消耗namenode 的20GB内存)。

--2、不适合低延迟数据访问。它是高延迟,低吞吐率的(比如:毫秒级数据访问几乎不可能)

--3、不能进行文件修改和并发写入,但支持追加append。(一个文件只能有一个写者)

猜你喜欢

转载自blog.csdn.net/weixin_41685388/article/details/102665059