Apache spark 不并行运行的ML任务
编辑以获取更多详细信息 我正在测试分类器的参数,支持向量机的参数组合约为3k,MLP的参数组合约为3k。因此,我希望并行运行测试以简化结果 我有一台24核/48线程的服务器和128gb的RAM。为了并行放置各种工作,我已经尝试使用多个工作者和多个执行者。我甚至用过。但是我总是得到顺序结果,也就是说,在我的results文件夹中,我可以看到只有一个分类器输出结果,并且生成结果所需的时间与顺序配置文件相匹配 我多次尝试提交同一个jar(使用Apache spark 不并行运行的ML任务,apache-spark,apache-spark-ml,Apache Spark,Apache Spark Ml,编辑以获取更多详细信息 我正在测试分类器的参数,支持向量机的参数组合约为3k,MLP的参数组合约为3k。因此,我希望并行运行测试以简化结果 我有一台24核/48线程的服务器和128gb的RAM。为了并行放置各种工作,我已经尝试使用多个工作者和多个执行者。我甚至用过。但是我总是得到顺序结果,也就是说,在我的results文件夹中,我可以看到只有一个分类器输出结果,并且生成结果所需的时间与顺序配置文件相匹配 我多次尝试提交同一个jar(使用spark submit),每次都测试不同的参数;我尝试将所
spark submit
),每次都测试不同的参数;我尝试将所有6k不同的命令组合生成一个文件,然后将其传递给gnu并行,但什么也没有。除了添加更多的执行器和更改每个执行器可用的资源外,我使用的标准spark设置是每次下载hadoop预构建的spark
正如我在文档中读到的,每次执行都应该使用相同的spark上下文。这是正确的吗
为什么我的测试没有并行性?员工、执行者和资源的理想组合是什么
编辑2将计划程序更改为公平,将发布有关此更改的结果
编辑3公平调度程序没有任何区别
伪代码
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()
}
请对代码和Spark UI时间线进行编码:因为每个作业都使用所有可用资源?每个作业4gb就足够了。谢谢,但这不是问题所在。我想你没有明白我的意思。独立集群使用FIFO调度程序。如果所有线程(也称为核心)都分配给一个作业,那么您将获得一个连续的行为。但正如@T.Gawęda所说,你应该提供更多细节。目前还不清楚您使用哪种管理,如何配置单个作业,以及如何提交。@zero323,详细信息是否足够?请编写代码和Spark UI时间线。猜测:因为每个作业使用所有可用资源?每个作业4gb就够了。谢谢,但这不是问题所在。我想你没有明白我的意思。独立集群使用FIFO调度程序。如果所有线程(也称为核心)都分配给一个作业,那么您将获得一个连续的行为。但正如@T.Gawęda所说,你应该提供更多细节。目前还不清楚您使用哪种管理,如何配置单个作业,以及如何提交。@zero323,详细信息是否足够?