LoginSignup
0
0

More than 1 year has passed since last update.

macOSでのApache Kafkaセットアップメモ

Last updated at Posted at 2021-05-21

Apache Kafkaについては更新スピードはやいので
基本Docを参照するのがよい

-> Apache Kafka

Apache Kafkaのインストール

Macでインストール

brew install kafka

現時点でインスコされるのはv2.8.0

  • /usr/local/bin/ にkafka関連のコマンドがインスコされる
  • /usr/local/etc/kafka/ にコンフィグファイルなどが保存される

設定の変更

ホームディレクトリに適当なディレクトリを作って使うファイルだけコピー

mkdir kafka
mkdir kafka/config
cp /usr/local/etc/kafka/server.properties ./kafka/config
cp /usr/local/etc/kafka/zookeeper.properties ./kafka/config

ログファイルなど保存場所も変更したいので保存先ディレクトリを作成

mkdir kafka/data
mkdir kafka/data/zookeeper
mkdir kafka/data/kafka-logs

./kafka/config/server.propertieslog.dirs を変更

log.dirs=/Users/yhirai/kafka/data/kafka-logs

./kafka/config/zookeeper.propertiesdataDir を変更

dataDir=/Users/yhirai/kafka/data/zookeeper

起動

Zookeeperの起動

zookeeper-server-start ./kafka/config/zookeeper.properties

Brokerの起動

kafka-server-start ./kafka/config/server.properties

Topicについて

Topicの作成

kafka-topics --zookeeper 127.0.0.1:2181 --topic first_topic --create --partitions 3 --replication-factor 1

作成したTopicの確認

kafka-topics --zookeeper 127.0.0.1:2181 --topic first_topic --describe

Topicの一覧

kafka-topics --zookeeper 127.0.0.1:2181 --list

Topicの削除

kafka-topics --zookeeper 127.0.0.1:2181 --topic second_topic --delete

削除時はいろいろ問題でてくるみたいなので
このページが参考になるかも
When/how does a topic “marked for deletion” get finally removed?

メモ

送信したメッセージの処理について

プロデューサーでメッセージを送信したとき
そのメッセージはラウンドロビンでパーティションに振り分けられる
そのため、コンシューマー側でメッセージを受信するときには
取得先のパーティションによってメッセージが決まるので
メッセージを送信した順番で処理するとは限らない

送信時につけるKeyについて

Keyをメッセージにつけると
その同じKeyがついているものは同じパーティションに保存されるようになる

acks

データロストしたくない場合
十分なブローカーを用意して
レプリカ(ISR-in sync replica-)にもデータを同期するといい

プロデューサーの設定でacksはallにしておく

Idempotent Producer

Kafka>=0.11のときに使用できる
ネットワークエラーなどでBrokerのackリクエストがプロデューサー側に届かなかった場合に
プロデューサー側から再度リクエストを送ることで重複してメッセージをコミットしなくなる

安全なプロデューサーの設定

Kafka < 0.11 のとき

  • acks-all
  • min.insync.replicas=2
  • retries=MAX_INT
  • max.in.flight.requests.per.connection=1

Kafka >= 0.11

  • enable.idempotence=true
  • min.insync.replicas=2
  • aks-all,retries=MAX_INT,max.in.flight.requests.per.connection=5(default)

Message Compression

compression.typeはdefaultがnone
gzip,lz4,snappyなどを選べる

Delivery semantics for consumer

  • At most once: メッセージロストの危険性あり
  • At least once: メッセージが処理されてからコミットする。ただ、重複してデータを読み取る可能性があるのでメッセージの処理がidempotentであるようにする。

Security

  • Encryption
  • Authentication
  • Authorization

Kafka with the Confluent CLI

Confluent Platform CLI
https://docs.confluent.io/confluent-cli/current/install.html

Kafka development environment using Docker

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0