Apache Kafka for HDInsight (public preview) (1)
Microsoft Japan Data Platform Tech Sales Team
高木 英朗
分散型のストリーミングプラットフォームとして人気の Apache Kafka が Microsoft Azure の HDInsight に Kafka for HDInsight としてリリースされました。 本記事の投稿時点 (2017/01/23) ではパブリックプレビュー版となります。
HDInsight については以下をご参照ください。
- Microsoft Azure の Hadoop ディストリビューション HDInsight を使ってみよう! (1)
- Microsoft Azure の Hadoop ディストリビューション HDInsight を使ってみよう! (2)
- HDInsight にデータを取り込む方法
Apache Kafka とは?
Apache Kafka はリアルタイム アプリケーションなどによって生成される非常に大量のデータを処理するための、オープンソースの分散ストリーミングプラットフォームです。Pub/Sub 型のメッセージングモデルで、名前付きデータストリームの公開および購読ができる、メッセージブローカーを提供しています。
Kafka には 4 つのコア API があります。
- Producer API: トピックにストリームデータを配信
- Consumer API: トピックからストリームデータを購読
- Streams API: Spark Streaming や Storm などを使用せずにリアルタイムのストリーム処理(加工や変換等)を実行
- Connector API: 他のデータソース(RDBMS 等)に接続してデータをやり取り
From <https://kafka.apache.org/intro>
トピック
Kafka は「トピック」というストリームデータのカテゴリごとに送受信します。トピックはクラスタ内でパーティション化されます。パーティション数はトピック作成時に指定することができます。Producer によってレコードが書き込まれると、パーティションの後ろに追記していきます。パーティションをノード間で複製することでフォールト トレランスを実現することができます。各パーティション内でそれぞれシーケンス番号がふられて順序が保たれています。Producer はトピック内のどのパーティションにレコードを書くかを Round-Robin やレコード内の Key に基づいた関数に従って選択することができます。
Kafka は一般的なメッセージキューと異なり、Consumer によってレコードが読まれたからといってレコードは削除されず、Retention period に従って維持されます。
From <https://kafka.apache.org/intro>
パーティションと負荷分散
パーティションは負荷分散のための重要な機能です。Kafka は複数の Consumer 間でトピックの読み取りの負荷分散が可能です。Consumer Group と呼ばれるラベルを振り、同じグループを使用する 複数の Consumer で読み取りの負荷分散を実現します。Consumer はパーティション単位で読み取るため、Consumer Group にはパーティション数以上の Consumer を含めることはできません。トピック内の 1 つの パーティションにつき、Consumer Group 内の 1 つの Consumer が担当するような構成をとります。
From <https://kafka.apache.org/intro>
レコードの順序はパーティション内のみで保証されますが、パーティション間では保証されません。
Producer からのレコード書き込み時に分散方式に Key を指定することで、同じ Key を同じパーティションに書き込むことが可能なため、この仕組みを利用して対応すると良いでしょう。もし、レコード全体で順序保証したい場合はパーティションを分割せずに利用する必要があります。
Kafka for HDInsight
Kafka for HDInsight は Apache Kafka を HDInsight に機能追加したものです。HDInsight により、管理された、拡張性の高い、高可用性の Kafka サービスを Microsoft Azure 上で使用することが可能です。
From <https://azure.microsoft.com/ja-jp/services/hdinsight/apache-kafka/>
大規模システムで実績豊富な Kafka が HDInsight に登場したことで、様々な OSS 分析基盤との連携がしやすくなり、よりデータ活用の幅が広がります。Kafka を実際に導入している企業はこちらから参照することができます。
次回は実際に Kafka for HDInsight をデプロイして動かす方法についてご紹介します。
関連記事