View a markdown version of this page

Mengkonfigurasi ulang armada instans untuk cluster Amazon EMR Anda - Amazon EMR

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

Mengkonfigurasi ulang armada instans untuk cluster Amazon EMR Anda

Dengan Amazon EMR versi 5.21.0 dan yang lebih baru, Anda dapat mengkonfigurasi ulang aplikasi cluster dan menentukan klasifikasi konfigurasi tambahan untuk setiap armada instans dalam cluster yang sedang berjalan. Untuk melakukannya, Anda dapat menggunakan AWS Command Line Interface (AWS CLI), atau AWS SDK.

Anda dapat melacak status armada instans, dengan melihat CloudWatch peristiwa. Untuk informasi selengkapnya, lihat peristiwa konfigurasi ulang armada instans.

catatan

Anda hanya dapat mengganti objek Konfigurasi cluster yang ditentukan selama pembuatan cluster. Untuk informasi selengkapnya tentang objek Konfigurasi, lihat sintaks RunJobFlow permintaan. Jika ada perbedaan antara konfigurasi yang ada dan file yang Anda berikan, Amazon EMR akan mengatur ulang konfigurasi yang dimodifikasi secara manual, seperti konfigurasi yang telah Anda modifikasi saat terhubung ke cluster menggunakan SSH, ke default cluster untuk armada instans yang ditentukan.

Saat Anda mengirimkan permintaan konfigurasi ulang menggunakan konsol Amazon EMR, antarmuka Baris Per AWS intah (AWS CLI), atau AWS SDK, Amazon EMR memeriksa file konfigurasi on-cluster yang ada. Jika ada perbedaan antara konfigurasi yang ada dan file yang Anda berikan, Amazon EMR memulai tindakan konfigurasi ulang, memulai ulang beberapa aplikasi, dan mengatur ulang konfigurasi yang dimodifikasi secara manual, seperti konfigurasi yang telah Anda modifikasi saat terhubung ke cluster menggunakan SSH, ke default cluster untuk armada instans yang ditentukan.

Perilaku konfigurasi ulang

Konfigurasi ulang mengganti konfigurasi on-cluster dengan set konfigurasi yang baru dikirimkan, dan dapat mengganti perubahan konfigurasi yang dibuat di luar API konfigurasi ulang.

Amazon EMR mengikuti proses bergulir untuk mengonfigurasi ulang instance di armada instans Tugas dan Inti. Hanya persentase instance untuk satu jenis instans yang dimodifikasi dan dimulai ulang pada satu waktu. Jika armada instans Anda memiliki beberapa konfigurasi jenis instans yang berbeda, mereka akan mengkonfigurasi ulang secara paralel.

Konfigurasi ulang dideklarasikan di InstanceTypeConfig level. Untuk contoh visual, lihatMengkonfigurasi ulang armada instans. Anda dapat mengirimkan permintaan konfigurasi ulang yang berisi setelan konfigurasi yang diperbarui untuk satu atau beberapa jenis instans dalam satu permintaan. Anda harus menyertakan semua jenis instans yang merupakan bagian dari armada instans Anda dalam permintaan modifikasi; namun, jenis instans dengan bidang konfigurasi yang diisi akan mengalami konfigurasi ulang, sementara InstanceTypeConfig instans lain dalam armada tetap tidak berubah. Konfigurasi ulang dianggap berhasil hanya ketika semua instance dari jenis instance yang ditentukan menyelesaikan konfigurasi ulang. Jika ada instance yang gagal mengkonfigurasi ulang, seluruh Armada Instans secara otomatis kembali ke konfigurasi stabil terakhir yang diketahui.

Batasan

Saat Anda mengonfigurasi ulang armada instans di cluster yang sedang berjalan, pertimbangkan batasan berikut:

  • Non-YARN aplikasi dapat gagal selama restart atau menyebabkan masalah cluster, terutama jika aplikasi tidak dikonfigurasi dengan benar. Klaster yang mendekati penggunaan memori dan CPU maksimum dapat mengalami masalah setelah proses restart. Ini terutama berlaku untuk armada contoh utama. Konsultasikan Memecahkan masalah konfigurasi ulang armada instans bagian ini.

  • Operasi perubahan ukuran dan konfigurasi ulang tidak terjadi secara paralel. Permintaan konfigurasi ulang akan menunggu perubahan ukuran yang sedang berlangsung dan sebaliknya.

  • Operasi perubahan ukuran dan konfigurasi ulang tidak terjadi secara paralel. Permintaan konfigurasi ulang akan menunggu perubahan ukuran yang sedang berlangsung dan sebaliknya.

  • Setelah mengonfigurasi ulang armada instans, Amazon EMR memulai ulang aplikasi untuk memungkinkan konfigurasi baru berlaku. Gagal tugas atau perilaku aplikasi tak terduga lainnya mungkin terjadi jika aplikasi sedang digunakan saat konfigurasi ulang dilakukan.

  • Jika konfigurasi ulang untuk konfigurasi jenis instans apa pun di bawah armada instans gagal, Amazon EMR membalikkan parameter konfigurasi ke versi kerja sebelumnya untuk seluruh armada instans, bersama dengan memancarkan peristiwa dan memperbarui detail status. Jika proses pengembalian gagal juga, Anda harus mengirimkan ModifyInstanceFleet permintaan baru untuk memulihkan armada instans dari ARRESTED status. Kegagalan pengembalian mengakibatkan peristiwa konfigurasi ulang armada Instance dan perubahan status.

  • Permintaan konfigurasi ulang untuk klasifikasi konfigurasi Phoenix hanya didukung di Amazon EMR versi 5.23.0 dan setelahnya, dan tidak didukung di Amazon EMR versi 5.21.0 atau 5.22.0.

  • Permintaan konfigurasi ulang untuk klasifikasi konfigurasi HBase hanya didukung di Amazon EMR versi 5.30.0 dan setelahnya, dan tidak didukung di Amazon EMR versi 5.23.0 hingga 5.29.0.

  • Mengkonfigurasi ulang klasifikasi hdfs-encryption-zones atau salah satu klasifikasi konfigurasi Hadoop KMS tidak didukung pada cluster Amazon EMR dengan beberapa node utama.

  • Amazon EMR saat ini tidak mendukung permintaan konfigurasi ulang tertentu untuk penjadwal kapasitas YARN yang memerlukan restart YARN. ResourceManager Misalnya, Anda tidak dapat menghapus antrean sepenuhnya.

  • Ketika YARN perlu memulai ulang, semua pekerjaan YARN yang sedang berjalan biasanya dihentikan dan hilang. Hal ini dapat menyebabkan penundaan pemrosesan data. Untuk menjalankan pekerjaan YARN selama restart YARN, Anda dapat membuat cluster Amazon EMR dengan beberapa node utama atau menyetel yarn.resourcemanager.recovery.enabled ke dalam klasifikasi konfigurasi yarn-site Anda. true Untuk informasi selengkapnya tentang menggunakan beberapa node master, lihat YARN dengan ketersediaan tinggi ResourceManager.

Mengkonfigurasi ulang armada instans

Using the AWS CLI

Gunakan modify-instance-fleet perintah untuk menentukan konfigurasi baru untuk armada instans di cluster yang sedang berjalan.

catatan

Dalam contoh berikut, ganti J-2AL4xxxxxx5T9 dengan ID cluster Anda, dan ganti if-1xxxxxxx9 dengan ID armada instans Anda.

Contoh — Mengganti konfigurasi untuk armada instans

Awas

Tentukan semua InstanceTypeConfig bidang yang Anda gunakan saat peluncuran. Tidak menyertakan bidang dapat mengakibatkan penulisan spesifikasi yang Anda nyatakan saat peluncuran. Lihat InstanceTypeConfig untuk daftar.

Contoh berikut mereferensikan file JSON konfigurasi yang disebut instance Fleet.json untuk mengedit properti pemeriksa kesehatan NodeManager disk YARN untuk armada instans.

Modifikasi Armada Instans JSON

  1. Siapkan klasifikasi konfigurasi Anda, dan simpan sebagai contoh Fleet.json di direktori yang sama di mana Anda akan menjalankan perintah.

    { "InstanceFleetId":"if-1xxxxxxx9", "InstanceTypeConfigs": [ { "InstanceType": "m5.xlarge", other InstanceTypeConfig fields "Configurations": [ { "Classification": "yarn-site", "Properties": { "yarn.nodemanager.disk-health-checker.enable":"true", "yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage":"100.0" } } ] }, { "InstanceType": "r5.xlarge", other InstanceTypeConfig fields "Configurations": [ { "Classification": "yarn-site", "Properties": { "yarn.nodemanager.disk-health-checker.enable":"false", "yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage":"70.0" } } ] } ]
  2. Jalankan perintah berikut.

    aws emr modify-instance-fleet \ --cluster-id j-2AL4XXXXXX5T9 \ --region us-west-2 \ --instance-fleet instanceFleet.json

Contoh — Menambahkan konfigurasi ke armada instans

Jika Anda ingin menambahkan konfigurasi ke jenis instans, Anda harus menyertakan semua konfigurasi yang ditentukan sebelumnya untuk jenis instans tersebut dalam ModifyInstanceFleet permintaan baru Anda. Jika tidak, konfigurasi yang ditentukan sebelumnya akan dihapus.

Contoh berikut menambahkan properti untuk pemeriksa memori NodeManager virtual YARN. Konfigurasi juga menyertakan nilai yang ditentukan sebelumnya untuk pemerik NodeManager sa kesehatan disk YARN sehingga nilai-nilai tidak akan diganti.

  1. Siapkan konten berikut sebagai contoh Fleet.json dan simpan di direktori yang sama di mana Anda akan menjalankan perintah.

    { "InstanceFleetId":"if-1xxxxxxx9", "InstanceTypeConfigs": [ { "InstanceType": "m5.xlarge", other InstanceTypeConfig fields "Configurations": [ { "Classification": "yarn-site", "Properties": { "yarn.nodemanager.disk-health-checker.enable":"true", "yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage":"100.0", "yarn.nodemanager.vmem-check-enabled":"true", "yarn.nodemanager.vmem-pmem-ratio":"3.0" } } ] }, { "InstanceType": "r5.xlarge", other InstanceTypeConfig fields "Configurations": [ { "Classification": "yarn-site", "Properties": { "yarn.nodemanager.disk-health-checker.enable":"false", "yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage":"70.0" } } ] } ] }
  2. Jalankan perintah berikut.

    aws emr modify-instance-fleet \ --cluster-id j-2AL4XXXXXX5T9 \ --region us-west-2 \ --instance-fleet instanceFleet.json
using the Java SDK
catatan

Dalam contoh berikut, ganti J-2AL4xxxxxx5T9 dengan ID cluster Anda, dan ganti if-1xxxxxxx9 dengan ID armada instans Anda.

Cuplikan kode berikut menyediakan konfigurasi baru untuk armada instans menggunakan AWS SDK untuk Java.

AWSCredentials credentials = new BasicAWSCredentials("access-key", "secret-key"); AmazonElasticMapReduce emr = new AmazonElasticMapReduceClient(credentials); Map<String,String> hiveProperties = new HashMap<String,String>(); hiveProperties.put("hive.join.emit.interval","1000"); hiveProperties.put("hive.merge.mapfiles","true"); Configuration newConfiguration = new Configuration() .withClassification("hive-site") .withProperties(hiveProperties); List<InstanceTypeConfig> instanceTypeConfigList = new ArrayList<>(); for (InstanceTypeConfig instanceTypeConfig : currentInstanceTypeConfigList) { instanceTypeConfigList.add(new InstanceTypeConfig() .withInstanceType(instanceTypeConfig.getInstanceType()) .withBidPrice(instanceTypeConfig.getBidPrice()) .withWeightedCapacity(instanceTypeConfig.getWeightedCapacity()) .withConfigurations(newConfiguration) ); } InstanceFleetModifyConfig instanceFleetModifyConfig = new InstanceFleetModifyConfig() .withInstanceFleetId("if-1xxxxxxx9") .withInstanceTypeConfigs(instanceTypeConfigList); ModifyInstanceFleetRequest modifyInstanceFleetRequest = new ModifyInstanceFleetRequest() .withInstanceFleet(instanceFleetModifyConfig) .withClusterId("j-2AL4XXXXXX5T9"); emrClient.modifyInstanceFleet(modifyInstanceFleetRequest);

Memecahkan masalah konfigurasi ulang armada instans

Jika proses konfigurasi ulang untuk jenis instans apa pun dalam armada instans gagal, Amazon EMR mengembalikan konfigurasi ulang yang sedang berlangsung dan mencatat pesan kegagalan menggunakan peristiwa AAmazon Events. CloudWatch Peristiwa ini menyediakan ringkasan singkat dari kegagalan konfigurasi ulang. Ia mendaftar instans yang konfigurasi ulangnya gagal dan pesan kegagalan yang sesuai. Berikut ini adalah contoh pesan kegagalan.

Amazon EMR couldn't revert the instance fleet if-1xxxxxxx9 in the Amazon EMR cluster j-2AL4XXXXXX5T9 (ExampleClusterName) to the previously successful configuration at 2021-01-01 00:00 UTC. The reconfiguration reversion failed because of Instance i-xxxxxxx1, i-xxxxxxx2, i-xxxxxxx3 failed with message "This is an example failure message"...

Untuk mengakses log penyediaan node

Gunakan SSH untuk terhubung ke simpul di mana konfigurasi ulang gagal dilakukan. Untuk petunjuk, lihat Mengh ubungkan ke instans Linux Anda di Amazon Elastic Compute Cloud.

Accessing logs by connecting to a node
  1. Arahkan ke direktori berikut, yang berisi simpul yang menyediakan berkas log.

    /mnt/var/log/provision-node/
  2. Buka subdirektori laporan dan cari laporan penyediaan node untuk konfigurasi ulang Anda. Direktori laporan mengatur log berdasarkan nomor versi konfigurasi ulang, pengidentifikasi unik universal (UUID), alamat IP instans Amazon EC2, dan stempel waktu. Setiap laporan adalah file YAML terkompresi yang berisi informasi rinci tentang proses konfigurasi ulang. Berikut ini adalah contoh nama dan path file laporan.

    /reports/2/ca598xxx-cxxx-4xxx-bxxx-6dbxxxxxxxxx/ip-10-73-xxx-xxx.ec2.internal/202104061715.yaml.gz
  3. Anda dapat memeriksa laporan menggunakan penampil file seperti zless, seperti pada contoh berikut.

    zless 202104061715.yaml.gz
Accessing logs using Amazon S3

Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di https://console.aws.amazon.com/s3/. Buka bucket Amazon S3 yang Anda tetapkan saat Anda mengkonfigurasi klaster untuk mengarsip berkas log.

  1. Arahkan ke folder berikut, yang berisi simpul yang menyediakan berkas log:

    amzn-s3-demo-bucket/elasticmapreduce/cluster id/node/instance id/provision-node/
  2. Buka folder laporan dan cari laporan penyediaan node untuk konfigurasi ulang Anda. Folder laporan mengatur log berdasarkan nomor versi konfigurasi ulang, pengidentifikasi unik universal (UUID), alamat IP instans Amazon EC2, dan stempel waktu. Setiap laporan adalah file YAML terkompresi yang berisi informasi rinci tentang proses konfigurasi ulang. Berikut ini adalah contoh nama dan path file laporan.

    /reports/2/ca598xxx-cxxx-4xxx-bxxx-6dbxxxxxxxxx/ip-10-73-xxx-xxx.ec2.internal/202104061715.yaml.gz

Untuk melihat berkas log, Anda dapat mengunduhnya dari Amazon S3 ke mesin lokal Anda sebagai file teks. Untuk instruksi, lihat Mengunduh objek.

Setiap file berkas log berisi rincian laporan penyediaan rinci untuk konfigurasi ulang terkait. Untuk menemukan informasi pesan kesalahan, Anda dapat mencari tingkat log err laporan. Format laporan tergantung pada versi Amazon EMR pada klaster Anda. Contoh berikut menunjukkan informasi kesalahan untuk rilis Amazon EMR versi 5.32.0 dan 6.2.0 dan yang lebih baru menggunakan format berikut:

- level: err message: 'Example detailed error message.' source: Puppet tags: - err time: '2021-01-01 00:00:00.000000 +00:00' file: line: