ApacheKafka

ローカル環境でApache Kafkaを始める手順と設定ガイド

ⓘ本ページはプロモーションが含まれています

スポンサードリンク

前提条件と環境準備

ローカルで Kafka を動作させるには Java Runtime が必須 です。Kafka は JDK 11 以降を公式にサポートしており、JDK 8 系では一部 API の非互換が原因でエラーになるケースがあります。ここでは、主要 OS(macOS・Ubuntu)ごとのインストール手順とバージョン確認コマンドを紹介します。

Java のインストール確認

以下のコマンドでインストール済みの Java バージョンを確認できます。11 以上が表示されれば次へ進めます

OS 別インストール手順

OS インストール方法 主なコマンド
macOS Homebrew を利用 brew install openjdk@11
sudo ln -sfn $(brew --prefix)/opt/openjdk@11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-11.jdk
Ubuntu (20.04 以降) APT パッケージ sudo apt update && sudo apt install openjdk-11-jdk

インストール後は再度 java -version を実行し、バージョンが 11.x 系であることを確認してください。


Kafka と Zookeeper の取得・ディレクトリ構成

公式サイトから直接ダウンロードすれば、改ざんリスクのない 最新安定版(執筆時点)を入手できます。バージョンは常に公式ページで確認し、以下のコマンド例では 3.x 系の最新版を想定しています。

バイナリのダウンロードと検証

  1. 公式ダウンロード URL(最新バージョンは <VERSION> に置き換えてください)
    bash
    VERSION=$(curl -s https://downloads.apache.org/kafka/ | grep -Eo 'kafka_[0-9]+\.[0-9]+-[0-9]+' | tail -1)
    curl -O https://downloads.apache.org/kafka/${VERSION}/kafka_2.13-${VERSION}.tgz
  2. SHA‑512 ハッシュで整合性を確認(公式ページに掲載のハッシュと比較)
    bash
    sha512sum kafka_2.13-${VERSION}.tgz
    # → 公式サイトの値と一致すれば OK

標準的なディレクトリ構造

ダウンロードしたアーカイブを解凍し、/usr/local/kafka に配置します。典型的なディレクトリ構成は次の通りです。

ディレクトリ 内容
config/ Zookeeper とブローカー用設定ファイル(zookeeper.properties, server.properties
bin/ 起動スクリプト・CLI ツール(kafka-server-start.sh など)
logs/ デフォルトのログ出力先(log.dirs のデフォルトでも使用)

この構成をそのまま利用すれば、後続の設定変更が最小限で済みます。


シングルノードでの起動と基本設定

ローカル開発では Zookeeper と Kafka ブローカー を同一マシン上でバックグラウンド実行させるだけで十分です。以下では起動手順と、最低限調整すべき設定項目を解説します。

Zookeeper の起動手順

zookeeper.properties はデフォルトのままで問題ありませんが、ログ保存先は明示的に指定しておくとトラブル時に確認しやすくなります。

Kafka ブローカーの起動手順

ブローカーは server.properties の数点だけ変更すれば、シングルノードでも即座に利用可能です。

主要設定項目

config/server.properties(ローカル向け推奨値)

config/zookeeper.properties(変更不要が望ましい)

これらの設定で Zookeeper → Kafka の順に起動すれば、ローカル環境は即座に稼働状態になります。


トピック作成とオプション

Kafka はトピック単位でデータを扱います。CLI ツール kafka-topics.sh を使えば、パーティション数やレプリケーション係数を自由に設定できますが、シングルブローカーの場合は 両方とも 1 が安全です。

トピック作成コマンド例

主なオプション解説

オプション 説明
--partitions パーティション数。スループット向上に寄与しますが、ローカル開発では 1 がシンプルです。
--replication-factor レプリカ数。ブローカーが 1 台だけの場合は必ず 1 を指定してください。

作成後は次のコマンドで一覧を確認できます。


プロデューサー・コンシューマーの確認

CLI と Java の両方で「メッセージが送信 → 受信」できることを確認すれば、Kafka が正しく稼働していると判断できます。

CLI での送受信テスト

  1. プロデューサー起動(標準入力から文字列を送信)
    bash
    bin/kafka-console-producer.sh --broker-list localhost:9092 --topic my-topic
  2. 別ターミナルでコンシューマー起動(先頭から全メッセージを取得)
    bash
    bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 \
    --topic my-topic --from-beginning

入力した文字列が即座にコンシューマ側に表示されれば成功です。

Java サンプルコードとビルド手順

以下は Maven を使わずにローカルの JAR だけで動かす最小構成です。kafka-clients-<version>.jar は公式サイトから取得してください(バージョンは server.properties と合わせる)。

Producer.java

Consumer.java

コンパイル&実行手順

コンソールに Sent to partition …key=… value=… が表示されれば、Java クライアントからも正常にメッセージが流れています。


トラブルシューティング・Docker Compose 代替構築・本番移行ポイント

よくあるエラーと対処法

エラー 主な原因 解決策
ポート 9092 が使用中 別プロセスがバインドしている lsof -i :9092 で確認し、不要なら停止。もしくは listeners=PLAINTEXT://localhost:19092 に変更
Zookeeper 接続失敗 (Connection refused) 起動していない・ポート不一致 bin/zookeeper-server-start.sh -daemon config/zookeeper.properties を再実行し、nc -z localhost 2181 で接続確認
ブローカー起動直後に終了(broker.id 重複) 同一マシン上で複数ブローカーを走らせている server.propertiesbroker.id をユニークに設定。単体なら 0 固定
ログディレクトリが書き込めない ディスク容量不足または権限エラー df -h で空き容量確認、必要なら別ディスクへ log.dirs を変更

Docker Compose による代替構築

Docker 環境ではホスト側に Java をインストールする必要がなく、イメージバージョンを揃えるだけで手軽に起動できます。公式イメージのタグは執筆時点で 7.5.0 ですが、実際に使用する際は 公式サイトの最新タグ と合わせてください。

起動手順

※ バージョン注意
confluentinc/cp-kafkacp-zookeeper のタグは必ず同一にしてください。異なるバージョン間でプロトコル互換性が失われ、起動エラーになることがあります。

本番環境へ移行する際に検討すべき主要設定

項目 推奨設定例(小規模本番) 理由
broker.id クラスタ全体で一意、0〜2,147,483,647 の整数 ブローカー識別に必須
listeners / advertised.listeners PLAINTEXT と併せて SSL (SSL://host:9093) を設定し暗号化 データ漏洩防止
log.dirs SSD 推奨、容量は予測トラフィックの 2〜3 倍確保 高速書き込みとディスク不足回避
num.network.threads, num.io.threads CPU コア数 × 2 程度に増加(例: 8 cores → 16) スループット向上
replication.factor 3 以上で耐障害性確保 ブローカー障害時のデータ喪失防止
min.insync.replicas replication.factor - 1(例: 2) 書き込み成功判定を厳格化
認証・認可 SASL/SCRAM または Kerberos の導入検討 アクセス制御と監査ログ取得

本番環境では モニタリング(Prometheus + Grafana など)や バックアップ戦略セキュリティパッチの適用サイクル も合わせて設計してください。公式ドキュメントの Production Checklist が詳細な指針を提供しています。


まとめ

  1. Java 11 以上 をインストールし、バージョンを確認する。
  2. 公式サイトから 最新安定版 Kafka バイナリ を取得し、SHA‑512 で整合性検証する。
  3. 標準ディレクトリ構成のまま Zookeeper → Kafka の順に起動し、必要最小限の設定 (broker.id, listeners, log.dirs) を行う。
  4. kafka-topics.sh でトピックを作成し、CLI または Java クライアントでメッセージ送受信を確認する。
  5. エラーが出たら よくあるトラブル テーブルを参照し、Docker Compose でも同様の環境を手軽に構築できることを覚えておく。
  6. 本番移行時は レプリケーション・暗号化・認証 などの追加設定とモニタリング基盤を整える。

この手順通りに進めれば、ローカルでの開発環境構築から本格的な運用設計まで、一貫した知識体系を身につけられます。ぜひ実際に手を動かして、Kafka の高速ストリーミング処理を体感してください。

スポンサードリンク

-ApacheKafka