Konfigurasi pencatatan log dan debugging klaster - Amazon EMR

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Konfigurasi pencatatan log dan debugging klaster

Salah satu hal yang harus diputuskan saat Anda merencanakan klaster adalah seberapa banyak dukungan debugging yang ingin Anda sediakan. Saat pertama kali mengembangkan aplikasi pemrosesan data, sebaiknya uji aplikasi pada klaster yang memproses sebagian kecil, namun mewakili data Anda. Jika Anda melakukan ini, Anda mungkin ingin memanfaatkan semua alat debugging yang ditawarkan Amazon EMR, seperti pengarsipan berkas log ke Amazon S3.

Setelah Anda menyelesaikan pengembangan dan memasukkan aplikasi pemrosesan data ke produksi penuh, Anda dapat memilih untuk mengurangi skala debugging. Melakukannya dapat menghemat biaya penyimpanan arsip berkas log di Amazon S3 dan mengurangi beban pemrosesan pada klaster karena tidak perlu lagi menulis status ke Amazon S3. Keuntungannya, tentu saja, adalah jika terjadi kesalahan, Anda hanya membutuhkan lebih sedikit alat untuk menyelidiki masalah tersebut.

berkas log default

Secara default, setiap cluster menulis file log pada node utama. Ini ditulis untuk direktori /mnt/var/log/. Anda dapat mengaksesnya dengan menggunakan SSH untuk terhubung ke node utama seperti yang dijelaskan dalamConnect ke node utama menggunakan SSH.

catatan

Jika Anda menggunakan Amazon EMR release 6.8.0 atau versi lebih lama, file log disimpan ke Amazon S3 selama penghentian klaster, sehingga Anda tidak dapat mengakses file log setelah node utama berakhir. Amazon EMR merilis 6.9.0 dan log arsip yang lebih baru ke Amazon S3 selama penskalaan cluster, sehingga file log yang dihasilkan di cluster tetap ada bahkan setelah node dihentikan.

Anda tidak perlu mengaktifkan apa pun untuk memiliki file log yang ditulis pada simpul utama. Ini adalah perilaku default Amazon EMR dan Hadoop.

Sebuah klaster menghasilkan beberapa jenis berkas log, termasuk:

  • Langkah log — Log ini dihasilkan oleh layanan Amazon EMR dan berisi informasi tentang klaster dan hasil dari setiap langkah. File log disimpan dalam /mnt/var/log/hadoop/steps/ direktori pada node utama. Setiap langkah mencatat hasilnya dalam subdirektori bernomor terpisah: /mnt/var/log/hadoop/steps/s-stepId1/ untuk langkah pertama, /mnt/var/log/hadoop/steps/s-stepId2/, untuk langkah kedua, dan seterusnya. Pengidentifikasi langkah 13 karakter (misalnya stepId1, stepId2) unik untuk sebuah klaster.

  • Log komponen Hadoop dan YARN — Log untuk komponen yang terkait dengan Apache YARN dan MapReduce, misalnya, terkandung dalam folder terpisah di. /mnt/var/log Lokasi berkas log untuk komponen Hadoop di bawah /mnt/var/log adalah sebagai berikut: hadoop-hdfs, hadoop-mapreduce, hadoop-httpfs, dan hadoop-yarn. hadoop-state-pusher Direktori adalah untuk output dari proses pendorong status Hadoop.

  • Log tindakan bootstrap — Jika tugas Anda menggunakan tindakan bootstrap, hasil dari tindakan tersebut akan dicatat. File log disimpan di /mnt/var/log/bootstrap-actions/ pada node utama. Setiap tindakan bootstrap mencatat hasilnya di subdirektori bernomor terpisah: /mnt/var/log/bootstrap-actions/1/ untuk tindakan bootstrap pertama, /mnt/var/log/bootstrap-actions/2/, untuk tindakan bootstrap kedua, dan seterusnya.

  • Log status instans- Log ini memberikan informasi tentang CPU, status memori, dan utas pengumpul sampah dari simpul. File log disimpan /mnt/var/log/instance-state/ di simpul utama.

Arsipkan berkas log ke Amazon S3

catatan

Saat ini Anda tidak dapat menggunakan agregasi log ke Amazon S3 dengan utilitas yarn logs.

Amazon EMR merilis 6.9.0 dan log arsip yang lebih baru ke Amazon S3 selama penskalaan cluster, sehingga file log yang dihasilkan di cluster tetap ada bahkan setelah node dihentikan. Perilaku ini diaktifkan secara otomatis, jadi Anda tidak perlu melakukan apa pun untuk menyalakannya. Untuk Amazon EMR rilis 6.8.0 dan versi lebih lama, Anda dapat mengonfigurasi cluster untuk mengarsipkan file log yang disimpan di node utama ke Amazon S3 secara berkala. Hal ini memastikan bahwa berkas log tersedia setelah klaster berakhir, baik melalui pematian normal atau karena kesalahan. Amazon EMR arsip berkas log ke Amazon S3 dengan interval 5 menit.

Agar file log diarsipkan ke Amazon S3 untuk Amazon EMR rilis 6.8.0 dan yang lebih lama, Anda harus mengaktifkan fitur ini saat meluncurkan cluster. Anda dapat melakukannya dengan menggunakan konsol, CLI, atau API. Secara default, klaster diluncurkan dengan menggunakan konsol yang telah mengaktifkan pengarsipan log. Untuk klaster yang diluncurkan menggunakan CLI atau API, log ke Amazon S3 harus diaktifkan secara manual.

catatan

Kami telah mendesain ulang konsol EMR Amazon agar lebih mudah digunakan. Lihat Konsol Amazon EMR untuk mempelajari tentang perbedaan antara pengalaman konsol lama dan baru.

New console
Untuk mengarsipkan file log ke Amazon S3 dengan konsol baru
  1. Masuk ke AWS Management Console, dan buka konsol EMR Amazon di https://console.aws.amazon.com/emr.

  2. Di bawah EMR pada EC2 di panel navigasi kiri, pilih Clusters, lalu pilih Create cluster.

  3. Di bawah Log klaster, pilih kotak centang Publikasikan log khusus klaster ke Amazon S3.

  4. Di bidang lokasi Amazon S3, ketik (atau telusuri ke) jalur Amazon S3 untuk menyimpan log Anda. Jika Anda mengetik nama folder yang tidak ada di bucket, Amazon S3 membuatnya.

    Saat Anda menetapkan nilai ini, Amazon EMR menyalin file log dari instans EC2 di cluster ke Amazon S3. Ini mencegah file log hilang saat cluster berakhir dan EC2 menghentikan instance yang menghosting cluster. Log ini berguna untuk tujuan pemecahan masalah. Untuk informasi lebih lanjut tentang format berkas log, lihat Tampilkan berkas log.

  5. Secara opsional, pilih kotak centang Encrypt cluster-specific logs. Kemudian, pilih AWS KMS kunci dari daftar, masukkan kunci ARN, atau buat kunci baru. Opsi ini hanya tersedia dengan Amazon EMR versi 5.30.0 dan yang lebih baru, tidak termasuk versi 6.0.0. Untuk menggunakan opsi ini, tambahkan izin AWS KMS untuk profil instans EC2 Anda dan peran Amazon EMR. Untuk informasi selengkapnya, lihat Untuk mengenkripsi berkas log yang disimpan di Amazon S3 dengan AWS kunci yang dikelola pelanggan KMS.

  6. Pilih opsi lain yang berlaku untuk cluster Anda.

  7. Untuk meluncurkan klaster Anda, pilih Buat klaster.

Old console
Untuk mengarsipkan file log ke Amazon S3 dengan konsol lama
  1. Arahkan ke konsol EMR Amazon baru dan pilih Beralih ke konsol lama dari navigasi samping. Untuk informasi selengkapnya tentang apa yang diharapkan saat beralih ke konsol lama, lihat Menggunakan konsol lama.

  2. Pilih Buat klaster.

  3. Pilih Pergi ke opsi lanjutan.

  4. Di bagian Opsi umum, di bidang Pencatatan log, terima opsi default: Diaktifkan.

    Hal ini menentukan apakah Amazon EMR menangkap data log terperinci ke Amazon S3. Anda hanya dapat mengatur ini ketika klaster dibuat. Untuk informasi selengkapnya, lihat Melihat berkas log.

  5. Di bidang Folder S3, ketik (atau jelajahi ke) jalur Amazon S3 untuk menyimpan log Anda. Anda juga dapat mengizinkan konsol untuk menghasilkan jalur Amazon S3 untuk Anda. Jika Anda mengetik nama folder yang tidak ada di bucket, nama folder tersebut akan dibuat.

    Saat nilai ini ditetapkan, Amazon EMR menyalin berkas log dari instans EC2 di klaster ke Amazon S3. Hal ini mencegah berkas log hilang saat klaster berakhir dan instans EC2 yang menghosting klaster diakhiri. Log ini berguna untuk tujuan pemecahan masalah.

    Untuk informasi lebih lanjut tentang format berkas log, lihat Tampilkan berkas log.

  6. Di bidang enkripsi Log, pilih Enkripsi log yang disimpan di S3 dengan kunci terkelola pelanggan AWS KMS. Kemudian pilih kunci AWS KMS dari daftar atau masukkan kunci ARN. Anda juga dapat membuat AWS KMS kunci baru.

    Opsi ini hanya tersedia dengan Amazon EMR versi 5.30.0 dan yang lebih baru, tidak termasuk versi 6.0.0. Untuk menggunakan opsi ini, tambahkan izin AWS KMS untuk profil instans EC2 Anda dan peran Amazon EMR. Untuk informasi selengkapnya, lihat Untuk mengenkripsi berkas log yang disimpan di Amazon S3 dengan AWS kunci yang dikelola pelanggan KMS.

  7. Lanjutkan dengan membuat klaster seperti yang dijelaskan dalam Merencanakan dan mengonfigurasi klaster.

CLI
Untuk mengarsipkan file log ke Amazon S3 dengan AWS CLI

Untuk mengarsipkan file log ke Amazon S3 menggunakan AWS CLI, ketik create-cluster perintah dan tentukan jalur log Amazon S3 menggunakan parameter. --log-uri

  1. Untuk berkas log ke Amazon S3 ketik perintah berikut dan ganti myKey dengan nama pasangan kunci EC2 Anda.

    aws emr create-cluster --name "Test cluster" --release-label emr-7.1.0 --log-uri s3://DOC-EXAMPLE-BUCKET/logs --applications Name=Hadoop Name=Hive Name=Pig --use-default-roles --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3
  2. Saat Anda menentukan jumlah instance tanpa menggunakan --instance-groups parameter, satu node primer diluncurkan, dan instance yang tersisa diluncurkan sebagai node inti. Semua simpul akan menggunakan tipe instans yang ditentukan dalam perintah.

    catatan

    Jika sebelumnya Anda belum membuat peran layanan EMR Amazon default dan profil instans EC2, masukkan aws emr create-default-roles untuk membuatnya sebelum mengetik subperintah. create-cluster

Untuk mengenkripsi berkas log yang disimpan di Amazon S3 dengan AWS kunci yang dikelola pelanggan KMS

Dengan Amazon EMR versi 5.30.0 dan yang lebih baru (kecuali Amazon EMR 6.0.0), Anda dapat mengenkripsi file log yang disimpan di Amazon S3 dengan kunci yang dikelola pelanggan KMS. AWS Untuk mengaktifkan opsi ini di konsol, ikuti langkah-langkah di Arsipkan berkas log ke Amazon S3. Profil instans Amazon EC2 dan peran Amazon EMR Anda harus memenuhi prasyarat berikut:

  • Profil instans Amazon EC2 yang digunakan untuk klaster Anda harus memiliki izin untuk menggunakan kms:GenerateDataKey.

  • Peran Amazon EMR yang digunakan untuk klaster Anda harus memiliki izin untuk menggunakan kms:DescribeKey.

  • Profil instans Amazon EC2 dan peran EMR Amazon harus ditambahkan ke daftar pengguna kunci untuk kunci terkelola pelanggan AWS KMS yang ditentukan, seperti yang ditunjukkan oleh langkah-langkah berikut:

    1. Buka konsol AWS Key Management Service (AWS KMS) di https://console.aws.amazon.com/kms.

    2. Untuk mengubah AWS Region, gunakan pemilih Region di sudut kanan atas halaman.

    3. Pilih alias tombol KMS untuk memodifikasi.

    4. Pada halaman detail kunci di bawah Pengguna Kunci, pilih Tambahkan.

    5. Di kotak dialog Tambahkan pengguna kunci, pilih profil instans Amazon EC2 dan peran Amazon EMR.

    6. Pilih Tambahkan.

Untuk informasi selengkapnya, lihat peran layanan IAM yang digunakan oleh Amazon EMR, dan Menggunakan kebijakan utama dalam panduan AWS pengembang Layanan Manajemen Kunci.

Untuk menggabungkan log di Amazon S3 menggunakan AWS CLI

catatan

Saat ini Anda tidak dapat menggunakan agregasi log dengan utilitas yarn logs. Anda hanya dapat menggunakan agregasi yang didukung oleh prosedur ini.

Agregasi log (Hadoop 2.x) mengkompilasi log dari semua kontainer untuk aplikasi individual ke dalam satu file. Untuk mengaktifkan agregasi log ke Amazon S3 menggunakan AWS CLI, Anda menggunakan tindakan bootstrap saat peluncuran klaster untuk mengaktifkan agregasi log dan menentukan bucket untuk menyimpan log.

  • Untuk mengaktifkan agregasi log, buat file konfigurasi berikut myConfig.json yang disebut yang berisi berikut ini:

    [ { "Classification": "yarn-site", "Properties": { "yarn.log-aggregation-enable": "true", "yarn.log-aggregation.retain-seconds": "-1", "yarn.nodemanager.remote-app-log-dir": "s3:\/\/DOC-EXAMPLE-BUCKET\/logs" } } ]

    Ketik perintah berikut dan ganti myKeydengan nama key pair EC2 Anda. Anda juga dapat mengganti salah satu teks merah dengan konfigurasi Anda sendiri.

    aws emr create-cluster --name "Test cluster" \ --release-label emr-7.1.0 \ --applications Name=Hadoop \ --use-default-roles \ --ec2-attributes KeyName=myKey \ --instance-type m5.xlarge \ --instance-count 3 \ --configurations file://./myConfig.json

    Saat Anda menentukan jumlah instance tanpa menggunakan --instance-groups parameter, satu node primer diluncurkan, dan instance yang tersisa diluncurkan sebagai node inti. Semua simpul akan menggunakan tipe instans yang ditentukan dalam perintah.

    catatan

    Jika sebelumnya Anda belum membuat peran layanan EMR default dan profil instans EC2, jalankan aws emr create-default-roles untuk membuatnya sebelum menjalankan subperintah. create-cluster

Untuk informasi selengkapnya tentang penggunaan perintah EMR Amazon di AWS CLI, lihat Referensi AWS CLI Perintah.

Log lokasi

Daftar berikut mencakup semua jenis log dan lokasinya di Amazon S3. Anda dapat menggunakan ini untuk memecahkan masalah Amazon EMR.

Log langkah

s3://DOC-EXAMPLE-LOG-BUCKET/<cluster-id>/steps/<step-id>/

Log aplikasi

s3://DOC-EXAMPLE-LOG-BUCKET/<cluster-id>/containers/

Lokasi ini termasuk kontainer stderr dan stdoutdirectory.info,prelaunch.out,, dan launch_container.sh log.

Log manajer sumber daya

s3://DOC-EXAMPLE-LOG-BUCKET/<cluster-id>/node/<leader-instance-id>/applications/hadoop-yarn/

Hadoop HDFS

s3://DOC-EXAMPLE-LOG-BUCKET/<cluster-id>/node/<all-instance-id>/applications/hadoop-hdfs/

Lokasi ini termasuk NameNode, DataNode, dan TimelineServer log YARN.

Log manajer simpul

s3://DOC-EXAMPLE-LOG-BUCKET/<cluster-id>/node/<all-instance-id>/applications/hadoop-yarn/

Log instance-state

s3://DOC-EXAMPLE-LOG-BUCKET/<cluster-id>/node/<all-instance-id>/daemons/instance-state/

Log penyediaan EMR Amazon

s3://DOC-EXAMPLE-LOG-BUCKET/<cluster-id>/node/<leader-instance-id>/provision-node/*

Log sarang

s3://DOC-EXAMPLE-LOG-BUCKET/<cluster-id>/node/<leader-instance-id>/applications/hive/*

  • Untuk menemukan log Hive di cluster Anda, hapus tanda bintang (*) dan tambahkan /var/log/hive/ ke tautan di atas.

  • Untuk menemukan HiveServer 2 log, hapus tanda bintang (*) dan tambahkan var/log/hive/hiveserver2.log ke tautan di atas.

  • Untuk menemukan log HiveCli, hapus tanda bintang (*) dan tambahkan /var/log/hive/user/hadoop/hive.log ke tautan di atas.

  • Untuk menemukan log Hive Metastore Server, hapus tanda bintang (*) dan tambahkan ke tautan di atas. /var/log/hive/user/hive/hive.log

Jika kegagalan Anda berada di simpul utama atau tugas aplikasi Tez Anda, berikan log dari wadah Hadoop yang sesuai.

Aktifkan alat debugging

Alat debugging memungkinkan Anda untuk lebih mudah menelusuri file log dari konsol EMR Amazon. Untuk informasi selengkapnya, lihat Melihat berkas log dalam alat debugging. Saat Anda mengaktifkan debugging pada klaster, Amazon EMR mengarsipkan berkas log ke Amazon S3 lalu mengindeks file tersebut. Anda kemudian dapat menggunakan konsol ini untuk menelusuri langkah, pekerjaan, tugas, dan log upaya tugas untuk klaster dengan cara yang intuitif.

Untuk menggunakan alat debugging di konsol EMR Amazon, Anda harus mengaktifkan debugging saat meluncurkan cluster menggunakan konsol, CLI, atau API. Perhatikan bahwa konsol EMR Amazon baru tidak menawarkan alat debugging.

Old console
Untuk mengaktifkan alat debugging dengan konsol lama
  1. Arahkan ke konsol EMR Amazon baru dan pilih Beralih ke konsol lama dari navigasi samping. Untuk informasi selengkapnya tentang apa yang diharapkan saat beralih ke konsol lama, lihat Menggunakan konsol lama.

  2. Pilih Buat klaster.

  3. Pilih Pergi ke opsi lanjutan.

  4. Di bagian Konfigurasi klaster, di bidang Pencatatan log, pilih Diaktifkan. Anda tidak dapat mengaktifkan debugging tanpa mengaktifkan pencatatan log.

  5. Di bidang Lokasi S3 folder log, ketik jalur Amazon S3 untuk menyimpan log Anda.

  6. Di bidang Debugging, pilih Diaktifkan. Opsi debug membuat pertukaran Amazon SQS guna mempublikasikan pesan debug ke backend layanan Amazon EMR. Biaya untuk memublikasikan pesan ke pertukaran mungkin berlaku. Untuk informasi selengkapnya, lihat halaman produk Amazon SQS.

  7. Lanjutkan dengan membuat klaster seperti yang dijelaskan dalam Merencanakan dan mengonfigurasi klaster.

AWS CLI
Untuk mengaktifkan alat debugging dengan AWS CLI

Untuk mengaktifkan debugging menggunakan AWS CLI, ketik create-cluster subperintah dengan parameter. --enable-debugging Anda juga harus menentukan parameter --log-uri saat mengaktifkan debugging.

  • Untuk mengaktifkan debugging menggunakan AWS CLI, ketik perintah berikut dan ganti myKey dengan nama key pair EC2 Anda.

    aws emr create-cluster --name "Test cluster" \ --release-label emr-7.1.0 \ --log-uri s3://DOC-EXAMPLE-BUCKET/logs \ --enable-debugging \ --applications Name=Hadoop Name=Hive Name=Pig \ --use-default-roles \ --ec2-attributes KeyName=myKey \ --instance-type m5.xlarge \ --instance-count 3

    Saat Anda menentukan jumlah instance tanpa menggunakan --instance-groups parameter, satu node primer diluncurkan, dan instance yang tersisa diluncurkan sebagai node inti. Semua simpul akan menggunakan tipe instans yang ditentukan dalam perintah.

    catatan

    Jika Anda belum sebelumnya membuat peran layanan EMR default dan profil instans EC2, ketik aws emr create-default-roles untuk membuatnya sebelum mengetik create-cluster subperintah.

API
Untuk mengaktifkan alat debugging dengan Amazon EMR API
  • Aktifkan debugging menggunakan konfigurasi Java SDK berikut.

    StepFactory stepFactory = new StepFactory(); StepConfig enabledebugging = new StepConfig() .withName("Enable debugging") .withActionOnFailure("TERMINATE_JOB_FLOW") .withHadoopJarStep(stepFactory.newEnableDebuggingStep());

    Dalam contoh ini, new StepFactory() menggunakan us-east-1 sebagai wilayah default. Jika klaster Anda diluncurkan di wilayah yang berbeda, Anda harus menentukan wilayah dengan menggunakan new StepFactory("region.elasticmapreduce"), seperti new StepFactory("ap-northeast-2.elasticmapreduce").

Informasi opsi debugging

Amazon EMR merilis 4.1.0 hingga 5.27.0 mendukung debugging di semua Wilayah. Versi EMR Amazon lainnya tidak mendukung opsi debugging. Efektif 23 Januari 2023, Amazon EMR akan menghentikan alat debugging untuk semua versi.

Amazon EMR membuat antrean Amazon SQS untuk memproses data debugging. Biaya pesan mungkin berlaku. Namun, Amazon SQS memiliki Tingkat Gratis hingga 1.000.000 permintaan yang tersedia. Untuk informasi selengkapnya, lihat https://aws.amazon.com/sqs.

Debugging memerlukan penggunaan peran; peran layanan dan profil instans Anda harus memungkinkan Anda menggunakan semua operasi API Amazon SQS. Jika peran Anda dilampirkan ke kebijakan terkelola Amazon EMR, Anda tidak perlu melakukan apa pun untuk mengubah peran Anda. Jika Anda memiliki peran kustom, Anda harus menambahkan izin sqs:*. Untuk informasi selengkapnya, lihat Konfigurasi peran layanan IAM untuk izin Amazon EMR untuk layanan AWS dan sumber daya.