Apache Kafkaは、分散ストリーミングプラットフォームです。システム間またはアプリケーション間でデータを取得するためのリアルタイムストリーミングデータパイプラインを構築するのに役立ちます。もう1つの便利な機能は、データのストリームを変換したり、データのストリームに反応したりできるリアルタイムストリーミングアプリケーションです。
このチュートリアルは、Apache KafkaCentOS8またはRHEL8Linuxシステムのインストールに役立ちます。
前提条件
- 新しくインストールしたシステムは、サーバーの初期設定に従うことをお勧めします。
- sudo権限アカウントを持つCentOS8システムへのシェルアクセス。
ステップ1–Javaをインストールする
Apache Kafkaを実行するには、システムにJavaがインストールされている必要があります。次のコマンドを実行して、OpenJDKをマシンにインストールできます。また、他の必要なツールをいくつかインストールします。
sudo dnf install java-11-openjdk wget vim
ステップ2–ApacheKafkaをダウンロードする
ApacheKafkaバイナリファイルを公式ダウンロードWebサイトからダウンロードします。近くのミラーを選択してダウンロードすることもできます。
wget http://www-us.apache.org/dist/kafka/2.7.0/kafka_2.13-2.7.0.tgz
次に、アーカイブファイルを抽出します
tar xzf kafka_2.13-2.7.0.tgz mv kafka_2.13-2.7.0 /usr/local/kafka
ステップ3–KafkaSystemdユニットファイルのセットアップ
CentOS 8は、systemdを使用してサービス状態を管理します。そのため、ZookeeperおよびKafkaサービス用のsystemdユニットファイルを作成する必要があります。これは、開始/停止するKafkaサービスを管理するのに役立ちます。
まず、以下のコマンドを使用して、Zookeeperのsystemdユニットファイルを作成します。
vim /etc/systemd/system/zookeeper.service
以下の続きを追加してください:
[Unit] Description=Apache Zookeeper server Documentation=http://zookeeper.apache.org Requires=network.target remote-fs.target After=network.target remote-fs.target [Service] Type=simple ExecStart=/usr/bin/bash /usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties ExecStop=/usr/bin/bash /usr/local/kafka/bin/zookeeper-server-stop.sh Restart=on-abnormal [Install] WantedBy=multi-user.target
ファイルを保存して閉じます。
次に、次のコマンドを使用してKafkasystemdユニットファイルを作成します。
vim /etc/systemd/system/kafka.service
以下のコンテンツを追加してください。必ず正しいJAVA_HOMEを設定してください システムにインストールされているJavaによるパス。
[Unit] Description=Apache Kafka Server Documentation=http://kafka.apache.org/documentation.html Requires=zookeeper.service [Service] Type=simple Environment="JAVA_HOME=/usr/lib/jvm/jre-11-openjdk" ExecStart=/usr/bin/bash /usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties ExecStop=/usr/bin/bash /usr/local/kafka/bin/kafka-server-stop.sh [Install] WantedBy=multi-user.target
ファイルを保存して閉じます。
systemdデーモンをリロードして、変更を適用します。
systemctl daemon-reload
ステップ4–Kafkaサーバーを起動します
KafkaにはZooKeeperが必要だったので、まず、システムでZooKeeperサーバーを起動します。 Kafkaで利用可能なスクリプトを使用して、単一ノードのZooKeeperインスタンスを開始できます。
sudo systemctl start zookeeper
次に、Kafkaサーバーを起動し、実行ステータスを表示します。
sudo systemctl start kafka sudo systemctl status kafka
全部終わった。これで、CentOS 8にKafkaが正常にインストールされました。このチュートリアルの次のパートでは、Kafkaクラスターでトピックを作成し、Kafkaプロデューサーおよびコンシューマーサービスを操作するのに役立ちます。
ステップ5–ApacheKafkaでトピックを作成する
Apache Kafkaは、それに取り組むための複数のシェルスクリプトを提供します。まず、「 testTopic」という名前のトピックを作成します 」と単一のレプリカを持つ単一のパーティション:
cd /usr/local/kafka bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic testTopic Created topic testTopic.
レプリケーション係数は、作成されるデータのコピーの数を示します。単一のインスタンスで実行しているため、この値を1のままにします。
データを分割するブローカーの数として、パーティションオプションを設定します。単一のブローカーで実行しているため、この値を1に保ちます。
上記と同じコマンドを実行して、複数のトピックを作成できます。その後、以下のコマンドを実行して、Kafkaで作成されたトピックを確認できます。
bin/kafka-topics.sh --list --zookeeper localhost:2181 testTopic KafkaonCentOS8 TutorialKafkaInstallCentOS8
または、トピックを手動で作成する代わりに、存在しないトピックが公開されたときにトピックを自動作成するようにブローカーを構成することもできます。
ステップ6–ApacheKafkaのプロデューサーとコンシューマー
「プロデューサー」は、Kafkaにデータを入れるプロセスです。 Kafkaには、ファイルまたは標準入力から入力を受け取り、それをメッセージとしてKafkaクラスターに送信するコマンドラインクライアントが付属しています。デフォルトのKafkaは、各行を個別のメッセージとして送信します。
プロデューサーを実行してから、コンソールにいくつかのメッセージを入力してサーバーに送信しましょう。
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic testTopic >Welcome to kafka >This is my first topic >
次に、新しいターミナルを開いて、ApacheKafkaコンシューマープロセスを実行します。 Kafkaは、Kafkaクラスターからデータを読み取り、メッセージを標準出力に表示するためのコマンドラインコンシューマーも提供します。
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic testTopic --from-beginning Welcome to kafka This is my first topic
–from-beginningオプションは、選択したトピックの先頭からメッセージを読み取るために使用されます。このオプションをスキップして、最新のメッセージのみを読むことができます。
たとえば、Kafkaプロデューサーとコンシューマーを別々のターミナルで実行します。そのプロデューサー端末にテキストを入力するだけです。コンシューマー端末にすぐに表示されます。作業中のKafkaプロデューサーとコンシューマーの以下のスクリーンショットを参照してください:
結論
これで、CentOS8LinuxマシンにKafkaサービスが正常にインストールおよび構成されました。