Kafka 01——Kafka のインストールと簡単な入門レベルの使用

1. ダウンロードしてインストールします

1.1 JDKのインストール

1.2 Zookeeperのインストール

1.2.1 Zookeeper のバージョンの選択

  • 以下でダウンロードした kafaka のバージョンに基づいて、対応する Zookeeper のバージョンを選択できます。選択方法は次のとおりです。
    • 方法 1: 次のように、Kafka の libs の下にある jar パッケージを直接確認します。
      ここに画像の説明を挿入します
    • 方法 2: 次のように、ソース コードをチェックしてバージョン情報を確認することもできます。
      ここに画像の説明を挿入します

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 
      
  • 詳細は次のとおりです。
    ここに画像の説明を挿入します

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 構造図

  • 次のように:
    ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/suixinfeixiangfei/article/details/131945395