Big Data Messaging dengan Apache Kafka

  1. Latar Belakang Apache Kafka

Pada awal mula era Big Data, pemrosesan data dilakukan dengan menggunakan batch processing. Penyimpanan data terdistribusi dan querying tools seperti MapReduce, Hive, dan Pig semuanya dirancang untuk memproses data dalam batch daripada kontinu dan real-time. Seiring waktu, kebutuhan akan pemrosesan data secara real-time semakin meningkat, namun sistem publish/subscribe messaging pada saat itu belum mampu untuk melakukan pemrosesan data tersebut secara efisien. Menghadapi masalah dalam melakukan pemetaan dan tracking terhadap aktivitas user secara real-time dengan jumlah data rata-rata 1 milyar per hari, tim dari perusahaan LinkedIn mengembangkan suatu sistem publish/subscribe messaging yang kemudian menjadi Apache Kafka.

  1. Pengertian Apache Kafka

Apache Kafka merupakan platform terdistribusi untuk data streaming. Pada dasarnya, Apache Kafka merupakan sistem publish/subscribe messaging, dimana terdapat satu atau lebih sistem yang men-generate data untuk suatu topik tertentu secara real-time di Apache Kafka (disebut sebagai Producers). Kemudian, topik tersebut dapat dibaca oleh satu atau lebih sistem yang membutuhkan data-data dari topik tersebut secara real-time (disebut sebagai Consumers).  Contoh representasi pengunaan Apache Kafka untuk Big Data Messaging diberikan pada Gambar 1.

Berikut ini adalah beberapa terminologi penting pada Apache Kafka:

  • Producer merupakan proses atau sistem yang dapat mempublikasikan data ke suatu topik.
  • Consumer merupakan proses atau sistem yang dapat melakukan subscription ke satu atau lebih topik dan mengolah data-data dari topik tersebut.
  • Topic merupakan nama dari sebuah feed dimana pesan/data di-
  • Broker merupakan instance Apache Kafka yang berjalan di satu mesin.
  • Cluster merupakan kelompok dari broker-broker yang saling bekerjasama.
  • Partition merupakan pengelompokkan data topic yang dipecah menjadi bagian-bagian kecil. Misalnya, suatu topik menyimpan informasi user login, maka data-data pada topik dapat dibagi bedasarkan huruf awal dari username.
  • Offset merupakan array index yang digunakan oleh Apache Kafka sebagai unique identifier untuk setiap data pada satu partisi.

Gambar 1: Contoh representasi pengunaan Apache Kafka untuk Big Data Messaging

Kelebihan utama dari Apache Kafka adalah:

  • Distributed

Apache Kafka dapat menyimpan, menerima dan mengirim data atau pesan dari berbagai node.

  • Horizontally-scalable

Apache Kafka dapat bekerja dengan baik dalam suatu kelompok atau cluster, sehingga dengan bertambahnya volume dan kecepatan aliran data yang harus diproses, maka kita hanya perlu menambah mesin baru saja pada cluster tanpa harus melakukan vertical-scaling.

  • Fault-tolerant

Salah satu kelemahan dari sistem sentralisasi (tidak terdistribusi) adalah Single Point of Failure (SPoF). Sedangkan sistem terdistribusi dirancang untuk mengakomodasi jika terjadi masalah pada satu atau lebih node, maka node yang lain dapat menggantikan posisi node yang bermasalah tersebut, sehingga keseluruhan sistem tidak terganggu. Pada Apache Kafka, terdapat satu partition leader yang berperan sebagai node utama, dimana partition leader mereplikasi data yang diterimanya ke node-node lainnya, yang disebut sebagai followers.  Partition-Leader dan Followers pada Apache Kafka diberikan pada Gambar 2.

Gambar 2: Partition-Leader dan Followers pada Apache Kafka

 

Cara Instalasi dan Menjalankan Apache Kafka

  1. Download dan install Scala https://www.scala-lang.org/
  2. Download Apache Kafka dari https://kafka.apache.org/. Saat artikel ini ditulis, terdapat dua versi, yaitu: 11-1.1.0.tgz dan kafka_2.12-1.1.0.tgz, dimana 2.11 dan 2.12 merupakan versi Scala yang digunakan oleh Apache Kafka. Oleh karena itu, download sesuai dengan versi Scala yang ter-install sebelumnya. Kemudian ekstrak ke direktori yang diinginkan
  3. Jalankan zookeeper server dengan menggunakan command: bin/zookeeper-server-start.sh config/zookeeper.properties
  4. Jalankan kafka server dengan menggunakan command: bin/kafka-server-start.sh config/server.properties
  5. Buatlah sebuah contoh topic: bin/kafka-topics.sh –create –zookeeper localhost:2181 –replication-factor 1 –partitions 1 –topic javaworld
  6. Jalankan consumer untuk subscribe ke topic yang telah dibuat: bin/kafka-console-consumer.sh –zookeeper localhost:2181 –topic javaworld –from-beginning
  7. Jalankan producer untuk publish pesan atau data ke topic yang telah dibuat: bin/kafka-console-producer.sh –broker-list localhost:9092 –topic javaworld
  8. Kemudian masukkan text pada producer console, maka text tersebut akan muncul juga pada consumer console

REFERENSI

Narkhede, N., Shapira, G., & Palino, T. (2017). Kafka – The Definitive Guide. O’Reilly.

Kozlovski, Stanislav. (2017, December 15). Thorough Introduction to Apache Kafka™. Retrieved from https://hackernoon.com/thorough-introduction-to-apache-kafka-6fbf2989bbc1

Patil, Sunil. (2016, April 25). Big data messaging with Kafka, Part 1. Retrieved from https://www.javaworld.com/article/3060078/big-data/big-data-messaging-with-kafka-part-1.html

 

Disajikan: Andrew

Antoni Wibowo