hadoop—将reducer的输出发送到hdfs,在hdfs中作为Map输出存储在数据节点本地磁盘中?

lkaoscv7  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(681)

我对hdfs存储和数据节点存储有点困惑。下面是我的疑问。
map函数输出将保存到数据节点本地磁盘,reducer输出将发送到hdfs。众所周知,数据块存储在数据节点的本地磁盘中,数据节点中是否有其他磁盘空间可供hdfs使用??
减速机输出文件(part-nnn-r-00001)的物理存储位置是什么?它是否会存储在名称节点硬盘中?
所以我假设数据节点是hdfs的一部分,我假设数据节点本地磁盘也是hdfs的一部分。
向苏雷什问好

ljsrvy3e

ljsrvy3e1#

回答你的问题,
首先,我们需要了解Map和缩减作业在按名称节点选择的某个数据节点上执行。所有节点都是hdfs的一部分。
所以,当我们说“Map函数输出将保存到数据节点本地磁盘”时,这意味着在执行Map之后,特定的数据节点将数据保存在本地磁盘上,对本地文件系统(比如unix)隐藏。它等待减速机读取并执行减速机阶段。Map程序的datanode keep data保存到作业完成。
现在,reducer(一些datanode通过namenode选择)执行reduce阶段。
根据我在写Map缩小作业时的理解,我们给出了输出路径。在这条路径下,它自身部分-nnnnn-r-00001..1000和日志驻留。

n3ipq98p

n3ipq98p2#

您必须知道虚拟概念和实际存储之间的区别。hdfs(hadoop分布式文件系统)只是指定数据如何存储在datanodes中。当您说将文件存储在hdfs中时,这意味着它实际上将被视为hdfs文件,但实际上存储在datanode的磁盘中。
让我们详细了解一下它是如何工作的:
hdfs作为一个块结构的文件系统:它将单个文件分解成固定大小的块(默认为64mbytes)。这些块存储在由一个namenode和几个datanode组成的计算机集群中。
namenode处理元数据结构(例如,文件和目录的名称)并控制对文件的访问它还执行诸如open/close/rename之类的操作。要打开文件,客户机将联系namenode并检索组成文件的块的位置列表。这些位置标识保存每个块的数据节点。然后,客户机直接从datanode服务器读取文件数据,可能是并行读取。namenode不直接参与此批量数据传输,将其开销保持在最低限度。
datanodes将负责服务读/写请求和块创建/删除/复制。因此hdfs系统中的每个块实际上都存储在datanode中。

相关问题