Spark:创建大量线程

时间:2018-03-01 05:21:36

标签: apache-spark

Spark版本2.1 Hadoop 2.7.3 我有一个spark工作,只有1个阶段和100个分区,我的应用程序本身不会创建任何线程。但在我提交之后

spark-submit --class xxx --master yarn --deploy-mode cluster --driver-memory 4g --executor-memory 1g --num-executors 7 --executor-core 1 ./my.jar

我在每台服务器上发现它使用了大约400个线程,为什么要使用这么多线程?群集有6台服务器。所以其中一个服务器获得2个执行器,并且在spark过程中使用大约800个线程。当我实际运行这个。在系统使用32,000个线程后,我给了它很多内核并得到“无法创建本机线程”错误,这是系统ulimit设置的限制。即使我可以分配更少的核心并绕过这个错误,使用这么多线程无论如何都不会有效,有人可以提供一些提示吗?

更新。

这是与hbase的连接导致问题,而不是使用这些线程的火花。

1 个答案:

答案 0 :(得分:0)

检查conf目录中的调度程序XML配置

  • 检查使用的调度程序
  • 检查配置的重量

如果没有设置池,请尝试设置池

sc.setLocalProperty("spark.scheduler.pool", "test")

配置以下值

<pool name="test">
     <schedulingMode>FAIR</schedulingMode>
     <weight>1</weight>
     <minShare>2</minShare>   
</pool>