点击Apache Drill webUI的profiles页面报RESOURCE ERROR如何解决
Apache Drill WebUI Profiles页面加载失败故障排查
故障报错
访问WebUI的Profiles页面时返回错误:
"errorMessage" : "RESOURCE ERROR: Failed to get profiles from persistent or ephemeral store.\n\n\n[Error Id: 871b065f-031e-45c0-b17a-5cffab8aa3de ]"
排查解决步骤
- 优先检查ZooKeeper连接状态
绝大多数该报错都是Drill和存储profile的ZooKeeper集群通信异常导致的。先到Drill安装目录的conf路径下,核对drill-override.conf中zk.connect配置的ZK地址、端口是否正确。再用ZK自带客户端执行zkCli.sh -server 配置的ZK地址:客户端端口测试连通性,连接成功后执行ls /drill查看对应根节点是否存在,确认Drill进程运行用户对该ZK路径有读写权限。如果存在网络阻断、ZK服务宕机、节点误删问题,优先修复ZK服务、放通网络、补全节点路径并配置正确权限。 - 核对profile存储配置
进入Drill WebUI的Options页面,搜索profile相关配置项:- 确认
drill.exec.profiles.store.type和实际部署的存储类型匹配,默认是ZooKeeper,如果自定义修改为HDFS、本地文件存储,要确认对应存储路径的连通性、读写权限正常 - 确认
drill.exec.profiles.store.zk.root配置的ZK根路径和ZK上实际创建的路径一致 - 如果ZK中残留了损坏的profile元数据,也会触发读取失败,操作前先备份ZK上的drill节点数据,停掉Drill集群后清理损坏的残留profile节点,再重启服务验证。
- 确认
- 检查临时存储(ephemeral store)状态
如果是单节点嵌入式部署Drill,要核对drill.tmp-dir配置的临时目录:确认运行Drill的用户对该目录有读写权限,目录所在磁盘没有被占满,临时文件没有被系统定时任务误删。 - 通过日志定位精准根因
拿报错里的Error Id871b065f-031e-45c0-b17a-5cffab8aa3de,到对外提供WebUI服务的Drillbit节点的log目录下,搜索drillbit.log中对应ID的异常栈,根据栈信息直接定位问题:- 报
KeeperErrorCode = NoNode:ZK上profile存储路径不存在,手动创建对应路径并授权即可 - 报
ConnectionLoss/SessionExpired:ZK连接中断,排查网络、ZK服务负载、会话超时配置 - 报
Permission denied:存储路径(ZK节点/文件目录)权限不足,给Drill运行用户授权读写权限即可
- 报
- 临时恢复方案
如需紧急恢复页面访问,可在Options页面将drill.exec.profiles.store.inmemory参数设置为true,重启对应Drillbit服务,此时profile会直接存储在服务内存中,跳过持久化/临时存储的读取逻辑,页面可正常加载。注意该模式下重启服务会丢失所有历史profile数据,仅适合临时应急使用,故障修复后要改回原配置。
内容的提问来源于stack exchange,提问作者Skytail
相关产品推荐
相关产品推荐

