Apache Kafka on CentOS 8

วันนี้เราจะพูดถึงวิธีการติดตั้ง Apache Kafka ใน CentOS 8 และแนะนำการใช้งานเบื้องต้น Apache Kafka เป็นแอปพลิเคชันประมวลผลสตรีมเหตุการณ์โอเพนซอร์ส คุณสามารถใช้เป็นระบบส่งข้อความแบบเผยแพร่และรับข้อมูลเพื่อแยกกระบวนการตรรกะทางธุรกิจของคุณจากผู้ผลิตข้อมูล กรณีการใช้งานอื่นๆ ได้แก่ การติดตามกิจกรรมเว็บไซต์ที่มีปริมาณมาก การรวมบันทึกของเซิร์ฟเวอร์ การจัดหาเหตุการณ์ และบันทึกการกระทำ Apache Kafka สามารถปรับขนาดได้สูงเพราะเป็นระบบแบบกระจายที่มีปริมาณงานที่ดีขึ้นและการจำลองแบบในตัว Apache Kafka สามารถปรับขนาดได้โดยไม่ต้องหยุดทำงานในสภาพแวดล้อมการใช้งานจริง ทำให้เหมาะสำหรับการปรับใช้ในสถาปัตยกรรมระบบที่ทนต่อข้อผิดพลาด

Prerequisites

ก่อนที่คุณจะเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณมีสิ่งต่อไปนี้:

  • A CentOS 8 server.
  • A non-root sudo user

1. Install the Java Virtual Machine

SSH ไปยังเซิร์ฟเวอร์ของคุณและอัปเดตระบบของคุณ

$ sudo yum update -y


Apache Kafka เขียนด้วย Java และ Scala ดังนั้นจึงต้องใช้ Java Runtime Environment

เพื่อทำงาน ติดตั้ง OpenJDK 8

$ sudo yum install -y java-1.8.0-openjdk


ตรวจสอบการติดตั้ง

$ java -version


ตรวจสอบให้แน่ใจว่าคุณได้ผลลัพธ์ด้านล่าง

openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)


แก้ไข /etc/profile และกำหนดคอนฟิกตัวแปรสภาวะแวดล้อม Java

$ sudo nano /etc/profile


เพิ่มสองบรรทัดด้านล่างที่ด้านล่างของไฟล์

export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk
export JRE_HOME=/usr/lib/jvm/jre


source /etc/profile

2. Install Apache Kafka

ติดตั้งยูทิลิตี้ wget

$ sudo yum install -y wget


ไปที่โฮมไดเร็กทอรีของคุณ

$ cd ~


ในเว็บเบราว์เซอร์ ให้ไปที่หน้าดาวน์โหลด Kafka เพื่อค้นหา URL ดาวน์โหลด Apache Kafka เวอร์ชันล่าสุด ดาวน์โหลดแพ็คเกจ Apache Kafka เวอร์ชันเสถียรล่าสุดจากที่เก็บอย่างเป็นทางการ ตัวอย่างเช่น Kafka เวอร์ชัน 2.8.0 สำหรับ Scala 2.12:

$ wget https://downloads.apache.org/kafka/2.8.0/kafka_2.12-2.8.0.tgz


ใช้คำสั่ง tar เพื่อแตกไฟล์บีบอัด

$ tar -xvf kafka_2.12-2.8.0.tgz


ย้ายไฟล์ที่แยกออกมาไปยังไดเร็กทอรี /opt นี่เป็นตำแหน่งที่เหมาะสำหรับการจัดเก็บแอปพลิเคชันเสริม

$ sudo mv kafka_2.12-2.8.0 /opt


ไปยังไดเร็กทอรีใหม่

$ cd /opt/kafka_2.12-2.8.0


เปิด bin/kafka-server-start.sh เพื่อแก้ไขการกำหนดค่า Apache Kafka

$ sudo nano bin/kafka-server-start.sh


ค้นหาบรรทัดด้านล่าง

แก้ไขจาก export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
เปลี่ยนแปลงค่าเป็น export KAFKA_HEAP_OPTS from 1G to 128M


export KAFKA_HEAP_OPTS="-Xmx1G -Xms128M"

แพ็คเกจ Apache Kafka และ Zookeeper พร้อมใช้งานแล้ว คุณจะเรียกใช้ในขั้นตอนต่อไป


3. Run Zookeeper and Apache Kafka Services

ตรวจสอบให้แน่ใจว่าคุณอยู่ในไดเรกทอรีการทำงานของ Apache Kafka

$ cd /opt/kafka_2.12-2.8.0


เริ่มเซิร์ฟเวอร์ Zookeeper

$  bin/zookeeper-server-start.sh -daemon config/zookeeper.properties


เริ่มเซิร์ฟเวอร์ Kafka

$ bin/kafka-server-start.sh config/server.properties

ตอนนี้คุณมีสภาพแวดล้อม Apache Kafka ที่ถูกต้อง และคุณสามารถเริ่มสร้างหัวข้อทดสอบได้แล้ว


4. Create Test Topics

ปล่อยให้ Zookeeper และ Apache Kafka ทำงานต่อไป จากนั้น สร้างการเชื่อมต่อ SSH อื่นในหน้าต่างเทอร์มินัลใหม่และ cd ไปยังไดเร็กทอรี Apache Kafka

$ cd /opt/kafka_2.12-2.8.0


ใน Apache Kafka หัวข้อคือช่องทางเฉพาะสำหรับการสตรีมข้อมูล ใช้สคริปต์ kafka-topics.sh เพื่อสร้างหัวข้อทดสอบโดยการรันคำสั่งด้านล่างทีละรายการ

$ bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test1
$ bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test2
$ bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test3


หลังจากรันคำสั่งแล้ว คุณจะได้ผลลัพธ์ที่แสดงด้านล่าง

Created topic test1.
...

Created topic test2.
...

Created topic test3.


แสดงรายการหัวข้อที่คุณเพิ่งสร้าง

$ bin/kafka-topics.sh --list --zookeeper localhost:2181


ตอนนี้คุณควรได้รับรายการด้านล่าง

test1
test2
test3

หลังจากสร้างหัวข้อแล้ว คุณจะสร้างข้อความถึงอีกฝั่งในขั้นตอนต่อไป


5. Produce a Message to a Topic

ในการสร้างข้อความไปยังหัวข้อ เช่น test1 ให้ใช้สคริปต์ kafka-console-producer.sh โดยพิมพ์คำสั่งด้านล่าง

$ cd /opt/kafka_2.12-2.8.0
$ bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test1


หลังจากที่คุณได้รับข้อความแจ้งโหมดป้อนข้อมูลของผู้ใช้ > ให้พิมพ์ข้อความบรรทัดเดียวด้านล่างแล้วกด ENTER หลังแต่ละข้อความ

> Message Line 1
> Message Line 2
> Message Line 3


6. Consume a Message from a Topic

หากต้องการดึงข้อมูลจากหัวข้อ เช่น test1 ให้สร้างการเชื่อมต่อ SSH อื่นในหน้าต่างเทอร์มินัลใหม่ จากนั้น cd ไปที่ไดเร็กทอรี Apache Kafka

$ cd /opt/kafka_2.12-2.8.0


พิมพ์คำสั่งด้านล่างเพื่อฟังข้อความที่คุณสร้างในหัวข้อ test1

$ bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test1 --from-beginning


หากคุณได้รับข้อความที่คุณสร้างไว้ก่อนหน้านี้ดังที่แสดงด้านล่าง แสดงว่าการติดตั้ง Apache Kafka ของคุณทำงานได้ตามปกติ

Message Line 1
Message Line 2
Message Line 3


0
452