Apache Kafkaは、分散ストリーミングプラットフォームです。豊富なAPI(Application Programming Interface)セットを使用すると、ほとんどすべてのものをデータのソースとしてKafkaに接続できます。また、処理用のレコードの蒸気を受け取る多数のコンシューマーを設定できます。 Kafkaは拡張性が高く、信頼性が高くフォールトトレラントな方法でデータのストリームを保存します。接続性の観点から、Kafkaは多くの異種システム間のブリッジとして機能でき、Kafkaは、提供されたデータを転送および永続化する機能に依存できます。
このチュートリアルでは、ApacheKafkaをRedHat Enterprise Linux 8にインストールし、systemd
を作成します。 管理を容易にするためのユニットファイル、および付属のコマンドラインツールを使用して機能をテストします。
このチュートリアルでは、次のことを学びます。
- ApacheKafkaのインストール方法
- KafkaとZookeeperのsystemdサービスを作成する方法
- コマンドラインクライアントでKafkaをテストする方法

使用されるソフトウェア要件と規則
カテゴリ | 使用する要件、規則、またはソフトウェアバージョン |
---|---|
Red Hat Enterprise Linux 8 | |
Apache Kafka 2.11 | |
rootまたはsudo を介したLinuxシステムへの特権アクセス コマンド。 | |
# –指定されたLinuxコマンドは、rootユーザーとして直接、またはsudo を使用して、root権限で実行する必要があります。 コマンド$ –特定のLinuxコマンドを通常の非特権ユーザーとして実行する必要があります |
Redhat8にkafkaをインストールする方法ステップバイステップの説明
Apache KafkaはJavaで記述されているため、インストールを続行するために必要なのはOpenJDK8をインストールすることだけです。 Kafkaは、同じくJavaで記述された分散調整サービスであるApache Zookeeperに依存しており、ダウンロードするパッケージに同梱されています。 HA(高可用性)サービスを単一のノードにインストールすることはその目的を損なうものですが、KafkaのためにZookeeperをインストールして実行します。
- 最も近いミラーからKafkaをダウンロードするには、公式ダウンロードサイトを参照する必要があります。
.tar.gz
のURLをコピーできます そこからファイル。wget
を使用します 、およびパッケージをターゲットマシンにダウンロードするために貼り付けられたURL:# wget https://www-eu.apache.org/dist/kafka/2.1.0/kafka_2.11-2.1.0.tgz -O /opt/kafka_2.11-2.1.0.tgz
-
/opt
を入力します ディレクトリを作成し、アーカイブを抽出します:# cd /opt # tar -xvf kafka_2.11-2.1.0.tgz
そして、
/opt/kafka
というシンボリックリンクを作成します これは、現在作成されている/opt/kafka_2_11-2.1.0
を指します。 私たちの生活を楽にするディレクトリ。ln -s /opt/kafka_2.11-2.1.0 /opt/kafka
- 両方の
zookeeper
を実行する非特権ユーザーを作成します およびkafka
service。# useradd kafka
- そして、新しいユーザーを、抽出したディレクトリ全体の所有者として再帰的に設定します。
# chown -R kafka:kafka /opt/kafka*
- ユニットファイル
/etc/systemd/system/zookeeper.service
を作成します 次の内容で:
[Unit] Description=zookeeper After=syslog.target network.target [Service] Type=simple User=kafka Group=kafka ExecStart=/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties ExecStop=/opt/kafka/bin/zookeeper-server-stop.sh [Install] WantedBy=multi-user.target
シンボリックリンクを作成したため、バージョン番号を3回書き込む必要がないことに注意してください。同じことがKafkaの次のユニットファイル
/etc/systemd/system/kafka.service
にも当てはまります。 、次の構成行が含まれています:[Unit] Description=Apache Kafka Requires=zookeeper.service After=zookeeper.service [Service] Type=simple User=kafka Group=kafka ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties ExecStop=/opt/kafka/bin/kafka-server-stop.sh [Install] WantedBy=multi-user.target
-
systemd
をリロードする必要があります 新しいユニットファイルを読み取るには:
# systemctl daemon-reload
- これで、新しいサービスを(この順序で)開始できます。
# systemctl start zookeeper # systemctl start kafka
すべてがうまくいけば、
systemd
以下の出力のように、両方のサービスのステータスで実行状態を報告する必要があります。# systemctl status zookeeper.service zookeeper.service - zookeeper Loaded: loaded (/etc/systemd/system/zookeeper.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2019-01-10 20:44:37 CET; 6s ago Main PID: 11628 (java) Tasks: 23 (limit: 12544) Memory: 57.0M CGroup: /system.slice/zookeeper.service 11628 java -Xmx512M -Xms512M -server [...] # systemctl status kafka.service kafka.service - Apache Kafka Loaded: loaded (/etc/systemd/system/kafka.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2019-01-10 20:45:11 CET; 11s ago Main PID: 11949 (java) Tasks: 64 (limit: 12544) Memory: 322.2M CGroup: /system.slice/kafka.service 11949 java -Xmx1G -Xms1G -server [...]
- オプションで、両方のサービスの起動時に自動開始を有効にすることができます。
# systemctl enable zookeeper.service # systemctl enable kafka.service
- 機能をテストするために、1つのプロデューサーと1つのコンシューマークライアントを使用してKafkaに接続します。プロデューサーによって提供されたメッセージは、コンシューマーのコンソールに表示されます。しかし、この前に、これら2つのメッセージを交換する媒体が必要です。
topic
という新しいデータチャネルを作成します Kafkaの用語では、プロバイダーが公開する場所と、コンシューマーがサブスクライブする場所です。トピックをFirstKafkaTopic
と呼びます 。kafka
を使用します トピックを作成するユーザー:$ /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic FirstKafkaTopic
- 前の手順で作成した(この時点では空の)トピックにサブスクライブするコマンドラインからコンシューマークライアントを起動します。
$ /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic FirstKafkaTopic --from-beginning
コンソールとその中で実行されているクライアントは開いたままにしておきます。このコンソールは、プロデューサークライアントで公開するメッセージを受信する場所です。
- 別の端末で、プロデューサークライアントを起動し、作成したトピックにいくつかのメッセージを公開します。利用可能なトピックについてKafkaにクエリを実行できます:
$ /opt/kafka/bin/kafka-topics.sh --list --zookeeper localhost:2181 FirstKafkaTopic
そして、消費者がサブスクライブしているものに接続し、メッセージを送信します:
$ /opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic FirstKafkaTopic > new message published by producer from console #2
コンシューマー端末で、メッセージがまもなく表示されます:
$ /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic FirstKafkaTopic --from-beginning new message published by producer from console #2
メッセージが表示された場合、テストは成功し、Kafkaのインストールは意図したとおりに機能しています。多くのクライアントは、このチュートリアルで作成した単一ノードのセットアップでも、同じ方法で1つ以上のトピックレコードを提供および消費することができます。