apache-kafka チュートリアル
apache-kafkaを使い始める
サーチ…
備考
Kafkaは、分散、パーティション化、複製されたコミットログサービスとして実装された高スループットのパブリッシュ/サブスクライブメッセージングシステムです。
カフカ公式サイトから撮影
速い
1人のKafkaブローカーは、数千のクライアントから数百メガバイトの読み書きを毎秒処理できます。
スケーラブル
Kafkaは、単一のクラスタを大規模な組織の中央データバックボーンとして機能させることを目的としています。これは、ダウンタイムなしに、弾性的かつ透過的に拡張することができます。データストリームは、1台のマシンの能力よりも大きいデータストリームを許容し、調整されたコンシューマのクラスタを許可するために、マシンのクラスタに分割され、分散される
耐久性のある
メッセージはディスク上に永続化され、クラスタ内で複製され、データの消失を防ぎます。各ブローカはパフォーマンスに影響を与えずにテラバイトのメッセージを処理できます。
デザインによって配布
Kafkaは、耐久性と耐故障性の高い保証を提供する最新のクラスタ中心設計を採用しています。
インストールまたはセットアップ
ステップ1 。 Java 7または8をインストールする
ステップ2 。 Apache Kafkaをダウンロードする: http : //kafka.apache.org/downloads.html
たとえば、 Apache Kafka 0.10.0.0をダウンロードしようとします。
ステップ3 。圧縮ファイルを展開します。
Linuxの場合:
tar -xzf kafka_2.11-0.10.0.0.tgz
ウィンドウで:右クリック - >ここで抽出
ステップ4 。 Zookeeperを起動する
cd kafka_2.11-0.10.0.0
Linux:
bin/zookeeper-server-start.sh config/zookeeper.properties
Windows:
bin/windows/zookeeper-server-start.bat config/zookeeper.properties
ステップ5 。カフカサーバーを起動する
Linux:
bin/kafka-server-start.sh config/server.properties
Windows:
bin/windows/kafka-server-start.bat config/server.properties
前書き
Apache Kafka™は分散型ストリーミングプラットフォームです。
つまり
1 - レコードのストリームを発行して購読することができます。この点で、メッセージキューまたはエンタープライズメッセージングシステムに似ています。
2-Itは、フォールトトレラントな方法でレコードストリームを格納することができます。
3 - レコードのストリームを発生時に処理することができます。
これは、2つの広いクラスのアプリケーションに使用されます。
1 - システムまたはアプリケーション間で確実にデータを取得するリアルタイムストリーミングデータパイプラインの構築
2 - データストリームを変換または反応するリアルタイムストリーミングアプリケーションを構築する
Kafkaコンソールスクリプトは、UnixベースのプラットフォームとWindowsプラットフォームでは異なります。この例では、プラットフォームに応じて拡張機能を追加する必要があります。 Linux:
.sh拡張子を持つbin/あるスクリプト。 Windows:bin\windows\あり、拡張子が.batスクリプト。
インストール
ステップ1:コードをダウンロードして解凍します。
tar -xzf kafka_2.11-0.10.1.0.tgz
cd kafka_2.11-0.10.1.0
ステップ2:サーバを起動します。
後でトピックを削除できるようにするには、
server.propertiesを開き、delete.topic.enableをtrueに設定します。
カフカは飼い葉桶に大きく依存するので、まずそれを始める必要があります。インストールしていない場合は、kafkaでパッケージ化された簡易スクリプトを使用して、素早く汚れた単一ノードのZooKeeperインスタンスを取得できます。
zookeeper-server-start config/zookeeper.properties
kafka-server-start config/server.properties
ステップ3:すべてが動作していることを確認する
今すぐzookeeperにlocalhost:2181とlocalhost:6667単一のkafkaブローカーを聞かせるべきです。
トピックを作成する
1つのブローカしかないので、レプリケーションファクタと1つのパーティションを持たないトピックを作成します。
kafka-topics --zookeeper localhost:2181 \
--create \
--replication-factor 1 \
--partitions 1 \
--topic test-topic
あなたのトピックをチェックしてください:
kafka-topics --zookeeper localhost:2181 --list
test-topic
kafka-topics --zookeeper localhost:2181 --describe --topic test-topic
Topic:test-topic PartitionCount:1 ReplicationFactor:1 Configs:
Topic: test-topic Partition: 0 Leader: 0 Replicas: 0 Isr: 0
メッセージの送受信
消費者を立ち上げる:
kafka-console-consumer --bootstrap-server localhost:9092 --topic test-topic
別の端末でプロデューサを起動し、いくつかのメッセージを送信します。既定では、ツールは特別なエンコーディングをせずに、ブローカに別のメッセージとして各行を送信します。いくつかの行を書き、Ctrl + DまたはCtrl + Cで終了します。
kafka-console-producer --broker-list localhost:9092 --topic test-topic
a message
another message
^D
メッセージは消費者の端末に表示されます。
カフカを止める
kafka-server-stop
マルチブローカクラスタを起動する
上記の例では、ブローカは1つだけ使用しています。実際のクラスタを設定するには、複数のカフカサーバを起動するだけです。彼らは自動的に自分自身を調整します。
ステップ1:衝突を避けるため、ブローカごとにserver.propertiesファイルを作成し、 id 、 port 、およびlogfile設定プロパティを変更します。
コピー:
cp config/server.properties config/server-1.properties
cp config/server.properties config/server-2.properties
各ファイルのプロパティを編集します。例:
vim config/server-1.properties
broker.id=1
listeners=PLAINTEXT://:9093
log.dirs=/usr/local/var/lib/kafka-logs-1
vim config/server-2.properties
broker.id=2
listeners=PLAINTEXT://:9094
log.dirs=/usr/local/var/lib/kafka-logs-2
ステップ2: 3つのブローカーを開始する:
kafka-server-start config/server.properties &
kafka-server-start config/server-1.properties &
kafka-server-start config/server-2.properties &
複製されたトピックを作成する
kafka-topics --zookeeper localhost:2181 --create --replication-factor 3 --partitions 1 --topic replicated-topic
kafka-topics --zookeeper localhost:2181 --describe --topic replicated-topic
Topic:replicated-topic PartitionCount:1 ReplicationFactor:3 Configs:
Topic: replicated-topic Partition: 0 Leader: 1 Replicas: 1,2,0 Isr: 1,2,0
今回は、さらに詳しい情報があります:
- "leader"は、指定されたパーティションのすべての読み取りと書き込みを担当するノードです。各ノードは、パーティションのランダムに選択された部分のリーダーになります。
- 「レプリカ」は、リーダーであるかどうかにかかわらず、または現在存続している場合でも、このパーティションのログを複製するノードのリストです。
- "isr"は "同期している"レプリカのセットです。これは、現在生存しておりリーダーにキャッチアップされているレプリカリストのサブセットです。
以前に作成されたトピックは変更されません。
テストフォールトトレランス
新しいトピックにいくつかのメッセージを公開する:
kafka-console-producer --broker-list localhost:9092 --topic replicated-topic
hello 1
hello 2
^C
リーダーを殺す(この例では1)。 Linuxの場合:
ps aux | grep server-1.properties
kill -9 <PID>
Windowsの場合:
wmic process get processid,caption,commandline | find "java.exe" | find "server-1.properties"
taskkill /pid <PID> /f
何が起こったのかを見てください:
kafka-topics --zookeeper localhost:2181 --describe --topic replicated-topic
Topic:replicated-topic PartitionCount:1 ReplicationFactor:3 Configs:
Topic: replicated-topic Partition: 0 Leader: 2 Replicas: 1,2,0 Isr: 2,0
リーダーシップはブローカー2と1に切り替わりました。しかしメッセージはまだそこにあります(あなた自身でチェックアウトするために消費者を使用してください)。
掃除
次の2つのトピックを削除します。
kafka-topics --zookeeper localhost:2181 --delete --topic test-topic
kafka-topics --zookeeper localhost:2181 --delete --topic replicated-topic