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"
根据dfs.domain.socket.path配置的路径,登录到启动失败的Impala节点,查看该路径是否存在。
2.登录到启动失败节点的上查看/var/run目录下是否有hdfs-sockets目录
[root@ip-172-31-30-69 run]# ll /var/run/
(可左右滑动)
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节点该目录存在,但目录的权限或属主异常,也需要进行相应的修改。
4.创建/var/run/hdfs-sockets目录后重启异常的Impala节点
服务启动成功,异常解决
提示:代码块部分可以左右滑动查看噢
为天地立心,为生民立命,为往圣继绝学,为万世开太平。
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。
以上是关于Impala的Short-Circuit Reads的主要内容,如果未能解决你的问题,请参考以下文章
HDFS Short-Circuit Local Reads
HBase查询优化之Short-Circuit Local Reads
HDFS 短路本地读取(HDFS Short-Circuit Local Reads)