如何查看Impala当前已使用内存占比及总内存容量
查询Impala内存指标的操作方法
以下是三种常用的查询方式,按需选择即可:
方法1:通过Impala Shell查询(最准确)
首先进入impala-shell交互界面,执行对应命令即可:
- 查看当前连接的Impala节点内存情况:执行
SHOW MEM_USAGE;
返回结果中,Process Memory Limit 是该节点配置的总可用内存上限,Total Current Usage 是当前已使用的内存,高版本Impala会直接返回内存使用率数值。 - 查看集群所有Impala节点的内存汇总和占比:执行如下SQL
SELECT SUM(memory_used) AS 集群总已用内存, SUM(memory_limit) AS 集群总可用内存上限, ROUND(SUM(memory_used)/SUM(memory_limit)*100,2) AS 集群内存使用率(%) FROM sys.impala_admission_control_memory;
方法2:通过Cloudera Manager UI查看(CDH/CDP部署适用)
- 登录Cloudera Manager控制台,进入Impala服务详情页
- 在「状态」标签的Impala Daemon指标组中,可直接查看集群总内存分配、已用内存、内存使用率的汇总值,也可点击单个Impala Daemon实例查看单节点内存数据。
方法3:Impala节点本地命令行查询
- 先获取Impala Daemon进程ID:
ps -ef | grep impalad | grep -v grep | awk '{print $2}' - 查看该节点Impala总内存上限:
cat /proc/<替换为实际进程ID>/environ | tr '\0' '\n' | grep IMPALA_SERVER_ARGS,返回结果中-mem_limit参数的值即为总内存上限 - 查看当前内存使用率:
top -p <替换为实际进程ID> -b -n 1 | grep impalad | awk '{print $10}',返回值即为当前Impala进程的内存占比(单位%)
注意:如果Impala配置了动态资源池调度,实际可用内存会随任务调度变化,优先使用Impala内置命令的查询结果,和运行时实际统计逻辑一致。
内容的提问来源于stack exchange,提问作者DrGenius
相关产品推荐
相关产品推荐

