Aracılığıyla paylaş


Apache Spark için bellek kullanımı iyileştirmesi

Bu makalede, Azure HDInsight'ta en iyi performans için Apache Spark kümenizin bellek yönetimini iyileştirme adımları anlatılmaktadır.

Genel Bakış

Spark, verileri belleğe yerleştirerek çalışır. Bu nedenle bellek kaynaklarını yönetmek, Spark işlerinin yürütülmesini iyileştirmenin önemli bir yönüdür. Kümenizin belleğini verimli bir şekilde kullanmak için uygulayabileceğiniz çeşitli teknikler vardır.

  • Daha küçük veri bölümlerini tercih edin ve bölümleme stratejinizde veri boyutu, türleri ve dağıtımı için hesap oluşturun.
  • Varsayılan Java serileştirmesi yerine daha yeni, daha verimli Kryo data serializationdüşünün.
  • spark-submit'ı gruplar halinde ayırdığı için YARN kullanmayı tercih edin.
  • Spark yapılandırma ayarlarını izleyin ve ayarlayın.

Başvurunuz için Spark bellek yapısı ve bazı anahtar yürütücü bellek parametreleri sonraki görüntüde gösterilir.

Spark bellekle ilgili dikkat edilmesi gerekenler

Apache Hadoop YARN kullanıyorsanız YARN, her Spark düğümündeki tüm kapsayıcılar tarafından kullanılan belleği denetler. Aşağıdaki diyagramda anahtar nesneler ve bunların ilişkileri gösterilmektedir.

YARN Spark Bellek Yönetimi.

'Bellek yetersiz' iletilerini ele almak için şunları deneyin:

  • DAG Yönetim Değişikliklerini gözden geçirin. Harita tarafındaki azaltma ile, kaynak verileri önceden bölümleyerek (veya demetleyerek), tek bir karıştırmayı en üst düzeye çıkararak ve gönderilen veri miktarını azaltarak.
  • ReduceByKey'ı, toplamalar, pencereleme ve diğer işlevleri sağlayan ancak sınırsız bellek sınırına sahip olan GroupByKey'e tercih edin, çünkü ReduceByKey sabit bellek sınırına sahiptir.
  • Tercih edin TreeReduce, bu daha fazla işlem yürütücüler veya bölümler üzerinde yapar, Reduce yerine, bu tüm işlemi sürücü üzerinde yapar.
  • Alt düzey RDD nesneleri yerine DataFrames kullanın.
  • "İlk N", çeşitli toplamalar veya pencereleme işlemleri gibi eylemleri kapsülleyen ComplexType'lar oluşturun.

Ek sorun giderme adımları hakkında bilgi için Azure HDInsight'ta Apache Spark için OutOfMemoryError özel durumlarınabakın.

Sonraki adımlar