Apache Kafka Logs: Panduan Komprehensif untuk Mencatat Struktur & Manajemen Data?
Diterbitkan: 2021-12-24Data 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.
- Segmen Logging – Gunakan kode ini
segments: ConcurrentNavigableMap[java.lang.Long, LogSegment]
- 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
- 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
- Menambahkan Catatan
maybeRoll(
messagesSize: Int,
appendInfo: LogAppendInfo): LogSegment
append(
records: MemoryRecords,
isFromClient: Boolean,
interBrokerProtocolVersion: ApiVersion,
assignOffsets: Boolean,
leaderEpoch: Int): LogAppendInfo
- 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
- Menghapus Segmen
roll(
expectedNextOffset: Option[Long] = None): LogSegment
asyncDeleteSegment(segment: LogSegment): Unit
deleteSeg(): Unit
- Buat file log baru
logFile(
dir: File,
offset: Long,
suffix: String = ""): File
- 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
- Tutup log
close(): Unit
- Pulihkan dan bangun kembali segmen
recoverSegment(
segment: LogSegment,
leaderEpochCache: Option[LeaderEpochFileCache] = None): Int
rebuildProducerState(
lastOffset: Long,
reloadFromCleanShutdown: Boolean,
producerStateManager: ProducerStateManager): Unit
- Menambahkan atau mengonversi segmen:
addSegment(
segment: LogSegment): LogSegment
convertToOffsetMetadata(
offset: Long): Option[LogOffsetMetadata]
- Muat partisi
parseTopicPartitionName(dir: File): TopicPartition
- Ubah file konfigurasi
updateConfig(
updatedKeys: Set[String],
newConfig: LogConfig): Unit
- Memotong operasi:
truncateTo(targetOffset: Long): Boolean
truncateFullyAndStartAt(newOffset: Long): Unit