如何在 EMR Presto 服务上进行线程转储

Posted

技术标签:

【中文标题】如何在 EMR Presto 服务上进行线程转储【英文标题】:How to do a Thread Dump on EMR Presto service 【发布时间】:2021-01-31 12:54:56 【问题描述】:

通过转到 Amazon EMR 摘要页面,我只能看到如何使用hadoop 用户连接到主节点的命令:

ssh -i ~/data-abc.pem hadoop@ip-10-90-28-13.ec2.internal

通过使用hadoop 用户执行jps,我看不到presto jvm 进程。当我使用ps -ef|grep presto找出java进程ID并执行jstack -l <PID>时,它给了我错误:

Operation not permitted

那么我怎样才能真正转储 presto 线程,而不是 hadoop 线程..

【问题讨论】:

Presto 服务可以作为presto 用户运行吗? 是的,我想是的 【参考方案1】:

显然 Presto 服务以presto OS 用户身份运行。 因此,您也需要以该用户的身份调用jstack

例如

sudo -u presto jstack -l <pid>

【讨论】:

这就是问题所在。我没有 sudo 访问权限,也没有 presto 用户密码。也找不到密码在 AWS 上的存储位置.. 我会假设服务帐户没有密码。 无密码不等于空密码。如果没有密码,您将无法交互登录。 太棒了..你完美地回答了我的问题。谢谢!

以上是关于如何在 EMR Presto 服务上进行线程转储的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Amazon EMR 上将连接器添加到 presto

AWS EMR Presto 集群突然终止错误:作业流中的所有从属服务器都因 Spot 而终止

从 EMR spark 连接到 EMR presto - 连接失败

EMR Presto 配置中的任务并发参数

拒绝访问 - EMR Presto - 基于文件的授权

如何将 EMR 生成的 S3 上的小文件与数千个 reducer 合并