在将数据放置到datanodes之前,hadoop是否有多个本地临时文件位置?

webghufk  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(315)

我想我了解hadoop架构和结构的基础知识。
我想知道,所有进入hadoop集群的数据都必须通过相同的本地临时文件位置吗?
在将数据写入datanode之前,我发现它被缓存在本地临时文件位置。这是每个namenode的一个文件位置,在namenode分配要存储的datanode之前,所有进入集群的数据(可能来自多个上传)都存储在这个位置吗?或者hadoop甚至可以处理来自不同位置的多个同时上传(比如多台计算机将不同的大文件上传到基于云的hadoop集群)
请帮忙,我到处都找不到这个信息

roqulrg3

roqulrg31#

我认为你没有正确理解这一点。name节点从不接收任何发送到hdfs的数据。它所做的只是在数据节点上分配块,因此只与元数据通信。协议大致如下(不知道细节,但你会明白的):
客户机从名称节点请求特定大小的块。该块可能必须跨多台计算机复制。
name节点选择一个数据节点,它将在其中为块分配空间,并向其发送请求。
数据节点在其机器上为块分配空间并发回应答。
如果name节点收到回复,它会将响应发送回客户机,为其提供数据节点上块的ip地址和id。
然后,客户机与数据节点联系并与之发起数据传输。数据是直接写入磁盘还是在内存中保留一段时间是实现细节,但它只保留在数据节点上。
如果需要复制,数据节点将重复客户端所做的操作,并将块分发给其他数据节点。
最后,通知name节点并提交事务。
有关详细信息,请阅读hadoop网站上的hadoop架构书。

相关问题