Akses log aplikasi YARN di Microsoft Azure HDInsight berbasis Linux

Pelajari cara mengakses log untuk aplikasi Apache Hadoop YARN (Masih Negosiator Sumber Daya Lain) pada klaster Apache Hadoop di Azure HDInsight.

Apa yang dimaksud dengan Apache Spark?

YARN mendukung beberapa model pemrograman (Apache Hadoop MapReduce adalah salah satunya) dengan memisahkan manajemen sumber daya dari penjadwalan/pemantauan aplikasi. YARN menggunakan ResourceManager (RM) global, NodeManager (NM) node-per-pekerja, dan ApplicationMaster (AM) per-aplikasi. AM per-aplikasi menegosiasikan sumber daya (CPU, memori, disk, jaringan) untuk menjalankan aplikasi Anda dengan RM. RM bekerja sama dengan NMs untuk mengabulkan sumber daya ini, yang dikabulkan sebagai kontainer. AM bertanggung jawab untuk melacak kemajuan kontainer yang ditetapkan oleh RM. Aplikasi mungkin memerlukan banyak kontainer tergantung dari sifat aplikasi.

Setiap aplikasi dapat terdiri dari beberapa upaya aplikasi. Jika gagal, aplikasi dapat dicoba ulang sebagai upaya baru. Setiap upaya dijalankan dalam kontainer. Dalam arti tertentu, kontainer menyediakan konteks untuk unit dasar pekerjaan yang dilakukan oleh aplikasi YARN. Semua pekerjaan yang dilakukan dalam konteks kontainer dilakukan pada node pekerja tunggal tempat kontainer diberikan. Lihat Hadoop: Penulisan Aplikasi YARN, atau APACHE Hadoop YARN untuk referensi selengkapnya.

Untuk menskalakan klaster Anda untuk mendukung throughput pemrosesan yang lebih besar, Anda dapat menggunakan Skala otomatis atau Menskalakan klaster Anda secara manual menggunakan beberapa bahasa yang berbeda.

YARN Timeline Server

Apache Hadoop YARN Timeline Server menyediakan informasi umum tentang aplikasi yang telah selesai

YARN Timeline Server menyertakan jenis data berikut ini:

  • ID aplikasi, pengidentifikasi unik aplikasi
  • Pengguna yang memulai aplikasi
  • Informasi tentang upaya yang dilakukan untuk menyelesaikan aplikasi
  • Kontainer yang digunakan oleh upaya aplikasi yang diberikan

Aplikasi dan log YARN

Log aplikasi (dan log kontainer terkait) sangat penting untuk men-debug aplikasi Hadoop yang bermasalah. YARN menyediakan kerangka kerja yang bagus untuk mengumpulkan, agregasi, dan menyimpan log aplikasi dengan Log Aggregation.

Fitur Agregasi Log membuat pengaksesan log aplikasi lebih deterministik. Ia mengagregasi log melintasi semua kontainer pada node pekerja dan menyimpannya sebagai satu file log agregat per node pekerja. Log disimpan pada sistem file default setelah aplikasi selesai. Aplikasi Anda dapat menggunakan ratusan atau ribuan kontainer, tetapi log untuk semua kontainer yang dijalankan pada satu node pekerja selalu dikumpulkan ke satu file. Jadi hanya ada satu log per simpul pekerja yang digunakan oleh aplikasi Anda. Log Aggregation diaktifkan secara default pada klaster HDInsight versi 3.0 ke atas. Log agregat terletak di penyimpanan default untuk kluster. Jalur berikut merupakan jalur HDFS ke log:

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

Di jalur tersebut, user merupakan nama pengguna yang memulai aplikasi. applicationId adalah pengidentifikasi unik yang ditetapkan ke aplikasi oleh YARN RM.

Log agregat tidak dapat dibaca secara langsung, karena ditulis dalam format biner , yang diindeks TFileoleh kontainer. Gunakan log YARN ResourceManager atau alat CLI untuk melihat log ini sebagai teks biasa untuk kepentingan aplikasi atau kontainer.

Log Yarn dalam klaster ESP

Dua konfigurasi harus ditambahkan ke mapred-site kustom di Ambari.

  1. Dari browser web, arahkan ke https://CLUSTERNAME.azurehdinsight.net, di mana CLUSTERNAME merupakan nama kluster Anda.

  2. Dari Ambari UI, arahkan ke MapReduce2>Konfigurasi>Tingkat Lanjut>mapred-site kustom.

  3. Tambahkan salah satu set properti berikut ini:

    Set 1

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

    Set 2

    mapreduce.job.acl-view-job=<user1>,<user2>,<user3>
    
  4. Simpan perubahan dan mulai ulang layanan yang terdampak.

Alat CLI YARN

  1. Gunakan perintah ssh untuk menyambungkan ke kluster Anda. Edit perintah berikut dengan mengganti CLUSTERNAME dengan nama kluster Anda, lalu masukkan perintah:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. Masukkan semua ID aplikasi dari aplikasi Yarn yang sedang berjalan saat ini dalam daftar dengan perintah berikut:

    yarn top
    

    Perhatikan ID aplikasi dari kolom APPLICATIONID yang lognya akan diunduh.

    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. Anda bisa melihat log ini sebagai teks biasa dengan menjalankan salah satu perintah berikut:

    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>
    

    Tentukan informasi <applicationId>, <user-who-started-the-application>, <containerId>, dan <worker-node-address> saat menjalankan ini perintah.

Perintah sampel lainnya

  1. Unduh log kontainer Yarn untuk semua master aplikasi dengan perintah berikut. Langkah ini membuat file log bernama amlogs.txt dalam format teks.

    yarn logs -applicationId <application_id> -am ALL > amlogs.txt
    
  2. Unduh log kontainer Yarn untuk semua master aplikasi terbaru saja dengan perintah berikut:

    yarn logs -applicationId <application_id> -am -1 > latestamlogs.txt
    
  3. Unduh log kontainer YARN untuk dua master aplikasi pertama dengan perintah berikut:

    yarn logs -applicationId <application_id> -am 1,2 > first2amlogs.txt
    
  4. Unduh semua log kontainer Yarn dengan perintah berikut:

    yarn logs -applicationId <application_id> > logs.txt
    
  5. Unduh log kontainer yarn untuk kontainer tertentu dengan perintah berikut:

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

YARN ResourceManager UI

YARN ResourceManager UI berjalan pada headnode klaster. Ia diakses melalui UI web Ambari. Gunakan langkah-langkah berikut untuk melihat log YARN:

  1. Di browser web, arahkan ke https://CLUSTERNAME.azurehdinsight.net. Ganti CLUSTERNAME dengan nama kluster HDInsight Anda.

  2. Dari daftar layanan di sebelah kiri, pilih YARN.

    Apache Ambari Yarn service selected.

  3. Dari menu tarik-turun Tautan Cepat, pilih salah satu node head klaster lalu pilih ResourceManager Log.

    Apache Ambari Yarn quick links.

    Anda disajikan dengan daftar tautan ke log YARN.

Langkah berikutnya