hdfs短路读
原理
当客户端执行数据块副本短路读时,Client与DataNode的交互过程具体如下图:
含义如下:
(1)DFSClient通过requestShortCircuitShm()接口向DataNode请求创建共享内存,DataNode创建共享内存文件并将共享内存文件描述符返回给DFSClient。
(2)DFSClient通过allocShmSlot()接口申请共享内存中的槽位,并通过requestShortCircuitFds()接口向DataNode请求要读取的副本文件描述符,DataNode打开副本文件并将数据块文件和元数据文件的文件描述符返回给DFSClient。
(3)DFSClient读取完副本后,异步通过releaseShortCircuitFds()接口向DataNode请求释放文件描述符及相应槽位
配置hdfs短路读
修改hdfs-site.xml文件 添加如下内容
<!--开启客户端段路读-->
<property>
<name>dfs.client.read.shortcircuit</name>
<value>true</value>
</property>
重启hdfs服务