apache-spark - 为什么即使在火花上下文关闭后仍有剩余的java进程
问题描述
我在 python 中编写了一个小应用程序,它接受请求并在工作进程中执行 pyspark 作业。一切正常,但即使在关闭 spark 上下文后,启动 spark 上下文时跨越的 java 进程仍然退出。我检查了集群,并且在上下文关闭后资源也正确释放。此外,工作人员正在处理后续请求,没有任何问题。
10542 pts/3 Sl+ 0:00 \_ Worker - 1
12960 pts/3 Sl+ 0:22 | \_ /usr/jdk64/jdk1.8.0_77//bin/java - hdp.version=3.0.0.0-1634 -cp /usr/hdp/3.0.0.0-1634/spark2//conf/:/usr/hdp/3.0.0.0-1634/spark2/jars/*:/usr
有2个问题
- 为什么 sparkcontext.stop 没有杀死主节点上的 java 进程
- 我的集群是 kerberos 集成集群。Worker 使用在 spark 上下文中填充的 keytab 和主体提交作业。如果 Worker 在相当长的时间内没有处理任何作业,则下一个作业会出错,但会出现异常:
org.apache.hadoop.ipc.RemoteException(java.io.IOException):Delegation Token 只能通过 kerberos 或 web 身份验证发布。
当我重新启动应用程序时,一切又好了。我怀疑是因为 java 进程中留下了过期的令牌,我正面临这个问题。有没有更好的方法来处理这种情况。
我坚信如果没有留下 java 进程,我将不会面临第二个问题。
任何建议/指针都会有很大帮助。
附加信息:作业作为“纱线”提交,部署模式为“客户端”。
解决方案
推荐阅读
- javascript - 使用异步函数等待来自 onclick 的用户输入
- excel - VBA Excel根据单元格输入突出显示单元格
- google-cloud-platform - 使用快照将 GCP 实例的托管 OS 磁盘还原到现有 VM
- javascript - 逗号分隔值问题 (Carto)
- node.js - 在 express.js 中未定义 Req.body
- php - 如何在codeigniter php mysql中的其他函数中安全地将查询作为字符串调用
- functional-programming - 球拍编程:如何将一堆字符变成一个列表?
- java - 如何在android studio中运行一个简单的java程序
- javascript - babel 显示对象扩展运算符意外令牌错误
- javascript - ES6 Uncaught TypeError: Object(...) is not a function