HDFS短路本地读取(Short Circuit Local Reads)

在HDFS中,读取操作都是通过DataNode来进行的。因为需要DataNode在中间做一次中转,所以对性能有一定的影响。

客户端是否可以跳过DataNode直接对文件进行操作?

只有客户端和数据在同一台服务器上,可以通过“短路”本地读取直接读取文件。

 

所谓“短路”读取,就是允许绕过DataNode让客户端直接读取文件,从而提升文件的读取性能。

 

HDFS的“短路”读取是建立在Linux中的Unix Domain Socket技术上的。

Unix Domain Socket是一种进程间的通讯方式,它使得同一台机器上的两个进程能以socket的方式通讯。该方式不仅可以传递普通数据,也可以在进程间传递文件描述符

 

HDFS客户端的“短路”本地读取,就是客户端通过Unix Domain Socket技术获取到要读取文件的文件描述符,客户端就能读取该文件的内容了。

 

Hadoop提供了native包libhadoop.so用于支持Java客户端操作Unix Domain Socket(java不能直接操作)。

 

短路本地读取环境配置:

1、native包libhadoop.so安装

安装路径...\hadoop-3.1.4\lib\native (默认已经安装)

2、配置

<!-- 短路本地读取功能开关 -->

<property>

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

    <value>true</value>

</property>

<!-- DataNode和DFSClient之间沟通的Socket的本地路径,要提前创建好/var/lib/hadoop-hdfs路径,dn_socket是由DataNode创建的文件 -->

<property>

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

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

</property>

3、检查确认

检查短路本地读取是否生效,需要通过日志查看, 在启动的日志中搜索:Listening on UNIX domain socket

检查读取文件是否使用了短路本地读取,也是需要通过日志查看, 在日志中搜索:REQUEST_SHORT_CIRCUIT_FDS

 

 

检查native包是否安装命令:

hadoop checknative #命令

19/07/16 14:40:36 INFO bzip2.Bzip2Factory: Successfully loaded & initialized native-bzip2 library system-native

19/07/16 14:40:36 INFO zlib.ZlibFactory: Successfully loaded & initialized native-zlib library

Native library checking:

hadoop: true /opt/software/hadoop-3.1.4/lib/native/libhadoop.so.1.0.0

zlib: true /lib64/libz.so.1

snappy: true /usr/lib64/libsnappy.so.1

lz4: true revision:99

bzip2: true /lib64/libbz2.so.1

openssl: true /opt/software/hadoop-2.7.7/lib/native/libcrypto.so

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Hadoop2.2.0 native lib 直接替换掉 2.2.0 发布包里面的nativeIO ,配置好环境变量就可以了 东西虽然小,但是却费了不少功夫,主要是由于本地网络控制,不允许上网。安装各种软件就费了很大劲,软件之间的依赖也很让人头痛, 希望能帮到有需要的兄弟姐妹。。。! 包含的文件: ~/hadoop/hadoop-2.2.0/lib/native> ll 总计 1540 -rw-r--r-- 1 weblogic users 734402 04-15 10:22 libhadoop.a -rwxr-xr-x 1 weblogic users 412856 04-15 10:22 libhadoop.so -rwxr-xr-x 1 weblogic users 412856 04-15 10:22 libhadoop.so.1.0.0 ~/hadoop/hadoop-2.2.0/lib/native> file * libhadoop.a: current ar archive libhadoop.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped libhadoop.so.1.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped 下面是查询的详细OS版本信息 #uname -a Linux F23-B4-E2-B3 2.6.32.12-0.7-default #1 SMP 2010-05-20 11:14:20 +0200 x86_64 x86_64 x86_64 GNU/Linux # lsb_release -a LSB Version: core-2.0-noarch:core-3.2-noarch:core-4.0-noarch:core-2.0-x86_64:core-3.2-x86_64:core-4.0-x86_64:desktop-4.0-amd64:desktop-4.0-noarch:graphics-2.0-amd64:graphics-2.0-noarch:graphics-3.2-amd64:graphics-3.2-noarch:graphics-4.0-amd64:graphics-4.0-noarch Distributor ID: SUSE LINUX Description: SUSE Linux Enterprise Server 11 (x86_64) Release: 11 Codename: n/a weblogic@F23-B4-E2-B1:~> cat /etc/SuSE-release SUSE Linux Enterprise Server 11 (x86_64) VERSION = 11 PATCHLEVEL = 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

军大_j

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值