首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spark集群模式&线程

Spark集群模式&线程
EN

Stack Overflow用户
提问于 2017-08-30 02:17:25
回答 1查看 537关注 0票数 0

我正在从一个网关启动一个带有--master yarn --deploy-mode cluster选项的spark应用程序(2.1.0),它采用yarn集群模式。然而,我看到spark-submit在网关上启动的进程仍然在本地创建了数百个线程。我希望线程是在工作节点上创建的,而不是在网关中创建的,因为集群模式是激活的。集群模式由日志确认。为什么会有数百个线程在网关中被启动?

PS:我使用的是运行Hadoop 2.6.0的加密集群。

EN

回答 1

Stack Overflow用户

发布于 2017-08-30 21:57:29

您可能会遇到此处报告的问题https://issues.apache.org/jira/browse/HDFS-7718。这个问题似乎影响了我的公司,在启用了kerberosCloudera集群上,使用cluster部署模式来减少启动spark-submit的节点上的资源消耗。我们将看到,从我们的网关节点启动一些Spark作业将导致如下错误:

代码语言:javascript
复制
java.lang.OutOfMemoryError: Unable to create new native thread

要调查这是否确实是影响您的问题,请尝试在Yarn Application Master JVM上启动jstack,并查看您的线程是什么样子。如果您看到许多具有以下堆栈跟踪的线程:

代码语言:javascript
复制
"Truststore reloader thread" daemon prio=10 tid=0x00007fd1a5fa4000 nid=0x46f5 waiting on condition [0x00007fd086eed000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
    at java.lang.Thread.sleep(Native Method)
    at org.apache.hadoop.security.ssl.ReloadingX509TrustManager.run(ReloadingX509TrustManager.java:189)
    at java.lang.Thread.run(Thread.java:745)

你很有资格。

在我们的例子中,当在我们的安全集群中使用spark.yarn.jars时,我们的ApplicationMaster将在每次分析要在HDFS中缓存的新jar时使用的线程数量增加1。每个新线程都会有上面描述的堆栈跟踪。在我们的例子中,我们让hdfs.DFSClient实例创建一个新的KMSClientProvider,创建一个新的ReloadingX509TrustManager,它创建新的线程,每个缓存的jar一个线程。对我们有效的一个简单的解决办法是避免使用spark.yarn.jars

为了完整起见,你可能也想看看这个问题https://issues.apache.org/jira/browse/HADOOP-11368

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45945842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档