メッセージキューのKafka詳細説明
1.カフカとは
ストリーミングコンピューティングでは、通常、Kafkaを使用してデータをキャッシュし、StormはKafkaデータを使用して計算を実行します。
- Apache Kafkaは、Scalaで記述されたオープンソースのメッセージングシステムです。これは、Apache SoftwareFoundationによって開発されたオープンソースのメッセージングシステムプロジェクトです。
- KafkaはもともとLinkedInによって開発され、2011年の初めにオープンソース化されました。2012年10月にApacheIncubatorを卒業しました。このプロジェクトの目標は、リアルタイムデータを処理するための統合された高スループットで低遅延のプラットフォームを提供することです。
- Kafkaは分散メッセージキューです。Kafkaは、メッセージが保存されるときにトピックに従ってメッセージを分類します。送信者はプロデューサー、メッセージの受信者はコンシューマーと呼ばれます。また、Kafkaクラスターは複数のKafkaインスタンスで構成され、各インスタンス(サーバー)はブローカーと呼ばれます。 。
- Kafkaクラスターとコンシューマーはどちらも、システムの可用性を確保するために、いくつかのメタ情報を格納するためにzookeeperクラスターに依存しています。新しいバージョンのオフセットはローカルで維持されます
2.カフカアーキテクチャ
- プロデューサー:メッセージプロデューサーは、Kafkaブローカーにメッセージを送信するクライアントです。
- コンシューマー:メッセージコンシューマー、kafkaブローカーからメッセージをフェッチするクライアント。
- トピック:キューとして理解できます。
- コンシューマーグループ(CG):これは、トピックメッセージのブロードキャスト(すべてのコンシューマーへ)およびユニキャスト(すべてのコンシューマーへ)を実現するためにKafkaによって使用される方法です。トピックには複数のCGを含めることができます。トピックメッセージはすべてのCGにコピーされます(概念的には実際にはコピーされません)が、各パーティションはCG内の1人のコンシューマーにのみメッセージを送信します。各コンシューマーが独立したCGを持っている限り、ブロードキャストを実装する必要がある場合。すべての消費者が同じCGにいる限り、ユニキャストを実現します。CGを使用すると、さまざまなトピックにメッセージを何度も送信することなく、消費者を自由にグループ化することもできます。
- ブローカー:kafkaサーバーはブローカーです。クラスターは複数のブローカーで構成されます。ブローカーは複数のトピックを保持できます。
- パーティション:スケーラビリティを実現するために、非常に大きなトピックを複数のブローカー(つまりサーバー)に分散でき、トピックを複数のパーティションに分割でき、各パーティションは順序付けられたキューになります。パーティション内の各メッセージには、順序付けられたID(オフセット)が割り当てられます。Kafkaは、メッセージがパーティション内の順序でコンシューマーに送信されることを保証するだけであり、トピック全体(複数のパーティション間)の順序を保証するものではありません。
- オフセット:Kafkaのストレージファイルはoffset.kafkaにちなんで名付けられています。名前としてoffsetを使用する利点は、見つけやすいことです。たとえば、2049の場所を検索する場合は、ファイル2048.kafkaを検索します。もちろん、最初のオフセットは00000000000.kafkaです。
- ブローカーと消費者は飼育係に依存していますが、生産者は飼育係と通信していません
Zookeeperは、fllower更新操作をリーダーに接続して、fllowerの相互作用を行うことができます。
Zookeeperの役割と背景[データの整合性、高可用性]
管理代码中的变量的配置
设置命名服务
提升系统的可用性和安全性
管理Kafaka集群
3.基本的な概念
エージェント、プロデューサー、コンシューマー、コンシューマーグループなどの概念を理解します。
- ブローカ
- プロデューサー(プロデューサー)
Kafkaシステムでは、データを書き込むアプリケーションは一般に「プロデューサー」と呼ばれます。
Kafkaプロデューサーは、Kafkaシステムと外界との間のデータ相互作用のためのアプリケーションインターフェイスとして理解できます。 - 消費者
- 消費者グループ
Kafkaのトピック、パーティション、レプリカ、およびレコードの意味を理解する
- トピック
- パーティション
- レプリケーション
- 記録
- カフカの本来の意図は?
高スループット、高可用性キュー、低遅延、分散メカニズム - カフカの特徴は何ですか?
高スループット、高可用性キュー、低遅延、分散メカニズム - Kafkaはどのようなシナリオで使用されていますか?
データの非同期生成、オフセット移行、セキュリティメカニズム、コネクタ、ラック認識、データフロー、タイムスタンプ、メッセージセマンティクス、ログ収集、メッセージシステム、ユーザートラジェクトリ、レコード操作監視データ、ストリーム処理の実装、およびイベントソース - Kafkaのどのメタデータ情報がzookeeperに保存されていますか?
コントローラーの選出時間、エージェントノードとトピック、構成、管理者操作、コントローラー。 - このメタデータ情報はどのように配布されますか?
- なぜ消費者グループが必要なのですか?
水平方向のプログラム拡張、情報蓄積の配置
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.カフカコネクター
コネクタコアの概念
- コネクタの例
- タスクの数
- イベントスレッド
- コンバータ
6.1。コネクタの使用シナリオを理解する
连接器一般是用来构建数据管道
1.开始和结束的端点 [举例 Kafka数据移出到hbase 或者oracle数据移入到Kafka]
2.数据传输的中间介质[举例 海量数据存储到ES中,作为临时存储]
6.2。機能と利点
特性
- ユニバーサルフレームワーク
- スタンドアロンモードと分散モード
- RESTインターフェース
- オフセットの自動管理
- 分散型でスケーラブル
- データフローとバッチ統合
利点
- ソースコネクタ
- シンクコネクタ
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コンテナの方法)