我对HDFS存储和数据节点存储感到困惑。以下是我的疑惑。
Map功能输出将保存到数据节点本地磁盘,reducer输出将被发送到HDFS。众所周知,数据块存储在数据节点中,本地磁盘就是存在的 数据节点中可用于HDFS的其他磁盘空间??
reducer输出文件的物理存储位置是什么(part-nnnnn-r-00001)?它会存储在Name节点硬盘中吗?
所以我的假设是数据节点是HDFS的一部分我假设数据节点本地磁盘也是HDFS的一部分。
此致 苏雷什
答案 0 :(得分:4)
您必须了解虚拟概念与实际存储之间的区别。 HDFS(Hadoop分布式文件系统)只是指定数据如何存储在数据节点中。当您说在HDFS中存储文件时,这意味着它实际上将被视为HDFS文件,但实际存储在datanode的磁盘中。
让我们详细了解它是如何运作的:
HDFS 作为块结构文件系统:它会将单个文件分成固定大小的块(默认为64 MB)。这些块存储在由一个名称节点和几个数据节点组成的机器集群中。
nameNode 处理元数据结构(例如,文件和目录的名称)并管理对文件的访问 它还执行打开/关闭/重命名等操作。要打开文件,客户端会联系NameNode并检索组成该文件的块的位置列表。这些位置标识了包含每个块的 DataNodes 。然后,客户端可能直接从DataNode服务器读取文件数据。 NameNode不直接参与此批量数据传输,将其开销保持在最低限度。
答案 1 :(得分:0)
回答你的问题,
首先,我们需要了解映射和减少作业是否在某个数据节点上执行,并由namenode选择。所有节点都是HDFS的一部分。
因此,当我们说“将地图功能输出保存到数据节点本地磁盘”时,这意味着在执行映射后,该特定数据节点将数据保存在本地磁盘上,对本地文件系统隐藏称为unix。它等待减速器读取并执行减少阶段。 Mapper的datanode保存数据保存到作业完成。
现在,reducer(某些datanode由namenode选择)执行缩减阶段。
根据我在编写地图缩减工作时的理解,我们给出输出路径。在那条路径下,它自行分配nnnnn-r-00001..1000并记录驻留。