指定hdfs中namenode的地址_HDFS(一)

本文介绍了HDFS的起源、应用场景及架构,重点解析NameNode的作用和工作流程,包括数据块、副本策略和机架感知。同时,强调了Secondary NameNode的角色,为后续的HDFS操作做铺垫。
摘要由CSDN通过智能技术生成

2013年,谷歌发布了三篇影响大数据领域格局的文章,也称作三驾马车,分别是GFS、MapReduce和BigTable。后来Doug Cutting根据GFS的论文创建了分布式文件系统HDFS,他也被称为Hadoop之父。

单个机器的容量往往无法满足包含大量数据文件的存储,需要跨机器存储,分布在集群上统一管理,这样的文件系统称为分布式文件系统。HDFS使用多台计算机存储文件, 并且提供统一的访问接口, 用户像是访问一个普通文件系统一样使用分布式文件系统。

HDFS的应用场景

HDFS适用于以下场景:

存储非常大的文件,M、G、TB级别,需要高吞吐量,对时延没有要求;

采用流式的数据访问方式,即一次写入、多次读取,不顾延迟的代价,一次把数据读完;

Hadoop可运行于普通廉价机器,节约成本,高容错性,为数据存储提供了所需的扩展能力。

HDFS不适用于以下场景:

低延时的数据访问,对延时要求在毫秒级别的应用,不适合采用HDFS;

大量的小文件,文件的元数据保存在NameNode的内存中, 整个文件系统的文件数量会受限于NameNode的内存大小;

多方读写,需要任意的文件修改HDFS采用追加的方式写入数据,不支持文件任意的修改,不支持多个写入器。

HDFS架构

c6d718ca8fe299981ba10d4749b7f015.png

工作流程:

3f2d7f6102b74da03aa0532d5d534f9b.png

HDFS是一个主从架构,主要由Client、NameNode、DataNode和Secondary NameNode四部分组成。

Client(客户端):

文件上传至HDFS时,Client 将文件切分成若干的Block块,然后进行存储。

与NameNode交互,获取文件的位置信息。

与DataNode交互,读取或者写入数据。Client 提供一些命令来管理和访问HDFS,如启动或者关闭HDFS。

NameNode(Master):主要负责文件元数据的操作、管理 HDFS 的名称空间管理数据块(Block)、映射信息、配置副本策略、处理客户端读写请求。

NameNode在内存中保存着整个文件系统的名称空间和文件数据块的地址映射。根据名称空间可以获取文件的所有真正数据,通过地址映射可以获取每个Block切片的位置信息。

元数据信息:文件的文件名,目录结构,属性(生成时间,副本数,权限)、文件的块列表,以及列表中的块与块所在的DataNode之间的地址映射关系,在内存中加载文件系统中每个文件和每个数据块的引用关系(文件、Block、DataNode之间的映射信息)。

持久化机制:由于元数据信息保存在NameNode的内存中,内存中数据是临时存储的,当NameNode重启后原来的数据会丢失,因此元数据信息会定期保存到本地磁盘fsImage文件(镜像文件)和edits文件(日志文件)中,重启后读取这些文件即可恢复数据。

心跳机制:一段时间内NameNode若接受到DataNode的心跳信息,则认为DataNode工作正常,若在一定时间内未接受到DataNode的心跳,则认为DataNode已经宕机 ,NameNode会把DataNode上的数据块重新复制。 

NameNode具有副本机制,根据全局情况做出放置副本的策略,决定副本文件数据块到底存放到哪些DataNode上。

DataNode(Slave):DataNode根据NameNode下达的命令执行实际的操作,存储实际的数据块或执行数据块的读/写操作。

数据流不经过NameNode,会询问它跟那个DataNode联系,DataNode负责处理文件内容的读写请求。Data Node周期性向NameNode汇报数据块信息、缓存数据块信息。对于经常访问的信息放在缓存中读取速度远远快于磁盘,可以有效提高效率。

Secondary NameNode:它不是NameNode的热备,只能辅助 NameNode,由于NameNode内存中存放了大量的元数据信息,Secondary NameNode可以分担它的工作量,定期合并fsimage和fsedits文件,并发送给NameNode。在紧急情况下,可辅助恢复 NameNode。

HDFS的文件副本机制

所有的文件都是以 Block 块的方式存放在HDFS文件系统当中, 一个文件有可能大于集群中任意一个磁盘,引入块机制,可以很好的解决这个问题。

使用块作为文件存储的逻辑单位可以简化存储子系统,块非常适合用于数据备份进而提供数据容错能力。

在2.x版本的Hadoop中,Block块大小默认为128M,在之前搭建Hadoop集群中的配置文件hdfs-site.xml中,dfs.blocksize用于设置Block的大小,单位为字节:

1342077b57f18763fc777985862de7b9.png

HDFS的副本策略,默认的副本数为3:

2216da5066631c98be333a0527bb38fb.png

HDFS的机架感知策略

bfec5e98abbb67a07a262495ae400648.png

机架就是存放服务器的架子:

de4cf8e6165e2e529458edd1ba3851b1.png

以默认的副本数为例,第一个副本会存放在和客户端同一个机器,第二个副本采用随机的方式或者考虑机器容量,放在和客户端同机架不同的机器上,第三个副本采用随机的方式或者考虑机器容量,放在和客户端不同机架的机器上。

关于HDFS的理论知识是非常重要的。后面后继续介绍HDFS的命令行操作,文件读写以及API操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值