全部产品
Search
文档中心

E-MapReduce:Lakukan operasi O&M ketika ruang disk kluster EMR Kafka penuh

更新时间:Jul 02, 2025

Topik ini menjelaskan cara melakukan operasi O&M ketika ruang disk kluster Kafka penuh. Dalam topik ini, E-MapReduce (EMR) Kafka 2.4.1 digunakan.

Skenario bisnis

Kafka menyimpan data log di disk. Jika ruang disk penuh, direktori log Kafka di disk menjadi offline. Dalam kasus ini, replika partisi di disk tidak dapat dibaca atau ditulis. Hal ini mengurangi ketersediaan dan toleransi kesalahan partisi. Beban broker lain meningkat karena replika partisi pemimpin dipindahkan ke broker lain. Oleh karena itu, Anda harus menyelesaikan masalah tersebut secepat mungkin ketika ruang disk penuh.

Ikhtisar

Topik ini menjelaskan kebijakan O&M yang dapat digunakan ketika ruang disk kluster Kafka penuh dari dua perspektif berikut: pemantauan dan pemulihan disk penuh.

Pantau disk penuh

Layanan Kafka: Anda dapat mengonfigurasi aturan peringatan untuk metrik OfflineLogDirectoryCount kluster EMR Kafka di Konsol CloudMonitor untuk mendeteksi direktori log offline secara real-time.

Pulihkan disk penuh

Jika direktori log Kafka di disk menjadi offline, Anda harus terlebih dahulu memeriksa apakah ruang disk penuh.

Jika ruang disk penuh, Anda dapat mempertimbangkan kebijakan O&M berikut:
  • Ubah ukuran disk: menambah ruang disk dengan mengubah ukuran disk. Kebijakan ini berlaku untuk skenario di mana disk terpasang pada broker. Untuk informasi lebih lanjut, lihat bagian Ubah Ukuran Disk dari topik ini.
  • Migrasikan partisi dalam broker: memindahkan partisi dari disk penuh broker ke disk lain dari broker tersebut. Kebijakan ini berlaku untuk skenario di mana penggunaan disk tidak seimbang pada broker. Untuk informasi lebih lanjut, lihat bagian Migrasikan Partisi dalam Broker dari topik ini.
  • Hapus log: menghapus data log yang ditulis ke disk yang ruangnya penuh. Kebijakan ini berlaku untuk skenario di mana data log lama dapat dihapus. Untuk informasi lebih lanjut, lihat bagian Hapus Log dari topik ini.

Ubah ukuran disk

Deskripsi

Jika ruang disk penuh pada broker, tambahkan ruang disk untuk memenuhi persyaratan terkait menggunakan kebijakan ini. Keuntungan dari kebijakan ini adalah operasi sederhana, risiko rendah, dan kemampuan untuk dengan cepat menyelesaikan masalah ruang disk yang tidak mencukupi.

Skema

Kebijakan ini berlaku untuk skenario di mana disk terpasang pada broker.

Prosedur

Di konsol EMR, ubah ukuran disk untuk broker. Untuk informasi lebih lanjut, lihat Perluas Disk.

Migrasikan partisi dalam broker

Deskripsi

Jika ruang disk penuh pada broker, direktori log Kafka di disk menjadi offline. Akibatnya, Anda tidak dapat menggunakan alat kafka-reassign-partitions.sh untuk memindahkan partisi. Dalam hal ini, Anda dapat melakukan operasi pada instance Elastic Compute Service (ECS) tempat broker diterapkan untuk memindahkan data replika partisi ke disk lain dari broker dan memodifikasi metadata di direktori data Kafka yang sesuai. Ini membantu menyelesaikan masalah ruang disk yang tidak mencukupi.

Skema

Kebijakan ini berlaku untuk skenario di mana penggunaan disk tidak seimbang pada broker karena adanya disk penuh dan disk dengan penggunaan relatif rendah.

Catatan penggunaan

  • Kebijakan ini memungkinkan Anda memindahkan partisi antar disk hanya dalam broker.
  • Migrasi partisi dapat menyebabkan masalah I/O hotspotting pada disk. Hal ini dapat memengaruhi kinerja kluster. Anda perlu mengevaluasi dampak ukuran dan durasi setiap migrasi terhadap bisnis Anda.
  • Kebijakan ini mencakup operasi non-standar. Kami sarankan Anda menguji kebijakan ini pada versi kluster Kafka yang sesuai sebelum melakukan operasi pada kluster produksi.

Prosedur

Jika ruang disk penuh, direktori log Kafka di disk offline. Dalam hal ini, Anda tidak dapat menggunakan alat kafka-reassign-partitions.sh untuk memindahkan partisi. Bagian ini menjelaskan cara melakukan operasi non-standar untuk memindahkan partisi dengan langsung memindahkan file dan memodifikasi metadata terkait Kafka.

  1. Buat topik uji.
    1. Masuk ke node master kluster Kafka dalam mode SSH. Untuk informasi lebih lanjut, lihat Masuk ke Kluster.
    2. Jalankan perintah berikut untuk membuat topik uji bernama test-topic. Replika partisi didistribusikan pada Broker 0 dan Broker 1.
      kafka-topics.sh --bootstrap-server core-1-1:9092 --topic test-topic --replica-assignment 0:1 --create
      Jalankan perintah berikut untuk menanyakan detail topik:
      kafka-topics.sh --bootstrap-server core-1-1:9092 --topic test-topic --describe
      Output berikut dikembalikan. Dalam hal ini, Broker 0 ada dalam daftar in-sync replicas (ISR).
      Topic: test-topic       PartitionCount: 1       ReplicationFactor: 2    Configs:
              Topic: test-topic       Partition: 0    Leader: 0       Replicas: 0,1   Isr: 0,1
  2. Jalankan perintah berikut untuk mensimulasikan penulisan data:
    kafka-producer-perf-test.sh --topic test-topic --record-size 1000 --num-records 600000000 --print-metrics --throughput 10240 --producer-props linger.ms=0 bootstrap.servers=core-1-1:9092
  3. Modifikasi izin pada direktori log partisi di Broker 0.
    1. Jalankan perintah berikut untuk beralih ke akun emr-user di node master:
      su emr-user
    2. Jalankan perintah berikut untuk masuk ke node inti yang ingin Anda kelola dalam mode bebas kata sandi:
      ssh core-1-1
    3. Jalankan perintah sudo berikut untuk mendapatkan izin root:
      sudo su - root
    4. Jalankan perintah berikut untuk menemukan disk tempat partisi test-topic-0 berada:
      sudo find / -name test-topic-0
      Jika output berikut dikembalikan, partisi berada di direktori /mnt/disk4/kafka/log.
      /mnt/disk4/kafka/log/test-topic-0
    5. Jalankan perintah berikut untuk mengatur izin pada direktori log partisi di Broker 0 menjadi 000:
      sudo chmod 000 /mnt/disk4/kafka/log
    6. Jalankan perintah berikut untuk menanyakan status test-topic:
      kafka-topics.sh --bootstrap-server core-1-1:9092 --topic test-topic --describe
      Output berikut dikembalikan. Broker 0 tidak lagi ada dalam daftar ISR.
      Topic: test-topic       PartitionCount: 1       ReplicationFactor: 2    Configs:
              Topic: test-topic       Partition: 0    Leader: 1       Replicas: 0,1   Isr: 1
  4. Hentikan Broker 0.

    Hentikan layanan Kafka di Broker 0 di konsol EMR.

  5. Jalankan perintah berikut untuk memindahkan partisi test-topic di Broker 0 ke disk lain di Broker 0:
    mv /mnt/disk4/kafka/log/test-topic-0 /mnt/disk1/kafka/log/
  6. Modifikasi file.

    Berdasarkan file metadata di direktori sumber /mnt/disk4/kafka/log dan direktori tujuan /mnt/disk1/kafka/log, file yang akan dimodifikasi termasuk replication-offset-checkpoint dan recovery-point-offset-checkpoint.

    • Modifikasi file replication-offset-checkpoint: Pindahkan entri terkait test-topic dari file replication-offset-checkpoint di direktori log sumber ke file replication-offset-checkpoint di direktori log tujuan, dan modifikasi jumlah entri dalam file. Modify the replication-offset-checkpoint file
    • Modifikasi file recovery-point-offset-checkpoint: Pindahkan entri terkait test-topic dari file recovery-point-offset-checkpoint di direktori log sumber ke file recovery-point-offset-checkpoint di direktori log tujuan, dan modifikasi jumlah entri dalam file. Modify the recovery-point-offset-checkpoint file
  7. Jalankan perintah berikut untuk memodifikasi izin pada direktori log partisi di Broker 0:
    sudo chmod 755 /mnt/disk4/kafka/log
  8. Mulai Broker 0.

    Mulai layanan Kafka di Broker 0 di konsol EMR.

  9. Jalankan perintah berikut untuk memeriksa apakah status kluster normal:
    kafka-topics.sh --bootstrap-server core-1-1:9092 --topic test-topic --describe

Hapus log

Deskripsi

Jika ruang disk penuh pada broker, hapus data log bisnis secara kronologis dari data paling awal hingga data terbaru sampai ruang disk yang cukup dilepaskan. Data dalam topik internal kluster Kafka tidak dapat dihapus.

Skema

Kebijakan ini berlaku untuk skenario di mana data log bisnis lama dapat dihapus dari disk penuh.

Jika periode retensi data tidak diubah, disk mungkin segera penuh. Oleh karena itu, kebijakan ini umumnya berlaku untuk skenario di mana terjadi lonjakan data karena keadaan khusus.

Catatan penggunaan

Anda tidak dapat menghapus data dari topik yang namanya dimulai dengan garis bawah (_).

Prosedur

  1. Masuk ke mesin tempat disk sepenuhnya terisi.
  2. Temukan disk penuh dan hapus data log bisnis yang tidak diperlukan.
    Perhatikan item berikut:
    • Jangan hapus direktori data kluster Kafka. Ini mencegah hilangnya data yang tidak perlu.
    • Temukan topik yang menempati ruang besar atau yang tidak lagi Anda butuhkan. Pilih beberapa partisi dari topik untuk menghapus data dari log yang disimpan paling awal. Hapus segmen log historis dan file indeks serta timeindex dari segmen tersebut dari beberapa partisi topik. Jangan hapus data dari topik internal, seperti __consumer_offsets dan _schema.
  3. Mulai ulang broker tempat disk penuh berada untuk membuat direktori log online.