Apache Kafka Logs: Panduan Komprehensif untuk Mencatat Struktur & Manajemen Data?

Diterbitkan: 2021-12-24

Data tidak sama seperti dulu satu dekade lalu. Memproses data menjadi informasi yang dapat digunakan jauh lebih sulit daripada yang bisa dibayangkan. Apache Kafka, dibuat oleh Linkedin tetapi sekarang diubah menjadi pengembangan sumber terbuka, adalah alat gratis yang sangat baik untuk mengelola data dan memanfaatkannya dengan baik. Di dunia digital saat ini, data sangat penting, datalah yang mendorong persepsi kita tentang kenyataan.

Apache Kafka justru dibuat untuk mengatasi masalah pelik ini. Ini adalah perangkat lunak streaming data real-time (kurang dari 10 ms) yang memungkinkan pengguna untuk menyimpan, menganalisis, dan membaca data yang diterima dari satu sumber (produsen) atau beberapa. Ini pada dasarnya membantu dalam mendistribusikan data ke saluran yang berarti pada kerangka waktu secepat mungkin. Misalnya- Dalam pertandingan kriket ada sumber (produser) yang memeriksa skor real-time dan meneruskan informasi ini ke saluran. Saluran seperti broker yang kemudian akan memberikan informasi kepada konsumen akhir dengan cara yang paling efisien. Apache Kafka adalah media tempat semua hal ini terjadi.

  • Apache Kafka dapat dengan mudah diskalakan tanpa downtime tingkat sistem yang signifikan.
  • Apache Kafka adalah sistem yang toleran terhadap kesalahan karena menggunakan banyak broker untuk mengirimkan data, artinya jika satu broker offline, selalu ada broker yang direplikasi yang menyimpan data yang sama.
  • Alat keamanan seperti Kerberos dapat digunakan saat membangun aplikasi berdasarkan Kafka.

Untuk kenyamanan Anda, Anda bisa langsung mendapatkan belajar Apache kafka di sini

Apa Itu Log Apache Kafka?

  • Apache Kafka Logs adalah kumpulan berbagai segmen data yang ada di disk Anda. Semua berbagai segmen data memiliki nama yang merupakan partisi bentuk-topik atau topik-spesifik.
  • Apache Kafka juga memungkinkan kita untuk mereplikasi node data dengan melakukan log eksternal untuk sistem terdistribusi. Mekanisme ini memungkinkan kita untuk memulihkan data selain hanya membacanya, kapan pun kita membutuhkannya.

Foto oleh Markus Spiske dari Pexels

Hal yang Perlu Diingat saat bekerja dengan Apache Kafka Logs?

  • Ingatlah untuk menghindari masuk data yang berlebihan atau data yang hanya akan digunakan untuk tujuan operasional.
  • Biasanya Anda dapat memilih untuk membuat entri berbasis log di awal dan akhir modul startup atau shutdown, tetapi Anda juga dapat membuat log khusus. Log Khusus dapat digunakan di awal dan di akhir fase tertentu untuk melakukan pembaruan.

Bagaimana cara mengaktifkan Log di Apache Kafka?

Berikut adalah konfigurasi log yang perlu Anda masukkan ke dalam skrip Anda untuk memulai log di Apache kafka-

# Aktifkan logging berbasis file dan kafka

log4j.rootLogger=INFO, file, kafka log4j.appender.kafka=com.cloudera.kafka.log4jappender.KafkaLog4jAppender

log4j.appender.kafka.topic=flink.logs

log4j.appender.kafka.brokerList=<broker_host>:9092

# Log layout configuration

log4j.appender.kafka.layout=net.logstash.log4j.JSONEventLayoutV1

log4j.appender.kafka.layout.UserFields=yarnContainerId:${yarnContainerId}

Setelah Anda melakukan ini, Anda seharusnya dapat menemukan log dalam format notasi objek javascript atau json.

Berbagai Operasi & Perintah Terkait dengan Apache Kafka Logs

Di Apache Kafka, Anda dapat menjalankan perintah sebanyak yang Anda inginkan untuk mengimplementasikan berbagai operasi. Pencatatan akan dilakukan di latar belakang.

  1. Segmen Logging – Gunakan kode ini

segments: ConcurrentNavigableMap[java.lang.Long, LogSegment]

  1. Buat instance log baru

apply(

dir:

File,config: LogConfig,

logStartOffset: Long,

recoveryPoint: Long,

scheduler: Scheduler,

brokerTopicStats: BrokerTopicStats,

time: Time = Time.SYSTEM,

maxProducerIdExpirationMs: Int,

producerIdExpirationCheckIntervalMs: Int,

logDirFailureChannel: LogDirFailureChannel): Log

  1. Membaca Catatan

addAbortedTransactions (

startOffset: Long,

segmentEntry: JEntry[JLong, LogSegment],

fetchInfo: FetchDataInfo): FetchDataInfo

read(

startOffset: Long,

maxLength: Int,

maxOffset: Option[Long],

minOneMessage: Boolean,

includeAbortedTxns: Boolean): FetchDataInfo

  1. Menambahkan Catatan

maybeRoll(

messagesSize: Int,

appendInfo: LogAppendInfo): LogSegment

append(

records: MemoryRecords,

isFromClient: Boolean,

interBrokerProtocolVersion: ApiVersion,

assignOffsets: Boolean,

leaderEpoch: Int): LogAppendInfo

  1. Bersihkan segmen dan buat peta offset

collectAbortedTransactions(

startOffset: Long,

upperBoundOffset: Long): List[AbortedTxn]

collectAbortedTransactions(

startOffset: Long,

upperBoundOffset: Long,

startingSegmentEntry: JEntry[JLong, LogSegment],

accumulator: List[AbortedTxn] => Unit): Unit

  1. Menghapus Segmen

roll(

expectedNextOffset: Option[Long] = None): LogSegment

asyncDeleteSegment(segment: LogSegment): Unit

deleteSeg(): Unit

  1. Buat file log baru

logFile(

dir: File,

offset: Long,

suffix: String = ""): File

  1. Buka segmen log baru-

offsetIndexFile(

dir: File,

offset: Long,

suffix: String = ""): File

timeIndexFile(

dir: File,

offset: Long,

suffix: String = ""): File

transactionIndexFile(

dir: File,

offset: Long,

akhiran: String = “”): File

  1. Tutup log

close(): Unit

  1. Pulihkan dan bangun kembali segmen

recoverSegment(

segment: LogSegment,

leaderEpochCache: Option[LeaderEpochFileCache] = None): Int

rebuildProducerState(

lastOffset: Long,

reloadFromCleanShutdown: Boolean,

producerStateManager: ProducerStateManager): Unit

  1. Menambahkan atau mengonversi segmen:

addSegment(

segment: LogSegment): LogSegment

convertToOffsetMetadata(

offset: Long): Option[LogOffsetMetadata]

  1. Muat partisi

parseTopicPartitionName(dir: File): TopicPartition

  1. Ubah file konfigurasi

updateConfig(

updatedKeys: Set[String],

newConfig: LogConfig): Unit

  1. Memotong operasi:

truncateTo(targetOffset: Long): Boolean

truncateFullyAndStartAt(newOffset: Long): Unit