impala 优化(一) hdfs配置本地短路读和文件块追踪
参考官方文档 https://impala.apache.org/docs/build/plain-html/topics/impala_config_performance.html
CDH和CDP托管的集群会自动配置,不需要用户关心
1 概述
启用短路读可以使 Impala 直接从文件系统读取 Hadoop 服务中 DataNode 的本地数据。这跳过了与 DataNodes的通信过程 ,从而提高了性能。此设置还可以最大限度地减少额外的数据副本的数量。
启用文件块位置追踪,可以使 Impala 知道每个块位于哪些磁盘,从而提高磁盘的访问效率。
2 配置
impala运行依赖hadoop的配置文件,所以需要保证以下修改的hadoop配置文件能够被impala访问到
在hadoop集群的所有节点配置文件 hdfs-site.xml
中添加以下配置
1 |
|
⚠️ 需要注意的
- dfs.domain.socket.path 是文件位置,所以需要保证其父目录是组内可读的,即权限为 755。如本配置中文件为
/var/run/hdfs-sockets/dn
, 则要用设置设置其父目录/var/run/hdfs-sockets
权限为755。 - 还需要保证 impala服务运行的用户属于 hdfs 运行用户的组,比如impala服务以 impala 用户启动,hdfs服务以hadoop用户启动,此时需要将 impala 用户添加到 hadoop用户组。
以上两点设置的命令示例:
1 |
|
⚠️ libhadoop.so
短路读需要 libhadoop.so
库的支持,该文件位于hadoop的lib目录,需要保证 impala 的运行环境中有该文件,比如可以直接将该文件添加到impala的lib目录。
3 重启服务
滚动重启 Hadoop 的 DataNode 服务和 Impalad 的 impalad 服务即可
impala 优化(一) hdfs配置本地短路读和文件块追踪
https://inio.cc/2023/03/09/数仓/impala-Short-Circuit-Reads-And-Block-Location-Tracking/