2016-04-06 16 views
5

カフカでトピックを作成するにはどうすればよいですか?apache kafkaでトピックを作成するには?

  • トピックを作成するときに定義するレプリカ/パーティションの数はいくつですか?

新しいプロデューサAPIでは、既存のトピック以外にメッセージを公開しようとすると、初めて失敗して正常に公開されます。

  • レプリカとパーティションとクラスタノードの数の関係を知りたいと思います。
  • メッセージを公開する前にトピックを作成する必要はありますか?一つのパーティションのみコンシューマ・グループ内の1つの消費者によって消費することができるので

答えて

11

kafkaブローカーを起動するときに、conf/server.propertiesファイルで一連のプロパティを定義できます。このファイルはキー値のプロパティファイルです。プロパティがtrue(デフォルト)の場合、auto.create.topics.enableです。kafkaは、既存のトピック以外にメッセージを送信すると自動的にトピックを作成します。 見つけることができるすべての設定オプションhere Imhoトピックを作成するための単純なルールは次のとおりです。レプリカの数は、所有しているノードの数以上でなければなりません。トピックの数は、クラスタ内のノード数の乗数でなければなりません。例: 9ノードクラスタ トピックには9個のパーティションと9個のレプリカ、または パーティション18個と9個のレプリカ、または パーティション36個と9個のレプリカなど

+0

短くてきれいな情報をありがとう – Ratha

+2

ノードの数と等しい数の複製を要求しても、クラスタは非常に壊れやすくなりませんか? 1つのノードが停止し、正しい数のレプリカを待たなければならないため、クラスタは突然応答しなくなります。 –

+0

@SethPaulsonノードがダウンするため、待機しません。このシナリオでは、リーダーは「同期している」レプリカのリストからそのリーダーを削除し、戻ったらそれを回復しようとします。詳細な説明については、[Kafka Documentation on Replication](https://kafka.apache.org/documentation/#replication)を参照してください。 –

14

パーティション番号は、トピックの平行を決定します。たとえば、あるトピックに対して10のパーティションと、コンシューマ・グループに20のコンシューマしかない場合、10人のコンシューマはアイドル状態であり、メッセージを受信しません。その数は実際にあなたのアプリケーションに依存しますが、1-1000はすべて合理的です。

レプリカ数は耐久性の要件によって決まります。レプリケーションファクタNのトピックの場合、Kafkaは、ログにコミットされたメッセージを失うことなく、N-1までのサーバ障害を許容することができます。 3つのレプリカは共通の構成です。もちろん、レプリカ番号はあなたのブローカー番号よりも小さいか等しい必要があります。

auto.create.topics.enableプロパティは、Kafkaがサーバー上でトピックの自動作成を有効にするときに制御します。これがtrueに設定されている場合、アプリケーションが存在しないトピックのメタデータを生成、使用、またはフェッチしようとすると、Kafkaはデフォルトの複製係数とパーティション数でトピックを自動的に作成します。本番ではオフにしてトピックを作成することをお勧めします。

+0

レプリカとパーティションと本当に混乱しています – Ratha

+0

このスレッドによると、https:// wwwによると、あなたはそのトピックを消費したり取得したりすることはできません。 mail-archive.com/[email protected]/msg09182.html - 「トピックは、プロデューサによって自動的に作成されますが、コンシューマは作成されません」。 http://kafka.apache.org/documentation.html#brokerconfigsの最新のドキュメントでは、作成するアクションを指定せずに「サーバー上のトピックの自動作成を有効にする」とだけ言います。 – Brian

1

を使用すると、複数のブローカーを持っている場合は、すべてのサーバー* .propertiesファイルに同じあなたを行うと、あなたのカフカ・サーバーを再起動して、あなたのserver.propertiesファイルでプロパティ auto.create.topics.enable=true を設定します。 ただし、サーバー* .properties num.partitions=intに適切な番号のパーティションを設定してください。そうしないと、後でパーティションを増やすとパフォーマンスの問題が発生します。

1

カフカの基本レベルはパーティションです。プロデューサとブローカ側の両方で、異なるパーティションへの書き込みを完全に並行して実行できます。心の中で

  • 複数のパーティションを維持する

    物事はより多くのファイルを開くには

  • 複数のパーティションが
  • 複数のパーティションは、エンドツーエンドのレイテンシ

としてを増大させることができる、使用できなく増加するハンドルが必要です経験則では、ブローカあたりのパーティション数を100 x b x r、 に制限することをお勧めします。bはブローカの数であり、rは複製係数です。あなたは、クラスタ内の9つのブローカー/ノードを持っている場合は、あなたのトピックは3つのレプリカ、または

  • 900パーティションおよび2つのレプリカ

  • +0

    ありがとうございます。あなたの答えが元の著者の礼儀に基づいている場合は、外部の情報源を挙げてください。私はあなたのためのリンクを追加しました。 –

    関連する問題