在将数据放入数据节点之前,Hadoop 是否有多个本地临时文件位置?
Does Hadoop have multiple local temporary file locations prior to data being placed in the datanodes?
我想我了解 Hadoop 架构和结构的基础知识。
我想知道,是否所有进入 Hadoop 集群的数据都必须通过相同的本地临时文件位置?
我知道在将数据写入数据节点之前,它会缓存在本地临时文件位置。这是每个名称节点的单个文件位置,其中存储所有进入集群的数据(可能来自多个上传),然后名称节点分配将其存储在哪个数据节点中?或者 Hadoop 甚至可以处理来自不同位置的多个同时上传(比如多台计算机将不同的大文件上传到基于云的 Hadoop 集群)
请帮助我无法在任何地方找到此信息
我认为您没有正确理解这一点。名称节点从不接收任何发送到 hdfs 的数据。它所做的只是在数据节点上分配块,因此仅与元数据通信。协议大致是这样的(不知道细节,但你会得到图片):
- 客户端向名称节点请求一定大小的块。该块可能必须跨多台机器复制。
- 名称节点选择一个数据节点,它将在其中分配space块,并向它发送请求。
- 数据节点在其机器上为块分配 space 并发回回复。
- 如果名称节点收到回复,它会将回复发送回客户端,并为其提供数据节点上块的 IP 地址和 ID。
- 然后客户端联系数据节点并启动数据传输。数据是直接写入磁盘还是在内存中停留一段时间是实现细节,但它只保留在数据节点上。
- 如果需要复制,数据节点重复客户端所做的并将块分发给其他数据节点。
- 最后,通知名称节点并提交事务。
在 hadoop 网站上阅读 hadoop architecture book 了解详细信息。
我想我了解 Hadoop 架构和结构的基础知识。
我想知道,是否所有进入 Hadoop 集群的数据都必须通过相同的本地临时文件位置?
我知道在将数据写入数据节点之前,它会缓存在本地临时文件位置。这是每个名称节点的单个文件位置,其中存储所有进入集群的数据(可能来自多个上传),然后名称节点分配将其存储在哪个数据节点中?或者 Hadoop 甚至可以处理来自不同位置的多个同时上传(比如多台计算机将不同的大文件上传到基于云的 Hadoop 集群)
请帮助我无法在任何地方找到此信息
我认为您没有正确理解这一点。名称节点从不接收任何发送到 hdfs 的数据。它所做的只是在数据节点上分配块,因此仅与元数据通信。协议大致是这样的(不知道细节,但你会得到图片):
- 客户端向名称节点请求一定大小的块。该块可能必须跨多台机器复制。
- 名称节点选择一个数据节点,它将在其中分配space块,并向它发送请求。
- 数据节点在其机器上为块分配 space 并发回回复。
- 如果名称节点收到回复,它会将回复发送回客户端,并为其提供数据节点上块的 IP 地址和 ID。
- 然后客户端联系数据节点并启动数据传输。数据是直接写入磁盘还是在内存中停留一段时间是实现细节,但它只保留在数据节点上。
- 如果需要复制,数据节点重复客户端所做的并将块分发给其他数据节点。
- 最后,通知名称节点并提交事务。
在 hadoop 网站上阅读 hadoop architecture book 了解详细信息。