Hadoop 之 HDFS 进程详解

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 你好看官,里面请!今天笔者讲的是Hadoop 之 HDFS 进程详解。不懂或者觉得我写的有问题可以在评论区留言,我看到会及时回复。 注意:本文仅用于学习参考,不可用于商业用途,如需转载请跟我联系。

Hadoop 之 HDFS 进程详解

在使用Hadoop HDFS时,需要了解一些重要的概念和进程:

NameNode

NameNode是HDFS中最重要的进程,它负责管理文件系统的命名空间、数据块映射以及数据块的位置信息。每个HDFS集群只有一个活动的NameNode进程,多个备份节点用于提高可用性。

DataNode

DataNode是存储实际数据的进程,它将文件划分为数据块,并负责存储和检索这些数据块。每台机器上都会运行一个DataNode进程,它们与NameNode进行通信以更新块列表和报告状态。

SecondaryNameNode

SecondaryNameNode并不是NameNode的备份节点,它主要负责定期合并NameNode的编辑日志(EditLog)和镜像文件(FsImage),以减少NameNode故障时的恢复时间。

JournalNode

JournalNode是一种专门用于存储NameNode编辑日志的进程,它可以提供高可靠性的编辑日志存储服务,以确保在NameNode发生故障时不会丢失任何数据。

Balancer

Balancer是一个独立的进程,它可以平衡集群中各个DataNode之间的数据块数量,以确保集群保持均衡状态。

Fsck

Fsck是一个工具,用于检查HDFS文件系统的完整性和正确性。它可以检测到损坏、丢失或不一致的数据块,并提供修复方案。

以上是Hadoop HDFS的一些重要概念和进程。


接下来,我们将介绍这些进程如何协同工作来提供高效的分布式文件系统服务:

客户端读取文件

当客户端请求读取文件时,它会向NameNode发送请求,并提供文件路径。NameNode根据文件路径确定该文件的位置信息,并返回给客户端,客户端随后直接从DataNode读取文件内容。

客户端写入文件

当客户端请求写入文件时,它会向NameNode发送请求,并提供文件路径和数据。NameNode确定应该在哪些DataNode上创建新的数据块,并向客户端返回这些信息。客户端随后将数据块写入相应的DataNode,并向NameNode提交确认信息。

块大小优化

HDFS默认情况下将文件划分为128MB的数据块。这种设置可以最大限度地利用磁盘性能,并且还可以避免在处理大型文件时导致内存溢出。但是,对于小文件,过大的块大小可能会导致存储浪费和读取性能下降。因此,您可以通过配置文件更改块大小,以适应不同的文件大小和I/O需求。

数据复制

HDFS默认情况下会将每个数据块复制三次,其中一个为主副本,其余两个用作备份。这样可以确保即使在机架故障时也能保持数据的可用性。您也可以手动更改副本数量,以适应不同的容错和性能需求。

安全模式

当启动NameNode时,它会进入安全模式。在这种模式下,NameNode会阻止所有写操作,直到它确认数据已经完全恢复。这确保了数据的完整性,同时也可以防止损坏数据。

Trash

Trash是一个特殊的目录,用于存储被删除文件的备份。当客户端删除文件时,文件并不会立即被删除,而是先被移动到Trash目录中。这样,如果客户端意外地删除了文件,可以从Trash目录中恢复。

Quota

HDFS支持两种类型的配额:空间配额和名称配额。空间配额限制了用户或组可以占用的磁盘空间的大小,而名称配额则限制了用户或组可以创建的文件和目录数量。

Web界面

HDFS提供了一个Web界面,用于监视文件系统的状态和性能。通过Web界面,您可以查看NameNode和DataNode的日志、监控块分布情况等。

分布式元数据管理

HDFS采用分布式元数据管理机制,将文件系统的元数据存储在多个节点上,以提高可用性和性能。这意味着每个节点都可以处理元数据请求,而不仅仅是NameNode。

块压缩

HDFS支持块压缩功能,可以减少磁盘空间的使用量,并且可以加速数据传输。当客户端写入数据块时,它们将自动被压缩。当客户端读取数据块时,它们将自动被解压缩。

数据节点标签

HDFS支持数据节点标签,可以将数据节点按照物理位置、硬件配置或其他属性进行分组。这样,您可以更好地控制数据的存储位置,并且可以更轻松地进行容错和负载均衡。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
2月前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
177 6
|
2月前
|
SQL 分布式计算 监控
Hadoop-20 Flume 采集数据双写至本地+HDFS中 监控目录变化 3个Agent MemoryChannel Source对比
Hadoop-20 Flume 采集数据双写至本地+HDFS中 监控目录变化 3个Agent MemoryChannel Source对比
65 3
|
2月前
|
SQL 分布式计算 Hadoop
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
48 4
|
2月前
|
SQL 分布式计算 Hadoop
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
48 2
|
2月前
|
SQL 分布式计算 关系型数据库
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
94 0
|
2月前
|
SQL 分布式计算 关系型数据库
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
42 0
|
2月前
|
SQL 分布式计算 关系型数据库
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
54 0
|
2月前
|
存储 分布式计算 资源调度
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
78 5
|
2月前
|
资源调度 数据可视化 大数据
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(二)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(二)
36 4
|
2月前
|
XML 分布式计算 资源调度
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
168 5