Impala的Short-Circuit Reads

Posted Hadoop实操

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Impala的Short-Circuit Reads相关的知识,希望对你有一定的参考价值。

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。


Fayson的github:https://github.com/fayson/cdhproject


提示:代码块部分可以左右滑动查看噢


1.HDFS的Short-Circuit Local Reads



我们知道读取HDFS的数据需要通过DataNode。当客户端找DataNode读取数据时,DataNode会首先从磁盘中读取文件,然后通过TCP socket将数据传送给客户端。短回路(short-circuit)数据可以绕过DataNode,从而允许客户端直接读取文件。所以当客户端和数据在同一个节点时,短回路(short-circuit)可以明显为很多应用程序提升性能。


要配置short-circuit本地读,你需要libhadoop.so。short-circuit本地读利用Linux的domain socket,它是文件系统的一个特别的路径,可以允许客户端和DataNode进行通信。我们需要在socket中设置这个路径,然后DataNode需要能够创建这个路径。但需要注意,除了HDFS和root用户,其他任何用户都不能创建这个路径。这个路径一般会使用/var/run或/var/lib。客户端和DataNode通过/dev/shm上的共享内存段(shared memory segment)交换信息。Short-circuit本地读需要在DataNode和客户端都配置。



2.Impala的Short-Circuit Local Reads



Impala默认开启了Short-Circuit,并会利用HDFS中配置的那个路径,默认是/var/run/hadoop-hdfs/dn._PORT。该功能同样可以明显提升Impala的性能。


按照上文说的,Short-Circuit需要安装libhadoop.so,而在CDH的安装中,你如果使用tarbal安装,默认是没有安装libhadoop.so的。所以你必须使用rpm或者parcel安装,才能启用该功能。当然parcel本来也是Cloudera官方建议的安装方式。


本文Fayson会分析因为Short-Circuit目录问题导致Impala服务无法正常启动的一个异常。


3.问题描述



在启动Impala集群时部分Impala Daemon节点启动失败,异常日志如下:


Invalid short-circuit reads configuration:
 - Impala cannot read or execute the parent directory of dfs.domain.socket.path
Aborting Impala Server startup due to improper configuration. Impalad exiting.

(可左右滑动)



4.问题解决



1.登录CM管理界面进入HDFS服务搜索"dfs.domain.socket.path"


Impala的Short-Circuit Reads


根据dfs.domain.socket.path配置的路径,登录到启动失败的Impala节点,查看该路径是否存在。


2.登录到启动失败节点的上查看/var/run目录下是否有hdfs-sockets目录


[root@ip-172-31-30-69 run]# ll /var/run/

(可左右滑动)


Impala的Short-Circuit Reads


3.在/var/run目录下创建hdfs-sockets目录


[root@ip-172-31-30-69 run]# mkdir /var/run/hdfs-sockets
[root@ip-172-31-30-69 run]# chown hdfs:hadoop /var/run/hdfs-sockets/
[root@ip-172-31-30-69 run]# ll /var/run/

(可左右滑动)


Impala的Short-Circuit Reads


注意:在有的Impala节点该目录存在,但目录的权限或属主异常,也需要进行相应的修改。


4.创建/var/run/hdfs-sockets目录后重启异常的Impala节点


Impala的Short-Circuit Reads


服务启动成功,异常解决




提示:代码块部分可以左右滑动查看噢


为天地立心,为生民立命,为往圣继绝学,为万世开太平。

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。



推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。


以上是关于Impala的Short-Circuit Reads的主要内容,如果未能解决你的问题,请参考以下文章

HDFS Short-Circuit Local Reads

HBase查询优化之Short-Circuit Local Reads

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

使用 Dask 库连接到 Impala DB

使用 impala jdbc 驱动程序时,not null 在 Pyspark 中不起作用

使用 while-read 命令的每一行打印变量