Linux tabanlı HDInsight üzerinde Apache Hadoop YARN uygulama günlüklerine erişme

Azure HDInsight'taki bir Apache Hadoop kümesinde Apache Hadoop YARN (Ancak Başka Bir Kaynak Müzakerecisi) uygulamalarının günlüklerine nasıl erişeceğinizi öğrenin.

Apache YARN nedir?

YARN, kaynak yönetimini uygulama zamanlama/izlemeden ayırma yoluyla birden çok programlama modelini (Apache Hadoop MapReduce bunlardan biri) destekler. YARN genel ResourceManager (RM), çalışan düğümü başına NodeManagers (NM) ve uygulama başına ApplicationMasters (AM) kullanır. Uygulama başına AM, uygulamanızı RM ile çalıştırmak için kaynakları (CPU, bellek, disk, ağ) belirler. RM, kapsayıcı olarak verilen bu kaynakları vermek için NM'lerle birlikte çalışır. AM, RM tarafından kendisine atanan kapsayıcıların ilerleme durumunu izlemekle sorumludur. Bir uygulama, uygulamanın doğasına bağlı olarak birçok kapsayıcı gerektirebilir.

Her uygulama birden çok uygulama denemelerinden oluşabilir. Bir uygulama başarısız olursa, yeni bir deneme olarak yeniden denenebilir. Her deneme bir kapsayıcıda çalışır. Bir anlamda kapsayıcı, bir YARN uygulaması tarafından yapılan temel iş birimi bağlamını sağlar. Kapsayıcı bağlamında yapılan tüm işler, kapsayıcının verildiği tek çalışan düğümünde yapılır. Daha fazla başvuru için bkz . Hadoop: YARN Uygulamaları Yazma veya Apache Hadoop YARN .

Kümenizi daha büyük işleme aktarım hızını destekleyecek şekilde ölçeklendirmek için, birkaç farklı dil kullanarak Otomatik Ölçeklendirme'yi kullanabilir veya Kümelerinizi el ile ölçeklendirin.

YARN Zaman Çizelgesi Sunucusu

Apache Hadoop YARN Zaman Çizelgesi Sunucusu tamamlanmış uygulamalar hakkında genel bilgiler sağlar

YARN Zaman Çizelgesi Sunucusu aşağıdaki veri türünü içerir:

  • Uygulamanın benzersiz tanımlayıcısı olan uygulama kimliği
  • Uygulamayı başlatan kullanıcı
  • Uygulamayı tamamlamak için yapılan girişimlerle ilgili bilgiler
  • Belirli bir uygulama girişimi tarafından kullanılan kapsayıcılar

YARN uygulamaları ve günlükleri

Sorunlu Hadoop uygulamalarında hata ayıklamada uygulama günlükleri (ve ilişkili kapsayıcı günlükleri) kritik öneme sahiptir. YARN, Günlük Toplama ile uygulama günlüklerini toplamak, toplamak ve depolamak için güzel bir çerçeve sağlar.

Günlük Toplama özelliği, uygulama günlüklerine erişimi daha belirleyici hale getirir. Bir çalışan düğümündeki tüm kapsayıcılardaki günlükleri toplar ve bunları çalışan düğümü başına bir toplu günlük dosyası olarak depolar. Uygulama bittikten sonra günlük varsayılan dosya sisteminde depolanır. Uygulamanız yüzlerce veya binlerce kapsayıcı kullanabilir, ancak tek bir çalışan düğümünde çalıştırılan tüm kapsayıcıların günlükleri her zaman tek bir dosyaya toplanır. Bu nedenle, uygulamanız tarafından çalışan düğümü başına yalnızca bir günlük kullanılır. HDInsight kümeleri sürüm 3.0 ve üzerinde Günlük Toplama varsayılan olarak etkinleştirilir. Toplanan günlükler küme için varsayılan depolama alanında yer alır. Aşağıdaki yol, günlüklerin HDFS yoludur:

/app-logs/<user>/logs/<applicationId>

Yolda, user uygulamayı başlatan kullanıcının adıdır. applicationId, YARN RM tarafından bir uygulamaya atanan benzersiz tanımlayıcıdır.

Toplanan günlükler, kapsayıcı tarafından dizine alınan bir TFileikili biçimde yazıldığı için doğrudan okunamaz. Bu günlükleri, ilgilendiğiniz uygulamalar veya kapsayıcılar için düz metin olarak görüntülemek için YARN ResourceManager günlüklerini veya CLI araçlarını kullanın.

ESP kümesindeki Yarn günlükleri

Ambari'deki özel mapred-site öğeye iki yapılandırma eklenmelidir.

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

  2. Ambari kullanıcı arabiriminden MapReduce2>Yapılandırmaları>Gelişmiş>Özel mapred-site'ye gidin.

  3. Aşağıdaki özellik kümelerinden birini ekleyin:

    1'i ayarla

    mapred.acls.enabled=true
    mapreduce.job.acl-view-job=*
    

    2'i ayarla

    mapreduce.job.acl-view-job=<user1>,<user2>,<user3>
    
  4. Değişiklikleri kaydedin ve etkilenen tüm hizmetleri yeniden başlatın.

YARN CLI araçları

  1. Kümenize bağlanmak için ssh komutunu kullanın. CLUSTERNAME değerini kümenizin adıyla değiştirip komutunu girerek aşağıdaki komutu düzenleyin:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. Şu anda çalışmakta olan Yarn uygulamalarının tüm uygulama kimliklerini aşağıdaki komutla listeleyin:

    yarn top
    

    Günlükleri indirilecek olan sütundaki APPLICATIONID uygulama kimliğini not edin.

    YARN top - 18:00:07, up 19d, 0:14, 0 active users, queue(s): root
    NodeManager(s): 4 total, 4 active, 0 unhealthy, 0 decommissioned, 0 lost, 0 rebooted
    Queue(s) Applications: 2 running, 10 submitted, 0 pending, 8 completed, 0 killed, 0 failed
    Queue(s) Mem(GB): 97 available, 3 allocated, 0 pending, 0 reserved
    Queue(s) VCores: 58 available, 2 allocated, 0 pending, 0 reserved
    Queue(s) Containers: 2 allocated, 0 pending, 0 reserved
    
                      APPLICATIONID USER             TYPE      QUEUE   #CONT  #RCONT  VCORES RVCORES     MEM    RMEM  VCORESECS    MEMSECS %PROGR       TIME NAME
     application_1490377567345_0007 hive            spark  thriftsvr       1       0       1       0      1G      0G    1628407    2442611  10.00   18:20:20 Thrift JDBC/ODBC Server
     application_1490377567345_0006 hive            spark  thriftsvr       1       0       1       0      1G      0G    1628430    2442645  10.00   18:20:20 Thrift JDBC/ODBC Server
    
  3. Aşağıdaki komutlardan birini çalıştırarak bu günlükleri düz metin olarak görüntüleyebilirsiniz:

    yarn logs -applicationId <applicationId> -appOwner <user-who-started-the-application>
    yarn logs -applicationId <applicationId> -appOwner <user-who-started-the-application> -containerId <containerId> -nodeAddress <worker-node-address>
    

    <Bu komutları çalıştırırken applicationId>, <user-who-started-the-application>, <containerId> ve <worker-node-address> bilgilerini belirtin.

Diğer örnek komutlar

  1. Aşağıdaki komutla tüm uygulama yöneticileri için Yarn kapsayıcı günlüklerini indirin. Bu adım, adlı amlogs.txt günlük dosyasını metin biçiminde oluşturur.

    yarn logs -applicationId <application_id> -am ALL > amlogs.txt
    
  2. Aşağıdaki komutla yalnızca en son uygulama yöneticisi için Yarn kapsayıcı günlüklerini indirin:

    yarn logs -applicationId <application_id> -am -1 > latestamlogs.txt
    
  3. aşağıdaki komutla ilk iki uygulama yöneticisi için YARN kapsayıcı günlüklerini indirin:

    yarn logs -applicationId <application_id> -am 1,2 > first2amlogs.txt
    
  4. Aşağıdaki komutla tüm Yarn kapsayıcı günlüklerini indirin:

    yarn logs -applicationId <application_id> > logs.txt
    
  5. Aşağıdaki komutla belirli bir kapsayıcı için yarn kapsayıcı günlüğünü indirin:

    yarn logs -applicationId <application_id> -containerId <container_id> > containerlogs.txt
    

YARN ResourceManager Kullanıcı Arabirimi

YARN ResourceManager kullanıcı arabirimi küme baş düğümünde çalışır. Ambari web kullanıcı arabirimi aracılığıyla erişilir. YARN günlüklerini görüntülemek için aşağıdaki adımları kullanın:

  1. Web tarayıcınızda adresine https://CLUSTERNAME.azurehdinsight.netgidin. CLUSTERNAME değerini HDInsight kümenizin adıyla değiştirin.

  2. Soldaki hizmetler listesinden YARN'ı seçin.

    Apache Ambari Yarn service selected.

  3. Hızlı Bağlantılar açılan listesinden küme baş düğümlerinden birini seçin ve ardından öğesini seçinResourceManager Log.

    Apache Ambari Yarn quick links.

    SIZE YARN günlüklerinin bağlantılarının bir listesi sunulur.

Sonraki adımlar