为了更好的发挥Impala的性能,需要在impala的配置项,如下几点,
Short-Circuit Reads 开启HDFS短路读取
HDFS也有短路读取的功能,因此在安装Impala之前开启次功能,这样Impala可以直接从file system中直接读取文件,而不需要经过NameNode,DataNode进程。同时,短路读取,也可以最小化数据的额外拷贝。
需要libhadoop.so文件,Hadoop Native Library,要确保Impala的server和client能够同时读取到才行。
配置如下,
- 确保impala能够读取到core-site.xml和hdfs-site.xml,共享这些文件或者拷贝到impala配置目录,独享配置(此时,修改不会影响HDFS)
- 在Impala的所有节点中,修改hdfs-site.xml配置文件,如下,
<property>
<name>dfs.client.read.shortcircuit</name>
<value>true</value>
</property>
<property>
<name>dfs.domain.socket.path</name>
<value>/var/run/hdfs-sockets/dn</value>
</property>
<property>
<name>dfs.client.file-block-storage-locations.timeout.millis</name>
<value>10000</value>
</property
-
确保/var/run/hdfs-sockets/dn目录对于root组是有读权限,如果不是root组,会报错如下,
group error.png
修改之后,启动impala便可顺利,
change group.png
- 重启所有DataNodes
下图,是CDH的截图,改配置是HDFS的,但是可以给impala服务范围使用,如果开始,需要去HDFS的配置修改功能设置,
shortcircuit.png
提示,建议的 DataNode 数据目录权限 配置为处于非安全模式中的 755,使用 HDFS Short Circuit Reads 实现最佳 Impala 性能。至少一个 DataNode 角色组 (DataNode Group 1) 有无效值:700。您应了解在进行该更改之前,修改安全群集中的该配置值的含义。
需要将dfs.datanode.data.dir.perm设置为755,默认是700,
perm.png
Block Location Tracking 块位置追踪
让Impala知道HDFS块的元数据信息,包括磁盘数据块的位置等等,能够更好的增强效率
操作步骤,
- 对于每个DataNodes,修改hdfs-site.xml
<property>
<name>dfs.datanode.hdfs-blocks-metadata.enabled</name>
<value>true</value>
</property>
- 确保Impala能够读到hdfs-site.xml配置文件
- 重启DataNodes
网友评论