您的位置:首页 > 产品设计 > UI/UE

HDFS Short-Circuit Local Reads

2015-11-28 16:52 543 查看


HDFS Short Circuit Local Reads


Background

HDFS中,读操作通常通过DataNode。因此,当一个客户端访问DataNode读一个文件的时候,DataNode从磁盘中读出该文件,然后通过TCK Socket发送到客户端。所谓的“short-circuit”是绕开DataNode,允许客户端直接读一个文件。明显地,当客户端与数据在同一地点时可能会出现这种情况。Short-circuit为很多应用提供了巨大的性能提升。


Configuration

为了配置short-circuit本地读,你将需要启用libhadoop.so。查看Native Libraries部分获取更多开启本地库的细节。

Short-circuit读利用了Unix的域套接字。这在文件系统中是一个特别的路径,这允许客户端和DataNode来通信。你将需要设置这个路径到这个Socket中。DataNode需要能够创建这个路径。另一方面,这个路径应该不可能被除了hdfs和root用户之外的任何用户创建。因为这个原因,经常使用中/var/run or /var/lib的子目录的路径。

Short-circuit本地读需要在DataNode和客户端都配置。


Example Configuration

这是一个配置的例子:

[html] view
plaincopy





<configuration>

<property>

<name>dfs.client.read.shortcircuit</name>

<value>true</value>

</property>

<property>

<name>dfs.domain.socket.path</name>

<value>/var/lib/hadoop-hdfs/dn_socket</value>

</property>

</configuration>


Configuration Keys

1. dfs.client.read.shortcircuit

这个配置参数打开short-circuit本地读

2. dfs.client.read.shortcircuit.skip.checksum

如果这个配置参数被设置,short-circuit本地读将会跳过checksum。这通常不推荐,但是对于一些特别的安装可能会有用。你可能需要在HDFS外做你自己的checksum。

3. dfs.client.read.shortcircuit.streams.cache.size

DFSClient维护了一个最近打开文件的描述符的缓存。这个参数管理缓存的大小。设置高了将会使用更多的文件描述符,但是潜在地在查询发在方面提供更好的性能。

4. dfs.client.read.shortcircuit.streams.cache.expiry.ms

这个参数控制文件描述符在文件因为inactive太长时间可以被关闭之前需要被放进FileInputStreamCache 的最小时间。

5. dfs.client.domain.socket.data.traffic

这控制我们是否将尝试通过Unix域套接字传送正常的数据流量。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: