Tìm hiểu và cài đặt Apache Kafka Single Node/Single Broker trên Windows 10

Sharing is caring!

Chào các bạn! Khi tìm hiểu về các công cụ để làm việc với Big Data, tui thấy càng tìm hiểu, càng thú vị các bạn ạ. Đáng lẽ bài tiếp theo này phải là Spark Streaming, nhưng khi tìm hiểu Spark Streaming, tui được dẫn tới cái anh Apache Kafka này và tui thấy cái này cũng cần thiết để làm một system hoàn chỉnh cho nên tui sẽ làm bài tutorial về cái này luôn để sau này chuyển qua Spark Streaming nó sẽ có hệ thống hơn.

Nếu muốn sử dụng Spark Streaming để xử lý data real-time, chúng ta cần có một cái nguồn data Streaming để tạo data liên tục thì mới thấy được cái hay của Spark Streaming.

1. Apache Kafka:

Nguồn gốc xuất xứ của Kafka là do LinkedIn họ phát triển để giải quyết những nhu cầu thực tế của hệ thống của họ và sau này Kafka trở thành một project của Apache

Apache Kafka là một Distributed Message System, ở đây, các nhà phát triển Kafka họ xem các dữ liệu phát sinh từ những events nào đó bắt nguồn từ mọi nơi như trên website, trên mobile app, server log…. là những message và những message này sẽ được gửi về server. Kafka lúc này đóng vai trò như một người thu thập dữ liệu này từ các nguồn khác nhau, tạo thành nhưng stream dữ liệu sau đó cung cấp lại cho các hệ thống khác để xử lý như Hadoop, Spark….

Tổng quan mà nói thì như vậy, chi tiết hơn một chút thì Kafka sẽ có những Broker để điều phối các streaming của dữ liệu, ngoài ra Kafka sử dụng ZooKeeper để:

  • Quản lý, điều phối các Broker với nhau.
  • Quản lý sự trao đổi giữa các Broker với các Consumer.

 

Cũng giống như Spark, Kafka cũng có 2 chế độ cài đặt:

  • Single Node (Standalone) với một hoặc nhiều Broker.
  • Cluster.

Trong phạm vi bài này, tui sẽ cài Kafka ở chế độ Single Node.

2. Cài đặt Kafka:

Đầu tiên là các bạn cài JDK (xem bài đầu tiên cài đặt Spark), sau đó các bạn download Kafka tại http://kafka.apache.org/downloads, hiện tại version mới nhất 0.10.1.1, các bạn chọn bản binary với Scala 2.10 hoặc 2.11 đều được, nhưng do từ đầu tui cài Spark 1.6.3 với Scala 2.10 nên tui chọn bản kafka_2.10-0.10.1.1.tgz

Tiếp theo, các bạn giải nén file này vào thư mục nào cũng được, trên máy tui thì tui giải nén ra thư mục sau: E:\Server\kafka\0.10.1.1, đây là thư mục sẽ set cho KAFKA_HOME

Để tiện cho chuyển thư mục, tui set biến môi trường KAFKA_HOME và set Path cho thư mục bin là %KAFKA_HOME%\bin (các bạn xem bài cài đặt Spark để biết cách set biến môi trường trên Windows nha)

Do chỉ chạy single node, nên ta không cần phải cài đặt ZooKeeper mà dùng sẳn ZooKeeper đi kèm theo Kafka luôn

3. Chạy Kafka ở chế độ Single Node với một Broker:

Để chạy Kafka dạng Single Node với một Broker thì ta không cần config gì cả, dùng default thôi. Các bạn có thể xem các file properties trong thư mục config:

Xem xong rồi thì các bạn chuyển vào thư mục bin của Kafka:

Nếu là chạy trên HĐH Linux thì các bạn có thể chạy các lệnh .sh ở thư mục bin này, nhưng do tui đang cài trên Windows 10, nên các bạn phải chuyển vào thư mục windows trong thư mục bin này để chạy các lệnh .bat.

3.1. Start ZooKeeper và Kafka:

Đầu tiên, các bạn start ZooKeeper lên bằng lệnh zookeeper-server-start.bat với tham số là file config\zookeeper.properties:

Các bạn để ý dòng cuối cùng khi start ZooKeeper, các bạn thấy cái default port của nó là 2181. Tiếp theo là start Kafka, các bạn mở cái Command Prompt khác lên, chuyển vào thư mục %KAFKA_HOME%\bin\windows rồi chạy lệnh kafka-server-start.bat

Các bạn thấy có một broker với id = 0 được tạo, Nếu scroll màn hình lên trên, các bạn sẽ thấy default port của nó là 9092

3.2. Tạo topics:

Do trên thực tế, chúng ta có rất là nhiều nguồn dữ liệu khác nhau, cho nên để quản lý dễ dàng, Kafka phải tạo ra từng topic tương ứng với các nguồn dữ liệu đó. Nói nôm na thì topic chính là cái category dùng để phân loại các nguồn dữ liệu. Trong bài này tui thử tạo một topic tên là welcome-message. Các bạn mở một Command Prompt khác lên, chạy lệnh %KAFKA_HOME%\bin\windows\kafka-topics.bat:

Do tui chạy single node nên cái tham số –replication-factor set là 1, nếu chạy trên cluster thì các bạn sẽ tăng nó lên.

3.3. Tạo Producer và Consumer:

Sau khi có topic rồi, chúng ta sẽ tạo Producer và Consumer cho cái topic đó

Tạo Producer:

Mở Command Prompt khác lên, chuyển vào thư mục %KAFKA_HOME%\bin\windows, chạy lênh:

Các bạn nhớ là truyền cái tên topic là cái welcome-message vừa tạo khi nảy vào cho tham số –topic nha

Các bạn chú ý là sẽ thấy con trỏ nó nháy nháy, nó nháy nháy là đợi nhập text vào đó, nhưng các bạn khoan nhập gì hết nha.

Tạo Consumer:

Lại mở cái Command Prompt khác lên, chuyển vào thư mục %KAFKA_HOME%\bin\windows, chạy lênh:

các bạn thấy tham số nó khác với thằng Producer ha, thằng Consumer thì nó liên hệ với anh zookeeper. Nhớ set tham số –topic là welcome-message.

Cuối cùng là các bạn thử gõ gì đó ở cái Commmand Prompt của thằng Producer đi, các bạn sẽ thấy nó sẽ hiện lên ngay tức thì ở bên cái Command Prompt của thằng Consumer.

Xong, đây là bước đầu tiên để tạo một cái Streaming Server, trên đây chỉ là test trên console thôi, Trên thực tế thì phải làm thêm một vài thứ nữa. Các bài tiếp theo tui dự định làm là đối với Consumer thì tui sẽ thử dùng Spark Streaming để hứng dữ liệu, còn đối với Producer, sẽ thử viết một cái ứng dụng rồi push data vào Producer. Xin cảm ơn!

 

Sharing is caring!

Cài đặt Apache Spark cluster trên hệ điều hành Linux/Ubuntu
Tạo một Kafka Producer để giả lập nguồn dữ liệu đầu vào bằng ngôn ngữ Scala

Vincent Le

Tui là Lê Minh Đạt, tên tiếng anh là Vincent(do thích nhân vật Vincent Valentine, ai từng là fan của trò Final Fantasy VII thì sẽ biết nhân vật này, hehe). Đang tập tành làm một blogger viết về mảng lập trình, mong muốn được chia sẻ những gì đã học được, tích góp được trong 10 năm đi làm thợ code.

shares