2016-12-06 1 views
1

Как искрообразование назначает раздел исполнителю.Когда и как искра распределяет разделы по исполнителям

Когда я побежал следующие строки в искровом оболочке с 1 водителя и 5 исполнителей:

> var data = sc.textFile("file") // auto generates 2 partitions 
> data.count()     // materialize partitions on two nodes 
> data = data.repartition(10) // repartition data.count()    
> data.count()     // 10 partitions still on original 2 nodes 

После переразделения, 10 перегородки по-прежнему лежит на первоначальных двух узлов (из 5). Это кажется очень неэффективным, поскольку на каждом узле, содержащем разделы, многократно выполняются 5 задач, а не равномерно распределены между узлами. Неэффективность наиболее очевидна для итеративных задач, которые многократно повторяются на одних и тех же rdds.

Итак, мой вопрос в том, как искра определяет, какой узел имеет этот раздел, и есть ли способ заставить данные перемещаться на другие узлы?

+0

Вы говорите о двух узлах, но у вас есть один Исполнитель, который не имеет большого смысла. О чем он говорит? –

+0

К сожалению, это была опечатка, только что отредактированная. Спасибо за указание – Yituo

+0

У вас возникли проблемы с распределением задач Sparks? Или это общий вопрос? Сколько ядер имеет каждый Исполнитель? –

ответ

0

Я просто предваряю здесь, чтобы показать логику (не обязательно то, что на самом деле происходит).

Предположим, что ваш файл не очень большой, то есть он находится внутри 1 блока HDFS. И предположим, что блок реплицируется на 2 узла. Если вы захотите выполнить обработку на третьем узле, это означает, что вам нужно скопировать его. Поскольку подсчет является относительно быстрым вычислением, может случиться так, что время, затрачиваемое на обработку задачи, относительно невелико. Spark, возможно, решил, что было бы лучше подождать и выполнить обработку локально, а не перетасовывать данные другим узлам (вы можете настроить этот параметр).

+1

Знаете ли вы, как настроить такую ​​настройку, чтобы она перетасовалась? Я хочу сделать повторяющуюся итеративную задачу, поэтому требуется тасование – Yituo