Kafka 01——Kafka のインストールと簡単な入門レベルの使用
1. ダウンロードしてインストールします
1.1 JDKのインストール
- Kafka 独自の開発言語はjdk をベース
Scala
に開発されているため、まず jdk をインストールする必要があります。jdk のインストールについては、次の 2 つの記事を参照してください。Scala
1.2 Zookeeperのインストール
1.2.1 Zookeeper のバージョンの選択
- 以下でダウンロードした kafaka のバージョンに基づいて、対応する Zookeeper のバージョンを選択できます。選択方法は次のとおりです。
- 方法 1: 次のように、Kafka の libs の下にある jar パッケージを直接確認します。
- 方法 2: 次のように、ソース コードをチェックしてバージョン情報を確認することもできます。
- 方法 1: 次のように、Kafka の libs の下にある jar パッケージを直接確認します。
1.2.2 Zookeeper をダウンロードしてインストールする
- 次のように、公式 Web サイトにアクセスし、必要に応じて対応するバージョンをダウンロードします。
- Zookeeper のインストールについては、次の記事
Zookeeper のインストールと使用 (win+linux)を参照してください。
1.3 Kafkaのインストール
1.3.1 ダウンロード
- 公式 Web サイトにアクセスして、必要なバージョンをダウンロードします。公式 Web サイトのアドレス:
https://kafka.apache.org/downloads。
1.3.2 解凍
- 次に、次のように解凍します。
tar -zxvf kafka_2.12-2.8.2.tgz
1.3.3 設定ファイルの変更
-
構成ファイルを
server.properties
次のように変更します。
-
構成情報は次のとおりです。
# The id of the broker. This must be set to a unique integer for each broker. broker.id=0 listeners=PLAINTEXT://内网IP:9092 advertised.listeners=PLAINTEXT://公网IP:9092 zookeeper.connect=zk的公网IP:2181 # …… 其他配置,先默认即可
2.カフカを起動する
2.1 Kafkaの起動
-
起動コマンドは以下のとおりです。
./kafka-server-start.sh ../config/server.properties &
-
正常に起動すると、次のように表示されます。
-
進行状況を確認します。
ps -ef | grep kafka
2.2 Kafka の起動時に発生する問題
2.2.1 質問 1
- 問題の説明、次のように:
org.apache.kafka.common.KafkaException: Socket server failed to bind to XXX:9092: Cannot assign requested address.
- 問題の原因
- サーバーのパブリック IP (外部に公開される IP) と実際の IP (ifconfig によって表示される IP) は単なるマッピング関係である可能性があります。ユーザーが外部 IP にアクセスすると、OpenStack はそれを対応する実際の IP に転送します。アクセス用に。
- ただし、この時点で、
server.properties
設定ファイル内の設定が の場合listeners=PLAINTEXT://公网IP:9092
、ソケットをリッスンするようにバインドできないため、起動できず、上記のエラーが報告されます。 - 解決策も非常に簡単で、上記の設定を変更するだけで、
listeners=PLAINTEXT://内网IP:9092
他の用途には実際のイントラネット IP とは関係なく、通常どおりパブリック IP を使用するだけです。
- 問題を解く
-
最初に見るイントラネットIP
ifconfig
-
次に、構成ファイルを
server.properties
次のように変更します。listeners=PLAINTEXT://内网IP:9092 advertised.listeners=PLAINTEXT://公网IP:9092
-
- あとは再起動するだけです。
2.2.2 質問 2
3. シンプルで実用的
3.1 トピックの作成
- 次のように:
./kafka-topics.sh --create --zookeeper zookeeper服务的IP:2181 --replication-factor 1 --partitions 1 --topic susu-topic
3.2 作成したトピックを表示する
- 次のように:
./kafka-topics.sh -list --zookeeper zookeeper服务的IP:2181
3.3 メッセージの送信
3.3.1 メッセージ送信コマンド
- 次のように:
./kafka-console-producer.sh --broker-list 内网IP:9092 --topic susu-topic 或者 ./kafka-console-producer.sh --broker-list 公网IP:9092 --topic susu-topic
3.3.2 発生した問題
3.3.2.1 質問 1
- この問題は次のように説明されています。
[2023-08-10 09:01:57,758] WARN [Producer clientId=console-producer] Bootstrap broker 43.143.190.116:9092 (id: -1 rack: null) disconnected (org.apache.kafka.clients.NetworkClient) [2023-08-10 09:02:15,979] WARN [Producer clientId=console-producer] Bootstrap broker 43.143.190.116:9092 (id: -1 rack: null) disconnected (org.apache.kafka.clients.NetworkClient) [2023-08-10 09:02:49,538] WARN [Producer clientId=console-producer] Bootstrap broker 43.143.190.116:9092 (id: -1 rack: null) disconnected (org.apache.kafka.clients.NetworkClient) [2023-08-10 09:02:50,562] ERROR Error when sending message to topic susu-topic with key: null, value: 4 bytes with error: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback) org.apache.kafka.common.errors.TimeoutException: Topic susu-topic not present in metadata after 60000 ms. >[2023-08-10 09:03:18,069] WARN [Producer clientId=console-producer] Bootstrap broker 43.143.190.116:9092 (id: -1 rack: null) disconnected (org.apache.kafka.clients.NetworkClient) [2023-08-10 09:03:47,001] WARN [Producer clientId=console-producer] Bootstrap broker 43.143.190.116:9092 (id: -1 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)
- 問題の解決:
ここでの解決策は、ポート 9092 を開くことです。開いているポートとファイアウォールの問題については、次の記事を参照してください:
Linux でファイアウォールの状態を確認する、ファイアウォールを閉じる、ポートを開閉するなど。
3.3.2.2 質問 2
- ポートを開いた後の問題は次のとおりです。問題の説明:
WARN [Producer clientId=console-producer] Connection to node -1 (/XXX:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
- 問題を解決する:
ここでサービスを再起動し、kafka を再起動すると、問題が解決します。何が問題なのかわかりません。つまり、再起動すれば問題の 99% は解決できます。!!
3.4 メッセージの受信
3.4.1 受信メッセージのデモ
- 次のように:
./kafka-console-consumer.sh --bootstrap-server 外网IP或内网IP:9092 --topic susu-topic --from-beginning
3.4.2 メッセージ受信時のヒント
- 次のように:
- 消費方法1:ゼロから支出する
./kafka-console-consumer.sh --bootstrap-server IP:9092 --topic susu-topic --from-beginning
- 消費方法2:最終メッセージのオフセット+1から消費開始
./kafka-console-consumer.sh --bootstrap-server IP:9092 --topic susu-topic
- 消費方法1:ゼロから支出する
- 詳細は次のとおりです。
3.5 ビューzk
- 次のように:
4. まとめ
4.1 Kafka の基本概念
- Kafka は、主に大量のデータのメッセージ キューを処理するために使用されるメッセージ キューであり、一般的にはログ処理に使用されます。Kafka はメッセージ キューであるため、メッセージ キューの対応する特性も備えています。
- 他の MQ と同様に、Kafka にも独自のインフラストラクチャがあり、主にプロデューサー、プロデューサー、Kafka クラスター ブローカー、コンシューマー、登録メッセージ Zookeeper で構成されます。
- トピック: トピックは仮想的な概念であり、1 つから複数のパーティションで構成され、キューとして理解でき、プロデューサーとコンシューマーの両方がトピックを指向します。
- Partition : パーティション、実際のメッセージストレージユニット。スケーラビリティを実現するために、非常に大きなトピックを複数のブローカーに分散できます。トピックは複数のパーティションに分割できます。各パーティションは順序付けされたキューです (パーティションは順序付けされていますが、グローバルな順序付けは保証できません)。
- プロデューサー: メッセージ プロデューサー。Kafka にメッセージを発行する役割。
- Consumer : メッセージ コンシューマー。Kafka からメッセージを取得して消費するクライアント。
- ブローカー: ブローカー。Kafka サーバーはブローカーであり、クラスターは複数のブローカーで構成され、1 つのブローカーは複数のトピックに対応できます。
4.2 共通コマンド
4.2.1 よく使用される基本コマンド
- 開始コマンド:
./kafka-server-start.sh ../config/server.properties &
- 停止コマンド:
./kafka-server-stop.sh
- 場所
4.2.2 シンプルで実用的なコマンド
- トピックを作成する
# 创建topic ./kafka-topics.sh --create --zookeeper zookeeper的IP:2181 --replication-factor 1 --partitions 1 --topic susu-topic
- 作成したトピック情報を表示する
# 查看已经创建的topic信息 ./kafka-topics.sh -list --zookeeper zookeeper的IP:2181
- メッセージを送ります
./kafka-console-producer.sh --broker-list 内网IP:9092 --topic susu-topic 或者 ./kafka-console-producer.sh --broker-list 公网IP:9092 --topic susu-topic
- メッセージを受信する
./kafka-console-consumer.sh --bootstrap-server 外网IP或内网IP:9092 --topic susu-topic --from-beginning
4.3 データログ
log.dirs
次のように、データ ログ、ストレージ パスを確認し、構成ファイルでどのパスが構成されているかを確認します。
4.4 構造図
- 次のように: