什么是 HDFS?(Hadoop 分布式文件系统)
Summary: HDFS(Hadoop 分布式文件系统)是什么的说明。本文还介绍了如何使用 HDFS,并提供了一个示例。
Instructions
什么是 HDFS?(Hadoop 分布式文件系统)
事实
Hadoop 分布式文件系统
答案
关于 Hadoop 分布式文件系统 (HDFS)
要了解如何将 Hadoop® 群集扩展到数百(甚至数千)个节点,您必须从 Hadoop 分布式文件系统 (HDFS) 开始。Hadoop
群集中的数据细分为较小的部分(称为数据块),并分布在整个群集中。通过这种方式,可以在较大数据集的较小子集上执行映射和减少功能,从而提供大数据处理所需的可扩展性。
目标是什么?
Hadoop 的目标是在一个非常大的群集中使用常用服务器,其中每台服务器都有一组便宜的内部磁盘驱动器。为了提高性能,MapReduce
会尝试将工作负载分配给存储要处理的数据的这些服务器。这称为数据本地化。(正是由于这一原则,不建议在 Hadoop 环境中使用存储区域网络 (SAN) 或网络连接存储 (NAS)。对于使用 SAN 或 NAS 的 Hadoop 部署,额外的网络通信开销可能会导致性能瓶颈,尤其是对于较大的群集。)现在花点时间思考一下一个 1000 机器群集,其中每台计算机都有三个内部磁盘驱动器;然后,考虑由 3000 个廉价驱动器 + 1000 台廉价服务器组成的群集的故障率!
我们可能已经在同一页面上:您在 Hadoop 群集中遇到的组件平均故障时间 (MTTF) 可能类似于您孩子的夹克上的拉链:它将会失败(而且实际上,拉链似乎只有在您真正需要时才会失败)。Hadoop 的一个很棒之处在于,与廉价硬件相关的 MTTF 比率的现实实际上已经得到了充分了解(如果需要,这是一个设计点),Hadoop 的一部分优势在于它具有内置的容错和故障补偿功能。HDFS 也是如此,因为数据划分为数据块,这些数据块的拷贝存储在 Hadoop 群集中的其他服务器上。也就是说,单个文件实际上存储为在整个群集中多个服务器上复制的较小数据块。
HDFS 示例
想一想包含美国每个人的电话号码的文件;姓氏为 A 的人员可能存储在服务器 1 上,B 存储在服务器 2 上,等等。在 Hadoop 环境中,此电话簿的一部分将存储在群集中,为了重建整个电话簿,您的程序将需要来自群集中每个服务器的数据块。为了在组件出现故障时实现可用性,默认情况下,HDFS 会将这些较小的组件复制到另外两台服务器上。(可以按文件或整个环境增加或减少此冗余;例如,开发 Hadoop 群集通常不需要任何数据冗余。)这种冗余提供了多种优势,最明显的是更高的可用性。
此外,这种冗余允许 Hadoop 群集将工作分解为较小的区块,并在群集中的所有服务器上运行这些作业,以实现更好的可扩展性。最后,您将获得数据本地化的优势,这在处理大型数据集时至关重要。我们将在本章后面部分详细介绍这些重要优势。