LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 300|回复: 0

Hadoop架构

[复制链接]
发表于 2024-1-2 16:22:30 | 显示全部楼层 |阅读模式
Hadoop 有一个主从拓扑网络,在这个拓扑里面,有一个 master 节点和多个 slave 节点。master 节点的功能就是把任务分配到多个 slave 节点和管理资源。这些 slave 节点是真正运行计算代码和存储数据的机器。而 Master 节点存储的是元数据(即关于数据的数据),元数据包括哪些呢?下面会详细介绍。

Hadoop 架构由3大组件构成:
HDFS
Yarn
MapReduce

HDFS
HDFS 即 Hadoop 分布式文件系统。它为 Hadoop 提供数据存储功能。HDFS 把大的数据文件划分成一个个小的数据单元叫做块(block),并以分布式的方式存储这些块。HDFS 有两个守护进程,一个运行在 master 节点——NameNode,另一个运行在 slave 节点——DataNode。

NameNode和DataNode
HDFS 也是一种 Master-slave 架构,NameNode 是运行 master 节点的进程,它负责命名空间管理和文件访问控制。DataNode 是运行在 slave 节点的进程,它负责存储实际的业务数据。在 HDFS 内部,一个文件会被划分成许多数据块,并存储在多个 slave 节点。Namenode 管理文件系统命名空间的修改,比如,打开,关闭和重命名文件或者目录这些操作。NameNode 会对数据块与DataNode 的映射关系进行维护和跟踪。DataNode 接收来自文件系统客户端的读写请求。还会根据 NameNode 的指令创建,删除和复制数据块。


HDFS的块概念

块是计算机系统最小的存储单元。它是分配给文件的最小的连续存储单元。在 Hadoop,也有块的概念,只是比计算机系统的块要大得多,默认是128MB或者256MB。
hdfs块概念
在指定 block 大小的时候要非常谨慎。为了解释原因,让我们举个例子,假如一个文件有700MB,如果 block 大小设置为128MB,那么 HDFS 会把这个文件划分成6个 block。5个128MB,一个是60MB。如果 block 的大小4KB,这个时候会出现什么情况呢?在 HDFS 里面,文件大小一般都是TB到PB级别。每个 block 是4KB的话,那么文件会被划分成很多小的 block。这时,NameNode 将会创建大量元数据,这些元数据的量将会塞满NameNode 的内存,导致 NameNode 运行效率低下,甚至奔溃。因此,在选择 HDFS 块大小的时候应该格外小心。

副本管理
为了实现数据容错,HDFS 使用了一种复制技术,它会把块复制到不同的 DataNode 节点。副本因子决定了一个数据块可以被复制多少个,默认是3个,其实这个副本因子我们可以配置成任何值。


上面这个图展示了 HDFS 的块复制机制。如果我们有一个1G的文件,复制因子是3,那么存储这个文件就需要3G的容量。
为了维护复制因子,NameNode 会从各个 DataNode 收集块报告,当块的副本数大于或者小于复制因子时,NameNode 将会响应的删除和新增块副本。

机架感知

一个机架都会有很多个 DataNode 机器,在生产环境下,一般都会有好几个这样的机架。HDFS 根据机架感知算法,以分布式方式放置块的副本。机架感知算法具有低延迟和容错特性。假如把复制因子配置为3,那么按照这个算法,HDFS 会把第一个 block 放在本地机架,把另外两个 block 放在另外一个机架的不同 DataNode 节点。HDFS 不会在同一个机架存放超过2个 block。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表