您的位置:首页 > 运维架构

(Hadoop学习笔记-3) HDFS工作原理

2017-12-15 22:08 218 查看

一、HDFS最基本运行流程



1.组成:

NameNode: 存放文件的元数据信息(数据分成了多少个block,多少副本,不同的block分到了哪些DataNode上),也即hdfs文件系统中的文件与真实的block之间的映射关系。其格式为:filename,replicas,block_id,id2host(文件名,副本数,block_id,block到主机NameNode的映射),结合上图好好体会。

DataNode:数据节点,提供真实文件数据的存储服务,即存储的是blocks。不同的数据节点在不同的主机上,多个主机可以在一个rack(机架)上,这样一个rack断电,其他rack仍然工作。分布式存储可以有效降低负载,提高数据的可靠性以及访问的吞吐量。

Secondary NameNode: 主要负责将操作日志文件中的元数据信息与元数据镜像文件合并。这个下面会具体讲工作流程,这里先忽略。

2.HDFS基本机制:

因为这里和下面讲的有很大重叠,所以这里先浅讲

(1) 首先,client上传文件到HDFS文件系统的虚拟目录/hdfs://host-name:9000/…下,它以为数据就存放在这个目录下,其实不然,但对于用户,它只需这样以为就足够了。

(2)实际上,在client提出上传请求时,NameNode会响应它元数据信息,告诉client文件应该分成多少块,存放在哪些DataNode上;同时也会告诉datanode应该复制多少样本,复制在哪。

(3)然后,另一个client想下载这个文件,它会在虚拟目录/hdfs://host-name:9000/…下直接下载得到文件,它以为它是这样得到的,其实不然,但对于用户,它只需这样以为就足够了。

(4)实际上,client请求下载时,NameNode会告诉它在哪些datanode中下载。然后,client去对应的datanode中把block下载下来,合并成一个block得到最终的完整的文件。

二、HDFS具体的工作原理

1. 写文件到HDFS



1.client上传文件到hdfs,发出上传请求

2.Namenode首先往edits中记录元数据操作日志,并返回元数据信息给client(即分成多少block,不同block放在哪些datanode上)

3.client根据namenode返回的信息,对文件进行切分,写入到datanode中

4.datanode再将block复制到其他datanode上,并向namenode返回成功信息,若失败,则重新分配datanode进行复制

5.client上传文件成功后,将成功信息返回给NameNode,NameNode将本次元数据信息写入内存(方便数据的读取)

6.当edits写满时,需要将这一段时间内新的元数据刷到fs_image文件中,这个过程在secondary namenode中进行

6.1 首先Namenode通知Secondary Namenode进行checkpoint操作

6.2 然后Namenode会停止往edits中写数据,而是生成一个edits.new文件,数据写入edits.new

6.3 secondary namenode会从namenode下载 fs_image 和 edits,合并为fs_image.checkpoint

6.4 secondary namenode将fs_image.checkpoint上传到namenode,改名为fs_image,替换原文件;同时edits.new改名为edits,并替换原文件

2. 从HDFS读文件

读文件这块就和浅讲里一样,我们通过具体的presentation来讲述

(事先清空了HDFS里的文件,并上传了一个大于128M的压缩包文件(jdk-8u151-linux-x64.tar.gz)到HDFS系统)

首先,在server中dfs的服务器存储目录下,我们有一个文件的两个数据块



然后,client把这两个数据块下载下来,我们把它们复制到home下,模拟文件下载的过程(因为真实情况你是看不到下载数据块并合并这两个过程的)。



接着,手动合并:

cat blk_...89 >> blk_...88


这样的话,合并后的文件应该就是完整的文件,进行解压验证。

然后,解压:

tar -zxvf blk_...88


得到了解压后的文件,说明合并后的文件就是完整的文件。



另外,再上传一个小文件(jpg 图片) ,我们在服务器存储目录下,发现了该block:



这再次说明,大block经过合并,就是完整文件,小block就是完整文件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: