Linux tabanlı HDInsight üzerinde Apache Hadoop hizmetleri için yığın dökümlerini etkinleştirme

Yığın dökümleri, döküm oluşturulduğu sırada değişkenlerin değerleri de dahil olmak üzere uygulamanın belleğinin anlık görüntüsünü içerir. Bu nedenle, çalışma zamanında oluşan sorunları tanılamak için yararlıdır.

Hizmetler

Aşağıdaki hizmetler için yığın dökümlerini etkinleştirebilirsiniz:

  • Apache hcatalog - tempelton
  • Apache hive - hiveserver2, meta veri deposu, derbyserver
  • mapreduce - jobhistoryserver
  • Apache yarn - resourcemanager, nodemanager, timelineserver
  • Apache hdfs - datanode, secondarynamenode, namenode

Ayrıca, HDInsight tarafından çalıştırılan harita ve azaltma işlemleri için yığın dökümlerini etkinleştirebilirsiniz.

Yığın dökümü yapılandırmasını anlama

Yığın dökümleri, bir hizmet başlatıldığında JVM'ye seçenekler (bazen tercihler veya parametreler olarak da bilinir) geçirilerek etkinleştirilir. Çoğu Apache Hadoop hizmeti için, hizmeti başlatmak için kullanılan kabuk betiğini değiştirerek bu seçenekleri geçirebilirsiniz.

Her betikte, *_OPTS için JVM'ye geçirilen seçenekleri içeren bir dışarı aktarma vardır. Örneğin, hadoop-env.sh betiğinde ile export HADOOP_NAMENODE_OPTS= başlayan satır NameNode hizmetinin seçeneklerini içerir.

Bu işlemler MapReduce hizmetinin alt işlemi olduğundan eşleme ve azaltma işlemleri biraz farklıdır. Her eşleme veya azaltma işlemi bir alt kapsayıcıda çalışır ve JVM seçeneklerini içeren iki giriş vardır. her ikisi de mapred-site.xml:

  • mapreduce.admin.map.child.java.opts
  • mapreduce.admin.reduce.child.java.opts

Yığın dökümlerini etkinleştirme

Aşağıdaki seçenek bir OutOfMemoryError oluştuğunda yığın dökümlerini etkinleştirir:

-XX:+HeapDumpOnOutOfMemoryError

, + bu seçeneğin etkin olduğunu gösterir. Varsayılan değer devre dışı bırakılmasıdır.

Uyarı

Döküm dosyaları büyük olabileceğinden yığın dökümleri HDInsight'ta Hadoop hizmetleri için varsayılan olarak etkinleştirilmez. Sorun giderme için etkinleştirdiyseniz, sorunu yeniden oluşturup döküm dosyalarını topladıktan sonra devre dışı bırakmayı unutmayın.

Döküm konumu

Döküm dosyasının varsayılan konumu geçerli çalışma dizinidir. Aşağıdaki seçeneği kullanarak dosyanın nerede depolandığını denetleyebilirsiniz:

-XX:HeapDumpPath=/path

Örneğin, kullanmak -XX:HeapDumpPath=/tmp dökümlerin /tmp dizininde depolanmasına neden olur.

Betikler

Bir OutOfMemoryError oluştuğunda da betiği tetikleyebilirsiniz. Örneğin, hatanın oluştuğundan emin olmak için bir bildirim tetikleme. OutOfMemoryError'da betik tetikleme için aşağıdaki seçeneği kullanın:

-XX:OnOutOfMemoryError=/path/to/script

Not

Apache Hadoop dağıtılmış bir sistem olduğundan, kullanılan tüm betikler hizmetin çalıştığı kümedeki tüm düğümlere yerleştirilmelidir.

Betiğin ayrıca hizmetin çalıştığı hesap tarafından erişilebilen bir konumda olması ve yürütme izinleri sağlaması gerekir. Örneğin, betikleri içinde /usr/local/bin depolamak ve okuma ve yürütme izinleri vermek için kullanmak chmod go+rx /usr/local/bin/filename.sh isteyebilirsiniz.

Apache Ambari kullanma

Bir hizmetin yapılandırmasını değiştirmek için aşağıdaki adımları kullanın:

  1. Bir web tarayıcısından adresine gidin https://CLUSTERNAME.azurehdinsight.net; burada CLUSTERNAME kümenizin adıdır.

  2. Soldaki listesini kullanarak değiştirmek istediğiniz hizmet alanını seçin. Örneğin, HDFS. Orta alanda Yapılandırmalar sekmesini seçin.

    Image of Ambari web with HDFS Configs tab selected.

  3. Filter... girişini kullanarak opts girin. Yalnızca bu metni içeren öğeler görüntülenir.

    Apache Ambari config filtered list.

  4. Yığın dökümlerini etkinleştirmek istediğiniz hizmetin *_OPTS girdisini bulun ve etkinleştirmek istediğiniz seçenekleri ekleyin. Aşağıdaki görüntüde, HADOOP_NAMENODE_OPTS girdisine ekledim-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/:

    Apache Ambari hadoop-namenode-opts.

    Not

    Harita için yığın dökümlerini etkinleştirirken veya alt işlemi azaltırken, mapreduce.admin.map.child.java.opts ve mapreduce.admin.reduce.child.java.opts adlı alanları arayın.

    Değişiklikleri kaydetmek için Kaydet düğmesini kullanın. Değişiklikleri açıklayan kısa bir not girebilirsiniz.

  5. Değişiklikler uygulandıktan sonra, bir veya daha fazla hizmetin yanında Yeniden başlat gerekli simgesi görüntülenir.

    restart required icon and restart button.

  6. Yeniden başlatması gereken her hizmeti seçin ve Bakım Modunu Açmak için Hizmet Eylemleri düğmesini kullanın. Bakım modu, yeniden başlattığınızda hizmetten uyarıların oluşturulmasını engeller.

    Turn on hdi maintenance mode menu.

  7. Bakım modunu etkinleştirdikten sonra Hizmetin Yeniden Başlat düğmesini kullanarak Tümünü Yeniden Başlat Etkin

    Apache Ambari Restart All Affected entry.

    Not

    Yeniden Başlat düğmesinin girişleri diğer hizmetler için farklı olabilir.

  8. Hizmetler yeniden başlatıldıktan sonra Bakım Modunu Kapatmak için Hizmet Eylemleri düğmesini kullanın. Bu Ambari, hizmetle ilgili uyarıları izlemeye devam eder.