Submit Search
Tour of distributed systems 1 - ZooKeeper
4 likes
1,849 views
Chris Birchall
1 of 29
Download now
Downloaded 21 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
More Related Content
What's hot
(20)
PDF
Yahoo!ボックスAPI Hackathon向け資料
Yahoo!デベロッパーネットワーク
PDF
Yahoo!ボックスAPI Hackday資料
Yahoo!デベロッパーネットワーク
PDF
LastaFluteに移行したFessとElasticsearch+ESFluteによるDBFlute環境
Shinsuke Sugaya
PDF
【メモ】一般的に設計書に定義される項目例
Hirokazu Yatsunami
PDF
20091030cakephphandson 02
Yusuke Ando
PDF
2019-10-18 JXUG Xamarin.Essentials - #3 File System Helpers
Takeshi Fujimoto
PDF
R以外の研究ツール
弘毅 露崎
PDF
Elasticsearch入門 pyfes 201207
Jun Ohtani
PPTX
Nio2
Appresso Engineering Team
PDF
Alfrescoのカスタムテーブルの使い方
Jun Terashita
PDF
[Alfresco]ドキュメントライブラリのUIカスタマイズ
Jun Terashita
PDF
コード読経会報告書
Masahiko Toyoshi
PDF
2019-09-20 JXUG Introduction to Xamarin.Essentials #2 Preferences
Takeshi Fujimoto
PDF
Fig
Tadayasu Yotsu
PDF
DeclarativeSql
Takaaki Suzuki
PDF
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
Etsuji Nakai
PDF
Teclab3
Eikichi Yamaguchi
PDF
VPとSPIDERを使ったMySQL運用
Ryuta Kamizono
PDF
Sc2009autumn s2robot
Shinsuke Sugaya
PPTX
しょしんしゃのためのhello world
wata2ki
Yahoo!ボックスAPI Hackathon向け資料
Yahoo!デベロッパーネットワーク
Yahoo!ボックスAPI Hackday資料
Yahoo!デベロッパーネットワーク
LastaFluteに移行したFessとElasticsearch+ESFluteによるDBFlute環境
Shinsuke Sugaya
【メモ】一般的に設計書に定義される項目例
Hirokazu Yatsunami
20091030cakephphandson 02
Yusuke Ando
2019-10-18 JXUG Xamarin.Essentials - #3 File System Helpers
Takeshi Fujimoto
R以外の研究ツール
弘毅 露崎
Elasticsearch入門 pyfes 201207
Jun Ohtani
Nio2
Appresso Engineering Team
Alfrescoのカスタムテーブルの使い方
Jun Terashita
[Alfresco]ドキュメントライブラリのUIカスタマイズ
Jun Terashita
コード読経会報告書
Masahiko Toyoshi
2019-09-20 JXUG Introduction to Xamarin.Essentials #2 Preferences
Takeshi Fujimoto
Fig
Tadayasu Yotsu
DeclarativeSql
Takaaki Suzuki
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
Etsuji Nakai
Teclab3
Eikichi Yamaguchi
VPとSPIDERを使ったMySQL運用
Ryuta Kamizono
Sc2009autumn s2robot
Shinsuke Sugaya
しょしんしゃのためのhello world
wata2ki
Viewers also liked
(16)
PDF
Hadoop 2.6の最新機能(Cloudera World Tokyo 2014 LT講演資料)
NTT DATA OSS Professional Services
PDF
HTrace: Tracing in HBase and HDFS (HBase Meetup)
NTT DATA OSS Professional Services
PDF
Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)
NTT DATA OSS Professional Services
PDF
Hadoop2.6の最新機能+
NTT DATA OSS Professional Services
PDF
Hadoop ecosystem NTTDATA osc15tk
NTT DATA OSS Professional Services
PDF
Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)
NTT DATA OSS Professional Services
PDF
Apache Spark 1000 nodes NTT DATA
NTT DATA OSS Professional Services
PDF
Sparkをノートブックにまとめちゃおう。Zeppelinでね!(Hadoopソースコードリーディング 第19回 発表資料)
NTT DATA OSS Professional Services
PDF
Apache Hadoop 2.8.0 の新機能 (抜粋)
NTT DATA OSS Professional Services
PDF
データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~
NTT DATA OSS Professional Services
PDF
Hadoopのシステム設計・運用のポイント
Cloudera Japan
PDF
日々進化するHadoopの 「いま」
NTT DATA OSS Professional Services
PDF
Spark MLlibではじめるスケーラブルな機械学習
NTT DATA OSS Professional Services
PDF
Hadoopの概念と基本的知識
Ken SASAKI
PDF
ちょっと理解に自信がないなという皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
hamaken
PDF
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
hamaken
Hadoop 2.6の最新機能(Cloudera World Tokyo 2014 LT講演資料)
NTT DATA OSS Professional Services
HTrace: Tracing in HBase and HDFS (HBase Meetup)
NTT DATA OSS Professional Services
Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)
NTT DATA OSS Professional Services
Hadoop2.6の最新機能+
NTT DATA OSS Professional Services
Hadoop ecosystem NTTDATA osc15tk
NTT DATA OSS Professional Services
Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)
NTT DATA OSS Professional Services
Apache Spark 1000 nodes NTT DATA
NTT DATA OSS Professional Services
Sparkをノートブックにまとめちゃおう。Zeppelinでね!(Hadoopソースコードリーディング 第19回 発表資料)
NTT DATA OSS Professional Services
Apache Hadoop 2.8.0 の新機能 (抜粋)
NTT DATA OSS Professional Services
データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~
NTT DATA OSS Professional Services
Hadoopのシステム設計・運用のポイント
Cloudera Japan
日々進化するHadoopの 「いま」
NTT DATA OSS Professional Services
Spark MLlibではじめるスケーラブルな機械学習
NTT DATA OSS Professional Services
Hadoopの概念と基本的知識
Ken SASAKI
ちょっと理解に自信がないなという皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
hamaken
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
hamaken
Ad
More from Chris Birchall
(11)
PDF
Scala.js & friends: SCALA ALL THE THINGS
Chris Birchall
PDF
Rust 超入門
Chris Birchall
PDF
Tour of Distributed Systems 3 - Apache Kafka
Chris Birchall
PPTX
Tour of distributed systems 2 - Cassandra
Chris Birchall
PDF
Guess the Country - Playing with Twitter Streaming API
Chris Birchall
PDF
ScalaCache: simple caching in Scala
Chris Birchall
PDF
Hydra
Chris Birchall
PDF
Load testing with gatling
Chris Birchall
PDF
Debugging and Testing ES Systems
Chris Birchall
PDF
Phone Home: A client-side error collection system
Chris Birchall
PDF
Branching Strategies: Feature Branches vs Branch by Abstraction
Chris Birchall
Scala.js & friends: SCALA ALL THE THINGS
Chris Birchall
Rust 超入門
Chris Birchall
Tour of Distributed Systems 3 - Apache Kafka
Chris Birchall
Tour of distributed systems 2 - Cassandra
Chris Birchall
Guess the Country - Playing with Twitter Streaming API
Chris Birchall
ScalaCache: simple caching in Scala
Chris Birchall
Hydra
Chris Birchall
Load testing with gatling
Chris Birchall
Debugging and Testing ES Systems
Chris Birchall
Phone Home: A client-side error collection system
Chris Birchall
Branching Strategies: Feature Branches vs Branch by Abstraction
Chris Birchall
Ad
Tour of distributed systems 1 - ZooKeeper
1.
Apache ZooKeeper 分散システムのツアー #1 Chris 2014/7/1 #m3dev https://github.com/m3dev/distrib-systems-tour
2.
Apache ZooKeeper http://zookeeper.apache.org/ 元Hadoop子プロジェクト (Yahoo!発) 2008年(?)からApacheトップレベル
3.
ZooKeeperとは “ZooKeeper is a
centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services.” と言うと…?
4.
ZooKeeper とは ZKの用途・使い道を考える前、 まず基本機能を知っておくと良い
5.
基本機能1:ツリー構造 ZKはファイルシステムっぽいツリー構造を提供す る。 ただし「フォルダ」と「ファイル」を区別しない。どちら も「ZNode」と呼ぶ。 ZNodeはデータも入れ子も持てる。
6.
基本機能1:ツリー構造 / /hoge - data: “hello
world” /hoge/foo - data: “I am a foo” /hoge/bar - data 無し
7.
ZNodeデータについて ● 少量の想定(最大1MB) ○ 大量のデータを持たせると性能が著しく落ちる ●
バイナリデータ(byte[]) ○ ZKは中身を気にしない ○ 文字列とかJSONが一般的
8.
ZNodeデータ:バージョン管理 ZNodeのデータを変更すると、 バージョン番号がインクリメントされる。 バージョンを指定し条件付き操作ができる。 (Compare-and-swapやETagのイメージ) “まだバージョン123であれば、 データをこれに更新してください”
9.
基本機能2:ZNode監視 ● ZNode作成・削除 ● ZNodeデータ変更 ●
ZNodeの子ノードの作成・削除 のウォッチを登録できる 注意:一度通知を発行したらウォッチは消え、再登 録が必要。 その際、イベントを見落とすかもしれない。
10.
基本機能3:Ephemeral(短命)node ZNodeを作成したクライアントのセッション終了時 に自動化に消える、特殊なZNode ZNode監視と組み合わせると便利: 1. クライアントAが短命Node /hoge
を作成 2. クライアントBがウォッチを登録 3. クライアントAの突然の死! 4. Nodeが消えて、Bさんに通知が飛ぶ
11.
基本機能4:シーケンシャルZNode 一意のZnode名を保証する仕組み “create sequential node
/hoge/foo-” → /hoge/foo-0000000000 “create sequential node /hoge/foo-” → /hoge/foo-0000000001 短命+シーケンシャルなZNodeも作れる。
12.
基本機能4:可用性 ZKを複数台のクラスタで運用できる。 (1台構成もアプリ組み込みでも可能) 書き込みはクォーラム(Ex:3台)にレプリケートし てからACKする。 (Split-brain問題を防ぐため クォーラムをN/2以上にしなさい)
13.
基本機能4:可用性 ZK1 ZK2 ZK4
ZK5ZK3 クライアント WRITE ACK
14.
ZooKeeperの使い道 以上の基本機能を使って何ができるか? ● 設定情報の一元管理 ● サービス登録・ディスカバリ ●
リーダー選挙 ● 分散ロック ● バリアー ● FIFOキュー
15.
使い道:設定情報の一元管理 多数のマシンの設定管理は面倒。 ZKに入れれば一元管理できて便利。 アプリ アプリ アプリ
アプリ アプリ アプリ ZK 設定
16.
使い道:サービス登録・ディスカバリ Hoge サービス Hoge サービス アプリ ZK Hoge サービス 登録 ”Hogeサービスをください”
17.
使い道:サービス登録・ディスカバリ サービス登録: ● 短命ノード /hogeServices/{id}
を作成 ○ 短命だからインスタンスが落ちたら消える ● データ=サービスのIPアドレス、など ディスカバリ: ● /hogeServices/ の子供一覧を取得 ● 利用するインスタンスを選ぶ ○ ラウンドロビン、など
18.
使い道:リーダー選挙 Hoge サービス Hoge サービス ZK Hoge サービス リーダー リソース 書き込み 読み込み only
19.
使い道:リーダー選挙 リーダー立候補: ● 短命+シーケンシャルZNodeを作成 ○ /election/myId_000000N ●
Nより小さいノードが ○ 無い → やったー!自分がリーダー ○ ある → 誰かが既にリーダー ■ そのZNodeをウォッチする ■ 消えたら自分がリーダーになる
20.
使い道:分散ロック 基本的にリーダー選挙と同じ仕組み
21.
使い道:バリアー バリアーをセット: ● ZNode /barrier
を作成 バリアーをチェック: ● /barrier の有無をチェック ○ 無い → 進んでOK ○ ある → ウォッチを設定 ■ ZNodeが削除されたら進んでOK
22.
使い道:FIFOキュー Consumer Producer ZK Producer コンシューマが1個しかない想定
23.
使い道:FIFOキュー 要素の追加: ● シーケンシャルZNodeを作成 ○ /queue/0000000N ○
データ=要素自体 要素の取得・処理: ● /queue/ の子供一覧を取得 ● 名前昇順で処理する ○ 処理したらZNodeを削除
24.
ZooKeeper インタフェース ● TCP(defaultポート=2181) ●
API ○ Java ○ Ruby (zk gem) ○ ... ● CLI ツール ○ ZooKeeperのtarballに入っている
25.
Apache Curator http://curator.apache.org/ ZKの標準APIは正直、面倒くさい Curatorは使い勝手の良いAPIでラップする +よく使うレシピが実装してある +いくつかの便利ユーティリティ
26.
その他のおもしろプロジェクト Ordasity ● https://github.com/boundary/ordasity ● クラスタでの自動ワーク分担
27.
強い依存は要注意 http://engineering.pinterest. com/post/77933733851/zookeeper- resilience-at-pinterest ZKをSPoFにするな!
28.
Quick start (OS
X) $ brew install zookeeper $ zkServer start $ zkCli Connecting to localhost:2181 Welcome to ZooKeeper! [zk: localhost:2181(CONNECTED) 0] ls / [zookeeper] [zk: localhost:2181(CONNECTED) 1] create /hoge "hello" Created /hoge [zk: localhost:2181(CONNECTED) 2] get /hoge "hello" cZxid = 0x8 ctime = Sun Jun 29 12:54:03 JST 2014 ...
29.
ハンズオン! https://github.com/m3dev/distrib-systems-tour ひな形プロジェクト ● Skinny, Play1 アイデア ●
遅延タスク(メール配信とか)の管理 ● サービスディスカバリを使ってみる ● バリアー+WebSocketsで何かを作る
Download