Book description
ZooKeeperは、Apacheソフトウェア財団のオープンソースプロジェクトの1つで、大規模分散システムの協調動作を実現するツール。分散システムが協調動作するために必要なコア機能を提供することで、開発者の負荷を大幅に低減します。HiveやHadoopの新しいスケジューラであるYARNなど、多くのプロジェクト、企業、組織で利用されつつあります。分散システムの協調動作に頭を悩ませていた多くの開発者にとって福音となる、ZooKeeperを使った効果的な分散システムの管理手法、スマートな問題解決法を提示します。
Table of contents
- 大扉
- 原書大扉
- クレジット
- まえがき
- 想定する読者
- 本書の構成
- 本書の表記法
- コード例の使用
- ご意見とご質問
- 謝辞
- I部 ZooKeeperのコンセプトと基本
- 第1章 はじめに
- 1.1 ZooKeeperの使命
- 1.1.1 これまでZooKeeperなしでどうやってきたのか?
- 1.1.2 ZooKeeperがしてくれないこと
- 1.1.3 Apacheプロジェクト
- 1.1.4 ZooKeeperを用いた分散システムの構築
- 1.2 例:マスタ・ワーカアプリケーション
- 1.2.1 マスタの障害
- 1.2.2 ワーカの障害
- 1.2.3 通信の障害
- 1.2.4 タスクのまとめ
- 1.3 分散コーディネーションはなぜ難しいのか
- 1.4 ZooKeeperは成功した。但し書きつきで
- 第2章 ZooKeeperを制御する
- 2.1 ZooKeeperの基本
- 2.1.1 APIの概要
- 2.1.2 znodeのモード
- 2.1.3 監視と通知
- 2.1.4 バージョン
- 2.2 ZooKeeperのアーキテクチャ
- 2.2.1 ZooKeeperのクォラム
- 2.2.2 セッション
- 2.3 ZooKeeperを試してみよう
- 2.3.1 最初のZooKeeperセッション
- 2.3.2 セッションの状態とライフタイム
- 2.3.3 クォラムを用いたZooKeeper
- 2.3.4 基本機能要素の実装:ZooKeeperによるロック
- 2.4 マスタ・ワーカアプリケーションサンプルの実装
- 2.4.1 マスタの役割
- 2.4.2 ワーカ、タスク、割り当て
- 2.4.3 ワーカの役割
- 2.4.4 クライアントの役割
- 2.5 これだけは覚えよう
- II部 ZooKeeperを用いたプログラミング
- 第3章 ZooKeeper API入門
- 3.1 ZooKeeper CLASSPATHの設定
- 3.2 ZooKeeperセッションの作成
- 3.2.1 Watcherの実装
- 3.2.2 Watcherサンプルプログラムの実行
- 3.3 マスタ権限の取得
- 3.3.1 非同期でマスタ権限を取得
- 3.3.2 メタデータの設定
- 3.4 ワーカの登録
- 3.5 タスクのキューイング
- 3.6 管理クライアント
- 3.7 これだけは覚えよう
- 第4章 状態変化の取り扱い
- 4.1 一度きりのトリガ
- 4.1.1 ちょっと待てよ、一度限りのトリガだとイベントを取りこぼすのでは?
- 4.2 具体的に:監視の設定
- 4.3 一般的なパターン
- 4.4 マスタ・ワーカサンプル
- 4.4.1 マスタ権限の変化
- 4.4.2 マスタはワーカのリストが変化するのを待つ
- 4.4.3 マスタは新しいタスクを待って割り当てを行う
- 4.4.4 ワーカは新しいタスク割り当てを待つ
- 4.4.5 クライアントはタスクの実行結果を待つ
- 4.5 別のやり方:Multiop
- 4.6 明示的なキャッシュ管理の代わりとしての監視機構
- 4.7 順序の保証
- 4.7.1 書き込みの順序
- 4.7.2 読み出しの順序
- 4.7.3 通知の順序
- 4.8 集団効果と監視のスケーラビリティ
- 4.9 これだけは覚えよう
- 第5章 障害の取り扱い
- 5.1 障害からの回復
- 5.1.1 存在の監視と接続断イベント
- 5.2 回復不能な障害
- 5.3 リーダーの選出と外部資源
- 5.4 これだけは覚えよう
- 第6章 ZooKeeper使用上の注意
- 6.1 ACLの利用
- 6.1.1 組み込みの認証スキーム
- 6.1.2 SASLとKerberos
- 6.1.3 新しいスキームの追加
- 6.2 セッションの復旧
- 6.3 znodeが再作成されるとバージョンがリセットされる
- 6.4 sync
- 6.5 順序の保証
- 6.5.1 接続断があった場合の順序の保証
- 6.5.2 複数スレッドが同期APIを用いた場合の順序
- 6.5.3 同期呼び出しと非同期呼び出しを混在させた場合の順序
- 6.6 データと子ノードの制限
- 6.7 ZooKeeperサーバをアプリケーションに埋め込む
- 6.8 これだけは覚えよう
- 第7章 Cクライアント
- 7.1 開発環境の設定
- 7.2 セッションの開始
- 7.3 マスタのブートストラップ
- 7.4 リーダー権限の取得
- 7.5 タスクの割り当て
- 7.6 シングルスレッド版とマルチスレッド版
- 7.7 これだけは覚えよう
- 第8章 Curator:ZooKeeperの高レベルAPI
- 8.1 Curatorクライアント
- 8.2 フルーエントAPI
- 8.3 リスナ
- 8.4 Curatorでの状態変化
- 8.5 エッジケース
- 8.6 レシピ
- 8.6.1 リーダーラッチ
- 8.6.2 リーダーセレクタ
- 8.6.3 子ノードのキャッシュ
- 8.7 これだけは覚えよう
- III部 ZooKeeperの管理
- 第9章 ZooKeeperの内部構造
- 9.1 リクエスト、トランザクション、識別子
- 9.2 リーダーの選出
- 9.3 Zab:状態更新のブロードキャスト
- 9.4 オブザーバー
- 9.5 サーバの骨組み
- 9.5.1 スタンドアロンサーバ
- 9.5.2 リーダーサーバ
- 9.5.3 フォロワーとオブザーバー
- 9.6 ローカルストレージ
- 9.6.1 ログとディスクの使い方
- 9.6.2 スナップショット
- 9.7 サーバとセッション
- 9.8 サーバと監視
- 9.9 クライアント
- 9.10 シリアライズ
- 9.11 これだけは覚えよう
- 第10章 ZooKeeperの実行
- 10.1 ZooKeeperサーバの設定
- 10.1.1 基本設定
- 10.1.2 ストレージの設定
- 10.1.3 ネットワークの設定
- 10.1.4 クラスタの設定
- 10.1.5 認証と認可の設定
- 10.1.6 安全でない設定
- 10.1.7 ロギング
- 10.1.8 専用リソース
- 10.2 ZooKeeperアンサンブルの設定
- 10.2.1 多数決ルール
- 10.2.2 クォラムの設定
- 10.2.3 オブザーバー
- 10.3 再構成
- 10.3.1 クライアント接続文字列の管理
- 10.4 クォータ(割り当て制限)
- 10.5 マルチテナント
- 10.6 ファイルシステムレイアウトとフォーマット
- 10.6.1 トランザクションログ
- 10.6.2 スナップショット
- 10.6.3 エポックファイル
- 10.6.4 ZooKeeperデータの利用
- 10.7 4文字コマンド
- 10.8 JMXによるモニタリング
- 10.8.1 リモートからの接続
- 10.9 ツール
- 10.10 これだけは覚えよう
- 奥付
Product information
- Title: ZooKeeperによる分散システム管理
- Author(s):
- Release date: October 2014
- Publisher(s): O'Reilly Japan, Inc.
- ISBN: 9784873116938
You might also like
book
パフォーマンス向上のためのデザイン設計
Webサイトのパフォーマンスは、「9:1でフロントエンド側のパフォーマンスが重要」だと言われています。パフォーマンスの向上には、インフラ側だけでなくフロントエンドの設計が大いに影響します。そこで本書は、Webサイトのパフォーマンス向上についてデザイン面からのアプローチに特化し、日々の業務に取り込めるCSS、HTMLのコーディングテクニックや、Webサイトで使用する画像を作成する際のヒントを紹介しています。また、デザイナーだけでなく、サイト運営に携わるすべてのスタッフがパフォーマンスへの意識を高めるための効果的な取り組みについても解説します。
book
Kubernetesで実践するクラウドネイティブDevOps
Kubernetesが標準プラットフォームであるクラウドネイティブの世界でアプリケーションを開発し運用する方法を解説する書籍です。Kubernetesの基本から、継続的デプロイ、機密情報管理、オブザーバビリティなどの高度なトピックを扱う本書は、サーバ、アプリケーション、サービスを管理するIT運用者、クラウドネイティブサービスの構築や移行を行う開発者必携の一冊です。
book
Python機械学習クックブック
Pythonによる機械学習を進める上で、頻繁に遭遇すると思われる200超の問題とその解決策を紹介。データ構造(ベクトル、行列、配列)、数値データ、カテゴリデータ、テキスト、画像、日時データの取り扱いといったデータ分析の基本から、特徴量抽出、次元削減、モデルの評価と選択、線形回帰、決定木、ランダムフォレスト、k-最近傍法、SVM、ナイーブベイズ、クラスタリング、ニューラルネットワーク、訓練済みモデルのセーブとロードなど、幅広い内容をカバー。巻末に日本語版付録「日本語テキストの取り扱い」を収録。「やりたいこと」「困っていること」に答えてくれる一冊です。
book
Javaパフォーマンス
本書ではJVMのチューニングとJavaプラットフォームでの問題解決の双方からJavaパフォーマンスの「アート」と「サイエンス」を明らかにします。Javaアプリケーションのテスト手法やベンチマーク測定、パフォーマンス分析に必須のモニタリングツールを学んだうえで、さまざまな性能改善について議論します。JITコンパイル、ガベージコレクションというチューニングが大きな役割を果たす2つの仕組みについて最初に考察します。続いて、Javaプラットフォームのさまざまな側面で高いパフォーマンスを発揮するためのベストプラクティスを紹介。Java 8対応。