Cài đặt Apache Kafka trên Ubuntu 18.04

Tram Ho

Hôm nay mình sẽ hướng dẫn các bạn cài đặt Apache Kafka, một messaging system đang được công ty công nghệ quan tâm và sử dụng. Các anh lớn trong làng Big Data đang dùng Kafka có thể kể đến như LINE(mạng xã hội phổ biến ở Nhật và Hàn Quốc, từng vào Việt Nam nhưng thất bại ê chề và về nước rồi :v) đã và đang dùng Kafka như một central datahub cho việc kết nối các service của họ, hơn một trăm tỷ record đang được LINE xử lý hàng ngày, và số record đó sẽ còn tăng nữa theo thời gian. Hay Uber (kỳ lân công nghệ tỷ đô, à mà vẫn đại bại ở Việt Nam nhường sân cho anh Gờ ráp rồi  cũng đang dùng Kafka làm core cho cơ sở hạ tầng của họ, phục vụ xử lý các record ở mức near real-time. Ngoài ra còn hàng loạt các công ty khác như Coursera, Hacker Rank, Linkedlin, Netflix, Twitter, Yahoo …. Các bạn có thể xem thêm ở đây. Các công ty trên chọn Kafka vì họ thường là startup kỳ lân, có tốc độ tăng lượng user chóng mặt, dẫn đến bài toán khó khăn trong việc mở rộng hệ thống, và Kafka là cách họ giải quyết bài toán ấy. Tuy nhiên các bạn có thấy mấy công ty xài Kafka mình kể toàn thua sấp mặt ở Việt Nam không (Uber zs LINE), chắc nghiệp rồi.

Nói chút về lý thuyết nhé, như đã giới thiệu, Kafka là messaging system, vậy messaging system là gì ? Hệ thống truyền thông điệp (messaging system) là một công cụ, chịu trách nhiệm cho việc vận chuyển dữ liệu giữa các ứng dụng. Từ đó ứng dụng chỉ cần quan tâm đến dữ liệu, thuật toán, mà không cần quan tâm đến việc chia sẽ dữ liệu với nhau. Tuy nhiên các messaging system truyền thống có khá nhiều nhược điểm như:

  • Nhiều hệ thống không tập trung mạnh vào thiết kế cho thông lượng cao. Ví dụ: JMS không có API để cho phép producer gom message thành từng bó (batch) cho một request.
  • Các hệ thống truyền thống lại quá tập trung vào đảm bảo toàn vẹn gói tin. Ví dụ như JMS chấp nhập gửi acknowledgement cho mỗi một message riêng lẻ.
  • Các hệ thống chưa hỗ trợ (hoặc hỗ trợ yếu) khả năng chạy phân tán (như RabbitMQ, ActiveMQ). Rất khó để phân vùng và lưu trữ tin nhắn trên nhiều máy.

Apache Kafka ra đời để khắc phục các yếu điểm đã nêu. Tuy nhiên để hiểu vì sao Kafka lại có thể dẹp đi các nhược điểm đã nêu, ta phải đi sau vào kiến trúc của Kafka. Mình sẽ nói về kiến trúc Kafka trong những bài viết sau nhé. Bắt tay vào cài Kafka trước rồi tính nè.

Cài đặt Java Development Kit

Vì kafka cần Java Runtime Enviroment (JRE) để chạy, nên chúng ta sẽ cài đặt OpenJDK. Ở bài viết này, mình cài phiên bản 1.8, để cài đặt ta gõ lệnh sau :

Để kiểm tra việc cài đặt OpenJDK thành công hay chưa ta gõ lệnh java -version. Nếu output terminal tương tự như sau thì ta thành công.

Đặt biến môi trường cho JAVA

Đầu tiên ta tìm thư mục chứa OpenJDK ta vừa cài bằng lệnh

Ta được đường dẫn /usr/lib/jvm/java-8-openjdk-amd64/

Để gán biến môi trường, ta chỉ đơn giản thêm dòng sau vào cuối file ~/.bashrc :

Để kiểm tra việc cài biến môi trường thành công hay chưa ? Ta tải lại(reload) file .bashrc bằng lệnh . ~/.bashrc. Bây giờ ta in ra biến môi trường bằng lệnh echo $JAVA_HOME nếu output terminal tương tự như sau thì ta thành công.

Tải về công cụ Apache Kafka

Ở bài viết này mình sẽ tải Apache Kafka 2.2.0 sử dựng Scala 2.1.2

Ta gia nén file vừa tải về, bạn có thể chuyển thư mục vừa giải nén vào vị trí tùy ý. Mình đặt nó và ~/server/

Cài biến môi trường cho Kafka

Tương tự như cài biến môi trường cho JAVA, ta chỉ đơn giản thêm dòng sau vào cuối file ~/.bashrc

Địa chỉ thư mục có thể thay đổi tùy theo máy. Để kiểm tra việc cài biến môi trường thành công hay chưa ? Ta tải lại(reload) file .bashrc bằng lệnh . ~/.bashrc. Bây giờ ta in ra biến môi trường bằng lệnh echo $KAFKA_HOME nếu output terminal tương tự như sau thì ta thành công.

Vậy là cài xong rồi á. Các thao tác khởi chạy các Kafka Broker, các gửi message bằng Kafka thông qua API, hay kết nối Kafka với các công cụ khác (như Spark, Hadoop …) sẽ được mình chia sẽ ở bài viết sau nhé. Cám ơn các bạn đã đọc bài viết của mình. Các bạn có góp ý sửa sai thì comment cho mình biết nhé.

Tài liệu tham khảo

  1. Tutorial Point
  2. Apache Kafka
Chia sẻ bài viết ngay

Nguồn bài viết : Viblo