2015-05-01 2 views
0

Я играл вокруг с Спарк с помощью прилагаемого искровой-EC2:pyspark использует только половину памяти EC2-искру

./spark-ec2 \ 
--key-pair=pems \ 
--identity-file=/path/pems.pem \ 
--region=eu-west-1 \ 
-s 8 \ 
--instance-type c3.xlarge \ 
launch my-spark-cluster 

После установки я SSH в главном узле после того, как она полностью установлена, а затем я начала pyspark.

$ /root/spark/bin/pyspark --executor-memory 2G 

Я указываю (по крайней мере, думаю), что каждый исполнитель (машина) получает 2 ГБ памяти. Когда я просматриваю консоль на <masternode>:4040, я вижу, что что-то не так.

enter image description here

Когда я ввожу другие предпочтения я получаю тот же результат.

$ /root/spark/bin/pyspark --executor-memory 1G 

enter image description here

Запутанной часть для меня является то, что я указал c3.xlarge машины и они имеют ~ 7,5 Гб оперативной памяти, так что это не должно быть проблемой с нехваткой памяти. У кого-нибудь есть идея?

ответ

2

памяти, показанная здесь, память, выделенная для кэширования Она определяется spark.storage.memoryFraction конфигурации и его значение по умолчанию .6

+0

возможно поднять его? учитывая, что я хочу загружать данные из s3 * once * для остальной части анализа, это похоже на то, что я хотел бы поднять вручную. – cantdutchthis

+0

да, вы можете увеличить его. при запуске исполнителя --config spark.storage.memoryFraction 0.8, обратите внимание, что это не должно быть больше, чем «старое» поколение объектов в JVM, которое по умолчанию дается 0,6 кучи. – banjara

+1

примечание для будущих читателей. вы можете использовать эту команду: '' '/ root/spark/bin/pyspark --conf spark.storage.memoryFraction = 0.75''' – cantdutchthis

Смежные вопросы