ZooKeeperによる分散システム管理

Book description

ZooKeeperは、Apacheソフトウェア財団のオープンソースプロジェクトの1つで、大規模分散システムの協調動作を実現するツール。分散システムが協調動作するために必要なコア機能を提供することで、開発者の負荷を大幅に低減します。HiveやHadoopの新しいスケジューラであるYARNなど、多くのプロジェクト、企業、組織で利用されつつあります。分散システムの協調動作に頭を悩ませていた多くの開発者にとって福音となる、ZooKeeperを使った効果的な分散システムの管理手法、スマートな問題解決法を提示します。

Table of contents

  1.  大扉
  2.  原書大扉
  3.  クレジット
  4.  まえがき
  5.   想定する読者
  6.   本書の構成
  7.   本書の表記法
  8.   コード例の使用
  9.   ご意見とご質問
  10.   謝辞
  11. I部 ZooKeeperのコンセプトと基本
  12.  第1章 はじめに
  13.   1.1 ZooKeeperの使命
  14.    1.1.1 これまでZooKeeperなしでどうやってきたのか?
  15.    1.1.2 ZooKeeperがしてくれないこと
  16.    1.1.3 Apacheプロジェクト
  17.    1.1.4 ZooKeeperを用いた分散システムの構築
  18.   1.2 例:マスタ・ワーカアプリケーション
  19.    1.2.1 マスタの障害
  20.    1.2.2 ワーカの障害
  21.    1.2.3 通信の障害
  22.    1.2.4 タスクのまとめ
  23.   1.3 分散コーディネーションはなぜ難しいのか
  24.   1.4 ZooKeeperは成功した。但し書きつきで
  25.  第2章 ZooKeeperを制御する
  26.   2.1 ZooKeeperの基本
  27.    2.1.1 APIの概要
  28.    2.1.2 znodeのモード
  29.    2.1.3 監視と通知
  30.    2.1.4 バージョン
  31.   2.2 ZooKeeperのアーキテクチャ
  32.    2.2.1 ZooKeeperのクォラム
  33.    2.2.2 セッション
  34.   2.3 ZooKeeperを試してみよう
  35.    2.3.1 最初のZooKeeperセッション
  36.    2.3.2 セッションの状態とライフタイム
  37.    2.3.3 クォラムを用いたZooKeeper
  38.    2.3.4 基本機能要素の実装:ZooKeeperによるロック
  39.   2.4 マスタ・ワーカアプリケーションサンプルの実装
  40.    2.4.1 マスタの役割
  41.    2.4.2 ワーカ、タスク、割り当て
  42.    2.4.3 ワーカの役割
  43.    2.4.4 クライアントの役割
  44.   2.5 これだけは覚えよう
  45. II部 ZooKeeperを用いたプログラミング
  46.  第3章 ZooKeeper API入門
  47.   3.1 ZooKeeper CLASSPATHの設定
  48.   3.2 ZooKeeperセッションの作成
  49.    3.2.1 Watcherの実装
  50.    3.2.2 Watcherサンプルプログラムの実行
  51.   3.3 マスタ権限の取得
  52.    3.3.1 非同期でマスタ権限を取得
  53.    3.3.2 メタデータの設定
  54.   3.4 ワーカの登録
  55.   3.5 タスクのキューイング
  56.   3.6 管理クライアント
  57.   3.7 これだけは覚えよう
  58.  第4章 状態変化の取り扱い
  59.   4.1 一度きりのトリガ
  60.    4.1.1 ちょっと待てよ、一度限りのトリガだとイベントを取りこぼすのでは?
  61.   4.2 具体的に:監視の設定
  62.   4.3 一般的なパターン
  63.   4.4 マスタ・ワーカサンプル
  64.    4.4.1 マスタ権限の変化
  65.    4.4.2 マスタはワーカのリストが変化するのを待つ
  66.    4.4.3 マスタは新しいタスクを待って割り当てを行う
  67.    4.4.4 ワーカは新しいタスク割り当てを待つ
  68.    4.4.5 クライアントはタスクの実行結果を待つ
  69.   4.5 別のやり方:Multiop
  70.   4.6 明示的なキャッシュ管理の代わりとしての監視機構
  71.   4.7 順序の保証
  72.    4.7.1 書き込みの順序
  73.    4.7.2 読み出しの順序
  74.    4.7.3 通知の順序
  75.   4.8 集団効果と監視のスケーラビリティ
  76.   4.9 これだけは覚えよう
  77.  第5章 障害の取り扱い
  78.   5.1 障害からの回復
  79.    5.1.1 存在の監視と接続断イベント
  80.   5.2 回復不能な障害
  81.   5.3 リーダーの選出と外部資源
  82.   5.4 これだけは覚えよう
  83.  第6章 ZooKeeper使用上の注意
  84.   6.1 ACLの利用
  85.    6.1.1 組み込みの認証スキーム
  86.    6.1.2 SASLとKerberos
  87.    6.1.3 新しいスキームの追加
  88.   6.2 セッションの復旧
  89.   6.3 znodeが再作成されるとバージョンがリセットされる
  90.   6.4 sync
  91.   6.5 順序の保証
  92.    6.5.1 接続断があった場合の順序の保証
  93.    6.5.2 複数スレッドが同期APIを用いた場合の順序
  94.    6.5.3 同期呼び出しと非同期呼び出しを混在させた場合の順序
  95.   6.6 データと子ノードの制限
  96.   6.7 ZooKeeperサーバをアプリケーションに埋め込む
  97.   6.8 これだけは覚えよう
  98.  第7章 Cクライアント
  99.   7.1 開発環境の設定
  100.   7.2 セッションの開始
  101.   7.3 マスタのブートストラップ
  102.   7.4 リーダー権限の取得
  103.   7.5 タスクの割り当て
  104.   7.6 シングルスレッド版とマルチスレッド版
  105.   7.7 これだけは覚えよう
  106.  第8章 Curator:ZooKeeperの高レベルAPI
  107.   8.1 Curatorクライアント
  108.   8.2 フルーエントAPI
  109.   8.3 リスナ
  110.   8.4 Curatorでの状態変化
  111.   8.5 エッジケース
  112.   8.6 レシピ
  113.    8.6.1 リーダーラッチ
  114.    8.6.2 リーダーセレクタ
  115.    8.6.3 子ノードのキャッシュ
  116.   8.7 これだけは覚えよう
  117. III部 ZooKeeperの管理
  118.  第9章 ZooKeeperの内部構造
  119.   9.1 リクエスト、トランザクション、識別子
  120.   9.2 リーダーの選出
  121.   9.3 Zab:状態更新のブロードキャスト
  122.   9.4 オブザーバー
  123.   9.5 サーバの骨組み
  124.    9.5.1 スタンドアロンサーバ
  125.    9.5.2 リーダーサーバ
  126.    9.5.3 フォロワーとオブザーバー
  127.   9.6 ローカルストレージ
  128.    9.6.1 ログとディスクの使い方
  129.    9.6.2 スナップショット
  130.   9.7 サーバとセッション
  131.   9.8 サーバと監視
  132.   9.9 クライアント
  133.   9.10 シリアライズ
  134.   9.11 これだけは覚えよう
  135.  第10章 ZooKeeperの実行
  136.   10.1 ZooKeeperサーバの設定
  137.    10.1.1 基本設定
  138.    10.1.2 ストレージの設定
  139.    10.1.3 ネットワークの設定
  140.    10.1.4 クラスタの設定
  141.    10.1.5 認証と認可の設定
  142.    10.1.6 安全でない設定
  143.    10.1.7 ロギング
  144.    10.1.8 専用リソース
  145.   10.2 ZooKeeperアンサンブルの設定
  146.    10.2.1 多数決ルール
  147.    10.2.2 クォラムの設定
  148.    10.2.3 オブザーバー
  149.   10.3 再構成
  150.    10.3.1 クライアント接続文字列の管理
  151.   10.4 クォータ(割り当て制限)
  152.   10.5 マルチテナント
  153.   10.6 ファイルシステムレイアウトとフォーマット
  154.    10.6.1 トランザクションログ
  155.    10.6.2 スナップショット
  156.    10.6.3 エポックファイル
  157.    10.6.4 ZooKeeperデータの利用
  158.   10.7 4文字コマンド
  159.   10.8 JMXによるモニタリング
  160.    10.8.1 リモートからの接続
  161.   10.9 ツール
  162.   10.10 これだけは覚えよう
  163.  奥付

Product information

  • Title: ZooKeeperによる分散システム管理
  • Author(s): Flavio Junqueira, Benjamin Reed, 中田 秀基
  • Release date: October 2014
  • Publisher(s): O'Reilly Japan, Inc.
  • ISBN: 9784873116938

You might also like

book

パフォーマンス向上のためのデザイン設計

by Lara Callender Hogan, 西脇 靖紘, 星野 靖子

Webサイトのパフォーマンスは、「9:1でフロントエンド側のパフォーマンスが重要」だと言われています。パフォーマンスの向上には、インフラ側だけでなくフロントエンドの設計が大いに影響します。そこで本書は、Webサイトのパフォーマンス向上についてデザイン面からのアプローチに特化し、日々の業務に取り込めるCSS、HTMLのコーディングテクニックや、Webサイトで使用する画像を作成する際のヒントを紹介しています。また、デザイナーだけでなく、サイト運営に携わるすべてのスタッフがパフォーマンスへの意識を高めるための効果的な取り組みについても解説します。

book

Kubernetesで実践するクラウドネイティブDevOps

by John Arundel, Justin Domingus, 須田 一輝, 渡邉 了介

Kubernetesが標準プラットフォームであるクラウドネイティブの世界でアプリケーションを開発し運用する方法を解説する書籍です。Kubernetesの基本から、継続的デプロイ、機密情報管理、オブザーバビリティなどの高度なトピックを扱う本書は、サーバ、アプリケーション、サービスを管理するIT運用者、クラウドネイティブサービスの構築や移行を行う開発者必携の一冊です。

book

Python機械学習クックブック

by Chris Albon, 中田 秀基

Pythonによる機械学習を進める上で、頻繁に遭遇すると思われる200超の問題とその解決策を紹介。データ構造(ベクトル、行列、配列)、数値データ、カテゴリデータ、テキスト、画像、日時データの取り扱いといったデータ分析の基本から、特徴量抽出、次元削減、モデルの評価と選択、線形回帰、決定木、ランダムフォレスト、k-最近傍法、SVM、ナイーブベイズ、クラスタリング、ニューラルネットワーク、訓練済みモデルのセーブとロードなど、幅広い内容をカバー。巻末に日本語版付録「日本語テキストの取り扱い」を収録。「やりたいこと」「困っていること」に答えてくれる一冊です。

book

Javaパフォーマンス

by Scott Oaks, Acroquest Technology株式会社, 寺田 佳央, 牧野 聡

本書ではJVMのチューニングとJavaプラットフォームでの問題解決の双方からJavaパフォーマンスの「アート」と「サイエンス」を明らかにします。Javaアプリケーションのテスト手法やベンチマーク測定、パフォーマンス分析に必須のモニタリングツールを学んだうえで、さまざまな性能改善について議論します。JITコンパイル、ガベージコレクションというチューニングが大きな役割を果たす2つの仕組みについて最初に考察します。続いて、Javaプラットフォームのさまざまな側面で高いパフォーマンスを発揮するためのベストプラクティスを紹介。Java 8対応。