メッセージキューのKafka詳細説明


1.カフカとは

ストリーミングコンピューティングでは、通常、Kafkaを使用してデータをキャッシュし、StormはKafkaデータを使用して計算を実行します。

  1. Apache Kafkaは、Scalaで記述されたオープンソースのメッセージングシステムです。これは、Apache SoftwareFoundationによって開発されたオープンソースのメッセージングシステムプロジェクトです。
  2. KafkaはもともとLinkedInによって開発され、2011年の初めにオープンソース化されました。2012年10月にApacheIncubatorを卒業しました。このプロジェクトの目標は、リアルタイムデータを処理するための統合された高スループットで低遅延のプラットフォームを提供することです。
  3. Kafkaは分散メッセージキューです。Kafkaは、メッセージが保存されるときにトピックに従ってメッセージを分類します。送信者はプロデューサー、メッセージの受信者はコンシューマーと呼ばれます。また、Kafkaクラスターは複数のKafkaインスタンスで構成され、各インスタンス(サーバー)はブローカーと呼ばれます。 。
  4. Kafkaクラスターとコンシューマーはどちらも、システムの可用性を確保するために、いくつかのメタ情報を格納するためにzookeeperクラスターに依存しています。新しいバージョンのオフセットはローカルで維持されます

2.カフカアーキテクチャ

  1. プロデューサー:メッセージプロデューサーは、Kafkaブローカーにメッセージを送信するクライアントです。
  2. コンシューマー:メッセージコンシューマー、kafkaブローカーからメッセージをフェッチするクライアント。
  3. トピック:キューとして理解できます。
  4. コンシューマーグループ(CG):これは、トピックメッセージのブロードキャスト(すべてのコンシューマーへ)およびユニキャスト(すべてのコンシューマーへ)を実現するためにKafkaによって使用される方法です。トピックには複数のCGを含めることができます。トピックメッセージはすべてのCGにコピーされます(概念的には実際にはコピーされません)が、各パーティションはCG内の1人のコンシューマーにのみメッセージを送信します。各コンシューマーが独立したCGを持っている限り、ブロードキャストを実装する必要がある場合。すべての消費者が同じCGにいる限り、ユニキャストを実現します。CGを使用すると、さまざまなトピックにメッセージを何度も送信することなく、消費者を自由にグループ化することもできます。
  5. ブローカー:kafkaサーバーはブローカーです。クラスターは複数のブローカーで構成されます。ブローカーは複数のトピックを保持できます。
  6. パーティション:スケーラビリティを実現するために、非常に大きなトピックを複数のブローカー(つまりサーバー)に分散でき、トピックを複数のパーティションに分割でき、各パーティションは順序付けられたキューになります。パーティション内の各メッセージには、順序付けられたID(オフセット)が割り当てられます。Kafkaは、メッセージがパーティション内の順序でコンシューマーに送信されることを保証するだけであり、トピック全体(複数のパーティション間)の順序を保証するものではありません。
  7. オフセット:Kafkaのストレージファイルはoffset.kafkaにちなんで名付けられています。名前としてoffsetを使用する利点は、見つけやすいことです。たとえば、2049の場所を検索する場合は、ファイル2048.kafkaを検索します。もちろん、最初のオフセットは00000000000.kafkaです。
  8. ブローカーと消費者は飼育係に依存していますが、生産者は飼育係と通信していません

Zookeeperは、fllower更新操作をリーダーに接続して、fllowerの相互作用を行うことができます。

Zookeeperの役割と背景[データの整合性、高可用性]

管理代码中的变量的配置
设置命名服务
提升系统的可用性和安全性
管理Kafaka集群

3.基本的な概念

エージェント、プロデューサー、コンシューマー、コンシューマーグループなどの概念を理解します。

  1. ブローカ
  2. プロデューサー(プロデューサー)
    Kafkaシステムでは、データを書き込むアプリケーションは一般に「プロデューサー」と呼ばれます。
    Kafkaプロデューサーは、Kafkaシステムと外界との間のデータ相互作用のためのアプリケーションインターフェイスとして理解できます。
  3. 消費者
  4. 消費者グループ

Kafkaのトピック、パーティション、レプリカ、およびレコードの意味を理解する

  1. トピック
  2. パーティション
  3. レプリケーション
  4. 記録

  1. カフカの本来の意図は?
    高スループット、高可用性キュー、低遅延、分散メカニズム
  2. カフカの特徴は何ですか?
    高スループット、高可用性キュー、低遅延、分散メカニズム
  3. Kafkaはどのようなシナリオで使用されていますか?
    データの非同期生成、オフセット移行、セキュリティメカニズム、コネクタ、ラック認識、データフロー、タイムスタンプ、メッセージセマンティクス、ログ収集、メッセージシステム、ユーザートラジェクトリ、レコード操作監視データ、ストリーム処理の実装、およびイベントソース
  4. Kafkaのどのメタデータ情報がzookeeperに保存されていますか?
    コントローラーの選出時間、エージェントノードとトピック、構成、管理者操作、コントローラー。
  5. このメタデータ情報はどのように配布されますか?
    Kafkaメタデータzookeeperストレージ
  6. なぜ消費者グループが必要なのですか?
    水平方向のプログラム拡張、情報蓄積の配置

4.パーティションストレージ

4.1。データを保存するためのパーティション

パーティションファイルストレージ

  • 1つのトピックの下に複数のパーティションがあり、各パーティションは個別のディレクトリです
  • パーティションの命名規則は、トピック+ゼロから始まりパーティションn-1までの連番です。

フラグメントファイルストレージ

  • インデックスファイルとデータファイルで構成されます* .indexインデックスファイル.logデータファイル
  • Kafkaは、メッセージレコードごとにインデックスを作成しませんが、スパースインデックスメソッドを使用します

4.2。Kafkaが期限切れのデータをクリーンアップする方法は何ですか?

時間とサイズに基づく削除戦略

#系统默认保存7天
log.retention.hours=168

#系统默认没有设置大小
log.retention.bytes=-1

明確な圧縮戦略

如果使用压缩策略清除过期日志,则需要设置属性
log.cleanup.policy=compact

5.カフカのセキュリティメカニズム

5.1.Kafkaのセキュリティメカニズムを理解する

バージョン0.9より前のセキュリティメカニズムはありません。機密データの漏洩、トピックの削除、パーティションの変更などのリスクがあります。

認証

1.客户端和Kafka Broker之间连接认证
2.Broker和Broker之间连接认证
3.Broker和Zookeeper之间连接认证

アクセス制御

1. 对读写删改主题权限控制
2. 可插拔权限认证,支持与外部授权服务集成
3. 自带简单的授权类kafka.secutity.auth.SimpleAclAuthorizer
4. 部署安全模块是可选的

5.2。ACLを構成する

クラスター操作
は、エージェントノードのアップグレード、トピックパーティションのメタデータリーダーの切り替え、トピックパーティションのコピー設定など、クラスター内のエージェントノード間で管理する傾向があります。

サブジェクトの操作
読み取り、削除、表示などの特定のアクセス権をサブジェクトにターゲティングします

#如果没有设置ACL、则除超级用户外其他用户不能访问。默认为false
allow.everyone.if.no.acl.found=true
#设置超级用户
super.users=User.admin
#启用ACL,配置授权
authorizer.class.name=kafka.secutity.auth.SimpleAclAuthorizer

5.3.KafkaはACLモードを有効にします

クラスターの起動

# 文件/**/reader_jaas.conf权限认证信息内容

KafkaServer {
  org.apache.kafka.common.security.plain.PlainLoginModule required
  username="admin"
  password="admin"
  user_admin="admin"
  user_reader="reader"
  user_writer="writer";
};
 
#在 zookeeper-server-start.sh kafka-server-start.sh cat kafka-acls.sh脚本中添加
export KAFKA_OPTS="-Djava.security.auth.login.config=/**/reader_jaas.conf"

# 启动zookeeper
./zookeeper-server-start.sh ../config/zookeeper.properties 1>/dev/null 2>&1 &

# 启动Kafka
nohup ./kafka-server-start.sh ../config/server.properties > kafka-server-start.log 2>&1 &

権限の表示

kafka-acls.sh

6.カフカコネクター

コネクタコアの概念

  1. コネクタの例
  2. タスクの数
  3. イベントスレッド
  4. コンバータ

6.1。コネクタの使用シナリオを理解する

连接器一般是用来构建数据管道
1.开始和结束的端点 [举例 Kafka数据移出到hbase 或者oracle数据移入到Kafka]
2.数据传输的中间介质[举例 海量数据存储到ES中,作为临时存储]

6.2。機能と利点

特性

  1. ユニバーサルフレームワーク
  2. スタンドアロンモードと分散モード
  3. RESTインターフェース
  4. オフセットの自動管理
  5. 分散型でスケーラブル
  6. データフローとバッチ統合

利点

  1. ソースコネクタ
  2. シンクコネクタ

6.3.Kafkaコネクタの操作

スタンドアロンモードでKafkaにデータをインポートする

第一步:创建要导入的文件
第一步:修改配置文件../config/connect-file-source.properties 

./connect-standalone.sh  ../config/connect-standalone.properties ../config/connect-file-source.properties 

分散モードでKafkaにデータをインポートする

./connect-distributed.sh ../config/connect-distributed.properties 

#查看版本号
curl http://dns:8083

6.4。シンプルなKafkaコネクタプラグインを開発する

ソースコネクタを書き込む

1.SourceConnector类:用来初始化连接器配置和任务数
2.SourceTask类:用来实现标准输入或者文件读取

シンクコネクタを書き込む

1.SinkTask类:用来实现标准输出或者文件写入
2.SinkConnector类:用来初始化连接器配置和任务数

参考資料:
Kafka監視システム
-Kafka Eagle CentosでのKafka単一マシンの構成と展開Kafkaの
インストールと展開
Kafkaインストールチュートリアル(詳細なプロセス)
apache kafkaシリーズserver.properties構成ファイルパラメーターの説明
Kafka監視システムKafkaクラスター展開KafkaEagle分析
( Dockerコンテナの方法)

おすすめ

転載: blog.csdn.net/baidu_41847368/article/details/114764613