Возможно, вы захотите узнать, связано ли то, что вы просматриваете, с Dataproc устанавливает число vcores на контейнер исполнителя - число используемых vcores, сообщаемое YARN, известно как неправильное, ноэто только косметический дефект.В кластере Dataproc с 8-ядерными машинами конфигурация по умолчанию уже устанавливает 4 ядра на исполнителя;если вы щелкнете по YARN для мастера приложений Spark, вы увидите, что Spark действительно может упаковать 4 одновременных задачи для каждого исполнителя.
Эта часть объясняет то, что может выглядеть как "только использование 2 vCPU" на узел.
Тот факт, что в задании задействованы только два рабочих узла, указывает на то, что это еще не все;количество параллелизма, которое вы получаете, связано с тем, насколько хорошо данные разделены .Если у вас есть входные файлы, такие как gzip-файлы, которые не могут быть разделены, то, к сожалению, нет простого способа увеличить входной параллелизм.Однако, по крайней мере, на более поздних стадиях конвейера или если у вас есть разделяемые файлы, вы можете увеличить параллелизм, указав количество разделов Spark во время чтения или вызвав repartition
в своем коде.В зависимости от размера ввода вы также можете поэкспериментировать с уменьшением fs.gs.block.size
;по умолчанию 134217728
(128 МБ), но вы можете установить половину этого или четверть того или чего-либо, установив его во время создания кластера:
--properties core:fs.gs.block.size=67108864
или во время отправки задания:
--properties spark.hadoop.fs.gs.block.size=67108864