簡體   English   中英

spark如何將培訓任務平均分配給執行者?

[英]how spark distribute training tasks to evenly across executors?

我建立了一個帶有4個worker(每個都有4個核心)和1個master的spark獨立集群。 每個都有窗口10個操作系統。 我向我們的Spark獨立集群提交了Spark的ML示例:multiple_perceptron_classification.py。 但是它正在將所有任務交由一名工人的一名執行者執行。 在此處輸入圖片說明

多層代碼是_perceptron_classification.py代碼(代碼使用Spark MLlib):

spark = SparkSession\
    .builder.appName("multilayer_perceptron_classification_example").getOrCreate()

data = spark.read.format("libsvm")\
    .load("C:/spark/spark-2.3.2-bin-hadoop2.7/data/mllib/sample_multiclass_classification_data1.txt")

splits = data.randomSplit([0.6, 0.4], 1234)
train = splits[0]   
test = splits[1] 

layers = [4, 500, 500, 500, 3]

trainer = MultilayerPerceptronClassifier(maxIter=100, layers=layers, blockSize=128, seed=1234)

model = trainer.fit(train)

result = model.transform(test)
predictionAndLabels = result.select("prediction", "label")
evaluator = MulticlassClassificationEvaluator(metricName="accuracy")
print("Test set accuracy = " + str(evaluator.evaluate(predictionAndLabels)))

spark.stop()

我不知道為什么它只運行一台計算機。 我想知道訓練算法最初是串行構造的還是錯過了spark集群的某些配置。(我以為spark cluster做分布式訓練,但不是)請幫幫我。 先感謝您。

檢查分區數( data.rdd.partitions.size ),最有可能是1。分區中Spark中的並行化單位。 Spark使用的執行程序不會超過數據分區的數量。

要解決此問題,請在多個文件中將sample_multiclass_classification_data1.txt中的數據sample_multiclass_classification_data1.txt為多個文件,或者將其重新分區

num_partitions = 32
data = spark.read.format("libsvm")\
    .load("C:/spark/spark-2.3.2-bin-hadoop2.7/data/mllib/sample_multiclass_classification_data1.txt").repartition(num_partitions)

相關問題: 根據工作線程,內核和DataFrame大小確定Spark分區的最佳數量

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM