已获取更多详细信息
我正在测试分类器的参数,并且对于SVM有大约3k参数组合,对于MLP有大约3k参数组合。因此,我想并行运行测试以简化结果。
我有一个24核/ 48线程和128GB RAM的服务器。为了并行放置各种作业,我已经尝试过使用多个worker和多个执行器。我甚至使用过GNU parallel。但我总是得到顺序结果,即在我的结果文件夹中,我可以看到只有一个分类器输出结果,生成结果所需的时间与顺序轮廓匹配。
我尝试多次提交相同的jar(使用def main(args: Array[String]): Unit = {
spark = SparkSession.builder().appName("foo").getOrCreate()
sparkContext = spark.sparkContext
//read properties
//initiate classfier
//cross validation procedures
//write results
spark.stop()
}
),每个都测试不同的参数;我尝试将所有6k种不同的命令组合生成到文件中,然后将其传递给gnu并行,什么也没有。除了添加更多执行程序和更改每个执行程序可用的资源外,我使用标准的spark设置是每次下载使用hadoop预先构建的spark。
正如我在文档中所读到的,每次执行都应该使用相同的spark上下文。这是对的吗?
为什么我的测试没有并行性?什么是工人,执行者和资源的理想组合?
编辑2 将调度程序更改为FAIR,将发布有关此更改的结果
编辑3 公平的调度程序没有区别
伪代码
FOUNDATION_EXPORT NSLocaleKey const NSLocaleTemperatureUnit;