我正在尝试在我的Yarn集群上运行Spark ML管道(从JDBC加载一些数据,运行一些变换器,训练模型),但每次运行它时,我的执行器中有一对 - 有时是一个,有时是3或4个卡在运行他们的第一个任务集(对于他们的3个核心中的每一个都是3个任务),而其余任务正常运行,一次检查3个任务.
到目前为止我观察到的一些事情:
spark.executor.cores
(即一次运行1个任务)时,问题不会发生;关于可能导致这个或我应该尝试什么的任何想法?
ktd*_*drv 11
弄清楚了.对于后代:使用线程不安全的数据结构(可变的HashMap).由于同一台机器上的执行程序共享一个JVM,因此导致数据争用锁定了单独的线程/任务.
结果:当你有spark.executor.cores > 1
(并且你可能应该)时,确保你的代码是线程安全的.
归档时间: |
|
查看次数: |
3685 次 |
最近记录: |