在开始了解 HDFS(Hadoop 分布式文件系统)之前,我们应该知道文件系统究竟是什么。文件系统是我们在操作系统中用来管理磁盘空间上的文件的一种数据结构或方法。这意味着它允许用户保持从本地磁盘维护和检索数据。
Windows 文件系统的一个例子是 NTFS(新技术文件系统)和 FAT32(文件分配表 32)。 FAT32 用于一些较旧版本的 windows,但可以在所有版本的windows xp 上使用。与 Windows 类似,我们有适用于 Linux 操作系统的 ext3、ext4 文件系统。
什么是 DFS?
DFS 代表分布式文件系统,它是一种将文件以分布式方式存储在多个节点中的概念。 DFS 实际上为单个大系统提供了抽象,其存储等于集群中其他节点的存储总和。
让我们通过一个例子来理解这一点。假设您有一个 DFS 由 4 台不同的机器组成,每台机器的大小为 10TB,在这种情况下,您可以在这个 DFS 中存储假设 30TB,因为它为您提供了一个大小为 40TB 的组合机器。 30TB 的数据以块的形式分布在这些节点之间。
为什么我们需要 DFS?
您可能会认为我们可以在单个系统中存储 30TB 大小的文件,那么为什么我们需要这个 DFS。这是因为系统的磁盘容量只能增加到一定程度。如果您以某种方式在单个系统上管理数据,那么您将面临处理问题,在单台机器上处理大型数据集效率不高。
让我们通过一个例子来理解这一点。假设您有一个大小为 40TB 的文件要处理。在单台机器上,假设需要 4 小时 tp 才能完全处理它,但是如果您使用 DFS(分布式文件系统)会怎样。在这种情况下,如下图所示,大小为 40TB 的文件分布在集群中的 4 个节点中,每个节点存储 10TB 的文件。由于所有这些节点同时工作,因此只需 1 小时即可完全处理它,这是最快的,这就是我们需要 DFS 的原因。
本地文件系统处理:
分布式文件系统处理:
概述 – HDFS
现在我们认为您已经熟悉术语文件系统,所以让我们从 HDFS 开始。 HDFS(Hadoop分布式文件系统)用于存储权限是一个Hadoop集群。它主要设计用于在商品硬件设备(便宜的设备)上工作,在分布式文件系统设计上工作。 HDFS 的设计方式是它更相信将数据存储在大块块中,而不是存储小数据块。 Hadoop 中的 HDFS 为存储层和该 Hadoop 集群中的其他设备提供容错和高可用性。
HDFS 能够以高容量速度和多样性处理更大尺寸的数据,这使得 Hadoop 的工作更加高效和可靠,并且可以轻松访问其所有组件。 HDFS 以块的形式存储数据,其中每个数据块的大小为 128MB,这是可配置的,这意味着您可以根据需要在 Hadoop 目录中的 hdfs-site.xml 文件中更改它。
HDFS(Hadoop分布式文件系统)的一些重要特性
- 访问存储在 HDFS 中的文件很容易。
- HDFS 还提供高可用性和容错能力。
- 根据我们的要求提供扩展或缩减节点的可扩展性。
- 数据以分布式方式存储,即各种数据节点负责存储数据。
- HDFS 提供了复制,因此无需担心数据丢失。
- HDFS 提供高可靠性,因为它可以存储大量PB 级的数据。
- HDFS 在 Name node 和 Data Node 中内置了服务器,可以帮助他们轻松检索集群信息。
- 提供高吞吐量。
HDFS 存储守护进程
众所周知,Hadoop 工作在 MapReduce 算法上,这是一种主从架构,HDFS 有NameNode和DataNode以类似的模式工作。
1. NameNode(Master)
2.数据管理部(从站)
1. NameNode: NameNode在Hadoop集群中作为Master ,引导Datanode(Slaves)。 Namenode 主要用于存储元数据,即关于数据的数据。元数据可以是跟踪用户在 Hadoop 集群中的活动的事务日志。
Meta Data 也可以是Namenode 存储的文件名、大小、Datanode 的位置信息(Block number、Block ids),以找到最近的DataNode 以实现更快的通信。 Namenode 通过删除、创建、复制等操作来指示 DataNode。
当我们的 NameNode 作为 Master 工作时,它应该具有高 RAM 或处理能力,以便维护或指导 Hadoop 集群中的所有从站。 Namenode 接收来自所有从站(即 DataNode)的心跳信号和阻塞报告。
2. DataNode: DataNodes 作为Slave DataNodes 主要用于存储 Hadoop 集群中的数据,DataNodes 的数量可以从 1 到 500 甚至更多,您的 Hadoop 集群拥有的 DataNode 数量越多数据就可以被存储。所以建议DataNode 应该有高的存储容量来存储大量的文件块。 Datanode根据NameNode提供的指令进行创建、删除等操作。
HDFS 的目标和假设
1.系统故障:由于Hadoop集群由很多节点组成,并且都是商品硬件,因此节点故障是可能的,因此HDFS的基本目标是找出这个故障问题并恢复它。
2.维护大数据集:由于HDFS处理大小从GB到PB不等的文件,因此HDFS必须足够酷才能在单个集群上处理这些非常大的数据集。
3. 移动数据比移动计算成本更高:如果计算操作在数据所在位置附近执行,那么它会更快,并且可以增加系统的整体吞吐量,同时最大限度地减少网络拥塞,这是一个很好的选择假设。
4. 跨平台可移植性:HDFS 具有可移植性,可以在不同的硬件和软件平台之间切换。
5. 简单的一致性模型: Hadoop 分布式文件系统需要一个模型来写入一次读取多次访问文件。写入然后关闭的文件不应更改,只能附加数据。这个假设帮助我们最小化数据一致性问题。 MapReduce 非常适合这种文件模型。