大数据 Hadoop 学习笔记 04

2019-12-12  本文已影响0人  ProudLin

简介:
HDFS 集群有两类节点,一个是 NameNode (管理者)和多个 DataNode(工作者)。

DataNode 是文件系统的打工仔,听从客户(client)或者管理者(Namenode)的安排,还要定期向管理者反馈工作进展(所存储的块列表)。

目录:
一、 DataNode 的工作职责以及流程
二、 相关面试题


正文:
接着上一篇,聊聊 DataNode 这个"打工仔"。首先得搞清楚 DataNode 是什么地干活?职责如下。

心跳信息上报

块的大小可以通过配置参数( dfs.blocksize)来规定,默认大小在 hadoop2.x 版本中是 128 M,之前的版本中是 64 M。
一般来说,一个文件的长度 大小是 size,从文件的 0 偏移开始,按照固定大小以及顺序对文件进行划分并编号。也就是所谓的 Block(块)。
block 大小在 hdfs-site.xml 文件中可以配置, dfs.block.size可以设置。

hdfs-site.xml 的 dfs.replication 属性

属性

举个例子:
假如上传一个 256 MB 的文件,会被切割成 256 / 128 = 2 块,一个 block 对应一个 meta 元数据信息;如果文件为不足 128 MB 也是一个 block。

若一个文件为 129 MB,那么会被分成两个 block ,第一个 block 为 128 MB ,第二个 block 为 1 MB。

进入hdfs 存储位置

[hadoop1@h1 subdir0]$ pwd
 /home/hadoop1/app/hadoop-2.9.2/data/dfs/data/current/BP-1932602083-192.168.223.10-1575093118671/current/finalized/subdir0/subdir0
[hadoop1@h1 subdir0]$

注释:BP-random integer-NameNode-IP address-creation time(格式)

BP(BlockPool) Namenode 的 VERSION 中的集群唯一 blockpoolID ,可以理解为集群的位置。IP部分和时间戳代表创建该 BP 的 NameNode 的 IP 地址和创建时间戳。

在 hdfs 文件系统里,有个文件大小为 186.0 M,按照以上的分割规则 jdk-8u212-linux-x64.tar.gz 会被分割成两块,第一块为 128 MB,第二块为 186 -128 = 58 MB

[hadoop1@h1 subdir0]$ hadoop fs -ls -h hdfs://h1:9000/
 Found 1 items
-rw-r--r--   2 hadoop1 supergroup    186.0 M 2019-12-05 09:43 hdfs://h1:9000/jdk-8u212-linux-x64.tar.gz
 [hadoop1@h1 subdir0]$

执行 ll -h 查看命令

[hadoop1@h1 subdir0]$ ll -h
total 188M
-rw-rw-r--. 1 hadoop1 hadoop1 128M Dec  5 09:43 blk_1073741856
-rw-rw-r--. 1 hadoop1 hadoop1 1.1M Dec  5 09:43 blk_1073741856_1032.meta
-rw-rw-r--. 1 hadoop1 hadoop1  58M Dec  5 09:43 blk_1073741857
-rw-rw-r--. 1 hadoop1 hadoop1 464K Dec  5 09:43 blk_1073741857_1033.meta
[hadoop1@h1 subdir0]$

如上图所示,blk_1073741856 为第一块存储块 128 MB;blk_1073741857 为第二块存储块 58 MB。

试验证明了书上的理论没有骗人,至于 .meta 结尾的文件包含了 checksum (校验)信息。

留个面试题:
我们知道 HDFS 会在 DataNode 保留副本(默认是 3 块),那么假如其中的一块数据块损坏了该如何处置?

微信搜索公众号「一起学大数据呀」,里面有更多学习资料

上一篇 下一篇

猜你喜欢

热点阅读