HDFS中的短路本地读取(Short-Circuit Local Read)是Hadoop中的一项重要性能优化技术。 简单来说,当HDFS客户端(Client)和它想要读取的数据块(Block)恰好在同一台物理机器上时,客户端可以直接绕过DataNode进程,直接从本地操作系统的文件系统中读取数据。这就是所谓的“短路”(Short-Circuit)。 为了更好理解,我们可以对比一下“普通读取”和“短路读取”的区别: 1. 普通的本地读取(没有短路) 在默认情况下,即使客户端和数据在同一台机器上,读取流程也是这样的: 1. 客户端向DataNode发起TCP连接(通过本地回环地址 localhost)。 2. DataNode从本地磁盘读取数据到自己的内存中。 3. DataNode通过TCP Socket将数据发送给客户端。 4. 客户端接收数据并进行处理。 缺点: 额外的内存拷贝: 数据需要先从磁盘拷贝到DataNode进程,再拷贝到Client进程。 CPU和上下文切换开销: 即使是本地网络,走TCP协议栈也会带来不小的系统调用和上下文切换开销。 2. 短路本地读取(Shor...