Kafka

[cover photo]
  • 2018年08月 発行
  • 312ページ
  • ISBN978-4-87311-849-9
  • フォーマット Print PDF
  • 原書: Kafka: The Definitive Guide

オライリー・ジャパンで書籍を購入:
定価3,888円

Ebook Storeで電子版を購入:
価格3,110円

本書では、リアルタイムのストリーム処理基盤であるKafkaを本番環境で動かし、その上に堅牢で高性能なシステムを構築するために必要な手順を解説します。 Kafkaのインストールや設定方法、Kafka APIを使った開発から、データパイプラインの構築、Kafkaの管理やモニタリングまで、Kafkaを導入する際の一連の流れを豊富なサンプルコードを使って解説します。またイベント駆動マイクロサービスのためのメッセージバスやストリーム処理アプリケーション、大規模データパイプラインなどのユースケースを詳述。Kafkaのレプリケーションやストレージレイヤなど、アーキテクチャと内部構造について解説しているため、Kafkaの仕組みを理解することができます。 Kafkaの開発者たちが執筆した本書は、ストリーム処理について学びたいエンジニア必携の一冊です。

関連書籍

Sparkによる実践データ解析
スケーラブルリアルタイムデータ分析入門
初めてのSpark
マイクロサービスアーキテクチャ

目 次
監訳者まえがき
序文
はじめに
本書の対象読者
本書の表記
サンプルコードの使用
謝辞

1章 Kafka概要
    1.1 Publish/Subscribeメッセージング
        1.1.1 始まり
        1.1.2 個別のキューイングシステム
    1.2 Kafka 入門
        1.2.1 メッセージとバッチ
        1.2.2 スキーマ
        1.2.3 トピックとパーティション
        1.2.4 ProducerとConsumer
        1.2.5 Brokerとクラスタ
        1.2.6 複数のクラスタ
    1.3 なぜKafkaなのか?
        1.3.1 複数のProducer
        1.3.2 複数のConsumer
        1.3.3 ディスクに基づく保存
        1.3.4 スケーラブル
        1.3.5 ハイパフォーマンス
    1.4 データエコシステム
        1.4.1 ユースケース
    1.5 Kafkaの起源
        1.5.1 LinkedInが抱える問題
        1.5.2 Kafka誕生
        1.5.3 オープンソース化
        1.5.4 名前
    1.6 Kafkaをはじめる

2章 Kafkaのインストール
    2.1 最初にすること
        2.1.1 OSの選択
        2.1.2Java のインストール
        2.1.3 Zookeeperのインストール
    2.2 Kafka Brokerのインストール
    2.3 Brokerの設定
        2.3.1 一般的なBroker
        2.3.2 トピックのデフォルト
    2.4 ハードウェアの選択
        2.4.1 ディスクのスループット
        2.4.2 ディスク容量
        2.4.3 メモリ
        2.4.4 ネットワーク	29
        2.4.5 CPU
    2.5 クラウド上のKafka
    2.6 Kafkaクラスタ
        2.6.1 Brokerをいくつにするか?
        2.6.2 Brokerの設定
        2.6.3 OSのチューニング
    2.7 本番環境での検討事項
        2.7.1 ガベージコレクタのオプション
        2.7.2 データセンターの配置
        2.7.3 Zookeeperにおけるアプリケーションのコロケーション
    2.8 まとめ

3章 Kafka Producer:Kafkaにメッセージを書き込む
    3.1 Producerの概要
    3.2 Kafka Producerの構築
    3.3 Kafkaにメッセージを送信する
        3.3.1 メッセージを同期送信する
        3.3.2 メッセージを非同期送信する
    3.4 Producerの設定
    3.5 シリアライザ
        3.5.1 カスタムシリアライザ
        3.5.2 Apache Avroによるシリアライズ
        3.5.3 KafkaでAvroレコードを使う
    3.6 パーティション
    3.7 レコードヘッダ
    3.8 古いProducer API
    3.9 まとめ

4章 Kafka Consumer:Kafkaからデータを読み出す
    4.1 Kafka Consumerの概念
        4.1.1 ConsumerとConsumerグループ
        4.1.2 Consumerグループとパーティションのリバランス
    4.2 Kafka Consumerの作成
    4.3 トピックの購読
    4.4 ポーリングループ
    4.5 Consumerの設定
    4.6 コミットとオフセット
        4.6.1 自動コミット
        4.6.2 現在のオフセットをコミットする
        4.6.3 非同期コミット
        4.6.4 同期コミットと非同期コミットの組み合わせ
        4.6.5 指定したオフセットをコミットする
    4.7 リバランスリスナー
    4.8 特定のオフセットを持つレコードの消費
    4.9 どうやって抜けるのか?
    4.10 デシリアライザ
    4.11 スタンドアロンConsumer:グループなしのConsumerを使用する理由とその方法
    4.12 古いConsumer API
    4.13 まとめ

5章 Kafkaの内部
    5.1 クラスタのメンバーシップ
    5.2 コントローラ
    5.3 レプリケーション
    5.4 リクエスト処理
        5.4.1 Produceリクエスト
        5.4.2 Fetchリクエスト
        5.4.3 その他のリクエスト
    5.5 物理ストレージ
        5.5.1 パーティション割り当て
        5.5.2 ファイル管理
        5.5.3 ファイル形式
        5.5.4 インデックス
        5.5.5 コンパクション
        5.5.6 コンパクションの仕組み
        5.5.7 削除されるイベント
        5.5.8 トピックはいつコンパクションされるのか?
    5.6 まとめ

6章 信頼性の高いデータ配信
    6.1 信頼性保証
    6.2 レプリケーション
    6.3 Brokerの設定
        6.3.1 レプリケーションファクタ
        6.3.2 クリーンでないリーダー選出
        6.3.3 最小のin-syncレプリカ数
    6.4 信頼性の高いシステムにおけるProducerの使用
        6.4.1 ACK送信
        6.4.2 Producerのリトライ設定
        6.4.3 追加のエラー処理
    6.5 信頼性の高いシステムでConsumerを使用する
        6.5.1 信頼性の高い処理のために重要なConsumer設定プロパティ
        6.5.2 Consumerで明示的にオフセットをコミットする
    6.6 システムの信頼性を検証する
        6.6.1 設定の検証
        6.6.2 アプリケーションの検証
        6.6.3 本番環境における信頼性モニタリング
    6.7 まとめ

7章 データパイプラインの構築
    7.1 データパイプライン構築時の検討事項
        7.1.1 適時性
        7.1.2 信頼性
        7.1.3 高・変動スループット
        7.1.4 データ形式
        7.1.5 変換
        7.1.6 セキュリティ
        7.1.7 障害処理
        7.1.8 結合と機敏さ
    7.2 Kafka ConnectとProducer/Consumerの使い分け
    7.3Kafka Connect
        7.3.1 Connectを実行する
        7.3.2 コネクタの例: ファイルソースとファイルシンク
        7.3.3 コネクタの例: MySQLからElasticsearch
        7.3.4 Connectの詳細
    7.4 Kafka Connectの代替
        7.4.1 他のデータストアのためのインジェストフレームワーク
        7.4.2 GUIベースのETLツール
        7.4.3 ストリーム処理フレームワーク
    7.5 まとめ

8章 クラスタ間データミラーリング
    8.1 クラスタ間ミラーリングのユースケース
    8.2 マルチクラスタアーキテクチャ
        8.2.1 データセンター間通信の現実
        8.2.2 Hub-and-Spokesアーキテクチャ
        8.2.3 Active-Activeアーキテクチャ
        8.2.4 Active-Standbyアーキテクチャ
        8.2.5 ストレッチクラスタ
    8.3 Apache KafkaのMirrorMaker
        8.3.1 設定方法
        8.3.2 MirrorMakerを本番環境に導入する
        8.3.3 MirrorMakerのチューニング
    8.4 他のクラスタ間ミラーリングソリューション
        8.4.1Uber uReplicator
        8.4.2 ConfluentのReplicator
    8.5 まとめ

9章 Kafkaの管理
    9.1 トピック操作
        9.1.1 新しいトピックの作成
        9.1.2 パーティションの追加
        9.1.3 トピックの削除
        9.1.4 クラスタ内の全トピックを一覧表示
        9.1.5 トピックの詳細情報を表示
    9.2 Consumerグループ
        9.2.1 グループの一覧表示と詳細表示
        9.2.2 グループの削除
        9.2.3 オフセット管理
    9.3 動的な設定変更
        9.3.1 トピックのデフォルト設定のオーバーライド
        9.3.2 クライアント設定のオーバーライド
        9.3.3 設定オーバーライドの表示
        9.3.4 設定オーバーライドの削除
    9.4 パーティション管理
        9.4.1 優先レプリカ選出
        9.4.2 パーティションのレプリカの変更
        9.4.3 レプリケーションファクタの変更
        9.4.4 ログセグメントのダンプ
        9.4.5 レプリカの検証
    9.5 ConsumerとProducer
        9.5.1 コンソールConsumer
        9.5.2 コンソールProducer
    9.6 クライアントACL
    9.7 安全でない操作
        9.7.1 クラスタコントローラを移動する
        9.7.2 パーティション移動の強制終了
        9.7.3 トピックの削除を取り消す
        9.7.4 手動でトピックを削除する
    9.8 まとめ

10章 Kafkaのモニタリング
    10.1 メトリクスの基礎
        10.1.1 メトリクスはどこにあるのか?
        10.1.2 内部測定か外部測定か
        10.1.3 アプリケーションの健全性チェック
        10.1.4 メトリクスの網羅性
        10.1.5 Kafka Brokerのメトリクス
        10.1.6 レプリケーション不足のパーティション(Under-Replicated Partitions)
        10.1.7 Brokerのメトリクス
        10.1.8 トピックとパーティションのメトリクス
        10.1.9 JVMモニタリング
        10.1.10 OSのモニタリング
        10.1.11 ロギング
    10.2 クライアントのモニタリング
        10.2.1 Producerのメトリクス
        10.2.2 Consumerのメトリクス
        10.2.3 クォータ
    10.3 遅延のモニタリング
    10.4 エンドツーエンドのモニタリング
    10.5 まとめ

11章 ストリーム処理
    11.1 ストリーム処理とは何か?
    11.2 ストリーム処理の概念
        11.2.1 時間
        11.2.2 状態
        11.2.3 ストリームとテーブルの二元性
        11.2.4 タイムウィンドウ
    11.3 ストリーム処理のデザインパターン
        11.3.1 シングルイベント処理
        11.3.2 ローカル状態を用いた処理
        11.3.3 マルチフェーズの処理/再パーティショニング
        11.3.4 外部ルックアップによる処理:ストリームとテーブルの結合
        11.3.5 ストリーミング結合
        11.3.6 順不同なイベント
        11.3.7 再処理
    11.4 Kafka Streamsの例
        11.4.1 ワードカウント
        11.4.2 株式市場統計
        11.4.3 クリックストリームのエンリッチメント
    11.5 Kafka Streams:アーキテクチャ概要
        11.5.1 トポロジの構築
        11.5.2 トポロジのスケーリング
        11.5.3 障害からの復旧
    11.6 ストリーム処理のユースケース
    11.7 ストリーム処理フレームワークの選択方法
    11.8 まとめ

付録A 他のOSへのKafkaインストール
    A.1 Windowsへのインストール
        A.1.1 Windows Subsystem for Linuxの利用
        A.1.2 ネイティブJavaを使う
    A.2 macOSへのインストール
        A.2.1 Homebrewを使う
        A.2.2 手動でインストールする

索引


Feedback

皆さんのご意見をお聞かせください。ご購入いただいた書籍やオライリー・ジャパンへのご感想やご意見、ご提案などをお聞かせください。より良い書籍づくりやサービス改良のための参考にさせていただきます。
[feedbackページへ]