download.microsoft.com

クラウド ネーティブな
データ アーキテクチャーの
選択のポイント
萩原正義 @masayh
日本マイクロソフト株式会社
このセッションの目的
1. 過去と現在の技術の誤謬を明らかにする
2. Big Data の “次” の課題を明らかにする
3. クラウドネーティブなアーキテクチャー
の方向性を与える
* 筆者(≠ Microsoft 社の見解)の解釈を含みます
ラムダアーキテクチャ
2
Speed
レイヤー
5
1
StreamInsight
Serving
レイヤー
Batch
レイヤー
4
3
hadoop
HDFS
NoSQL/RDB
Visualization
“Big Data” トレンド
• Hadoop、NoSQL、ストリームデータ、データウェアハウスの
最適な選択
• ラムダアーキテクチャー
• In-memory データモデル
• ワークロード毎のマルチテナント化をする分散システム基盤
• In-memory データベース
• ログ(リカバリー)、複製、同時性制御、インデックス
• SSD、不揮発メモリー、高速ネットワークなどのハードウェア
の進化
いくつかの先進事例
• アーキテクチャーの革新
• N-tier モデルから、Shared
nothing、P2P、多重の垂直クラ
スター構成、クラスターのマルチ
テナント化、geo-replication な
ど
• プログラミングモデルの革新
• Actor モデル、dataflow、
reactive、agent 指向など
• 分散、データモデル統合
• YARN、Mesos
• new SQL(VoltDB、NuoDB、Hadapt
など)
• Anti-caching(H-Store)
• Hyder
• ハードウェア技術
• Amdahl の法則
• 2.75億 iOPS の SSD (200 iOPS の
HDD の 137 万台相当)
http://www.hpcwire.com/hpcwire/2013-1018/small_tacc_cluster_set_to_shatter_iops_ceiling.html?featured=top
トランザクションの復権
• あらゆる複合的な例外、障害時を想定した “正しい” データ
操作の実行を一般プログラマが保証できるか?
“No ACID Equals No Interest”
(Michael Stonebraker 博士)
Horizontal partitioning (sharding)
Log
• DC 間のまたがる規模までの分散トランザクション
• 耐障害性、可用性、レイテンシー、スケーラビリティを実現
• CAP 定理の克服
• 実行一貫性、セッション内順序、投入順序の保証 など
• まだ、OSS では実現できていない
1-7
714
Shards/Partitions
...
...
...
アジェンダ
• 障害を想定して、一貫性を取り、しかも低レイテンシーを実現
• 耐障害性の保証
• 複製の一貫性(strong consistency)
• ネットワーク遅延(ネットワークの非同期性)が前提
• 分散トランザクションのデータ項目間の一貫性(2PC などによる)と、各データ項目の
複製との同一性を組み合わせる
• 高可用性の維持、スケーラブルで高スループットを条件にした一貫性
(serializability)の保証
• 低レイテンシーの保証
• 新しいトランザクション概念による再構築
• 一貫性を弱くする方向から強くする方向へ
Paxos
分散システムの耐障害性を保証する基本アルゴリズム
複製による耐障害性の原則
• 複製を常に一貫性を保つ
• 複製の非一貫性を許容
ネットワーク非同期
性(遅延予見不可)
からこちらが現実的
1つでも遠い DC に
複製が存在する場合
は? 例、火星
障害、応答なし
正常動作
f = 許容される
障害の個数
遠い DC にある複
製はほとんど合意応
答が採用させず、
DR 上問題では?
f+1
2f+1
ノード、ネットワーク障害がある合意
全体 N 個のうち、
W 個だけ一貫性が
取れていれば他は
非一貫でいい
R
R
W
N=5, W=3, R=3, f=2
(1) W+R > N
(2) W > N/2
リーダー(正常)
障害、応答なし
正常動作
W
W’
ネットワーク遅延がある合意
ノードに到着順に ACK
を返すことで、書き込み
クォーラムを達成
m2
ACK NG
p
NG
NG
これを prepare の
読み取り(R)と
accept の書き込み
(W)の2回行うの
が、Basic Paxos の
2相プロトコル
q
r
s
t
ACK
m1
ACK
m2 は m1 より先に到着し
ているが、各ノードへの到
着時間のばらつきで、m1
が先に合意を得る
可用性と一貫性のトレードオフ
ネットワーク障害を例に
過半数のサブネット
でのみ、新しいリー
ダーを選出可能
CAP 定理の CP
古いリーダーが半数
以下のサブネットに
あった場合は、合意
を進められない
ノード障害時の引き継ぎ
• ノードやネットワーク障害を検知したノードが過半数ノードからリーダーの合意
を得て、新リーダーになる
• 新リーダーは、過半数ノードが属するサブネットに所属し、スプリットブレインを回避
• 現リーダーが過半数ノードが属するサブネットになければ、新しい合意は得られない = 過半数に満
たないサブネットでは可用性がない
• 同時に複数ノードがリーダーになることもありえる
• 障害回復後にもデータ更新が有効(更新の衝突問題がない)
• 新リーダーは古いリーダーが合意済み、処理中の合意を引き継げる
リーダー(正常)
障害、応答なし
正常動作
W
R
最新の書き込み
が読めるノード
(正常)
全順序化
• 分散システム全体で1個以上の最新の書き込みを保持
• 分散システム全体で共有するグローバル変数(外部からは見えない)
• 分散プロトコル上、どこかのタイミングでグローバル化が必要
• 衝突するデータ操作順の保持が必要(例、書き込み順)
• グローバル化に伴い順序化(全順序化)
同一スロット番号への
書き込み W’ はブロック
なしに排他されて、再試行
W’
PREPARE
(読み取りフェーズ)
最新の書き込みを
読み取り、その要
求番号+1を新しい
要求として要求
リーダー(正常)
障害、応答なし
正常動作
W
ACCEPT
(書き込みフェーズ)
R
最新の書き込み
が読めるノード
(正常)
Serializability
同時実行トランザクションのスケジュールの正しさを保証する基準ルール
Strong consistency と serializability
• 耐障害性、可用性を持つ strong consistency
• ノード障害、ネットワーク障害、ネットワーク遅延で合意可能
• リーダーの failover、failover 中の障害でも合意結果が引き継げる
• 要求の合意の全順序化
• ノード障害によってデッドロックしない
• 合意結果には、半数以下のノードサブネットからの要求は影響しない(スプ
リットブレインを起こさない)
• Strong consistency はコミット済みトランザクション、トランザク
ションの複製によるリカバリーを、serializability は同時実行トラン
ザクションのスケジュールを管理
• 複製によるバックアップされるログに基づき、トランザクションは
serializability により正しく実行される
Scheduler/Lock manager の構造
分散トランザクション実行
複製制御プロトコル
分散同時性制御
プロトコル
ローカルリカバリー
プロトコル
Data Item
List of Locks Wait List
x
[T1,r] [T2,r]
[T3,w]
y
[T4,w]
[T5,w] [T6, r]
Snapshot isolation
• 読み取りと書き込みは互いにブロックしない
First Committer Wins ルール
Time Operations in tx1
• トランザクション開始時点にコミット済みト
ランザクションのスナップショットを取る
100 BEGIN TRAN
• データ設計上の考慮
102 …
Time
100
101
102
Contents of Operations in
Tab
tx1
r1
BEGIN TRAN
r1
…
SELECT FROM
r1
Tab
103
104
r1, r2
r1, r2
105
r1, r2
106
r1, r2
Operations in
tx2
BEGIN TRAN
INSERT Tab
VALUES (r2)
* returns (r1)
…
COMMIT
…
SELECT FROM
Tab
* returns (r1)
COMMIT
101 …
Operations in tx2
BEGIN TRAN
UPDATE r1 –
success
UPDATE r1 – error
…
– tx1 is aborted
104
COMMIT – success
103
読み取りトランザクションの介在による異常
T1 (Y を更新)
T2 (X を更新)
更新後の Y のスナップショット
T3 (X,Y 読み取り)
http://blogs.technet.com/b/dataplatforminsider/archive/2013/10/01/in-memory-oltp-programmability-concurrency-and-transaction-isolation-for-memory-optimized-tables.aspx
Snapshot のライフタイム
時間
同時実行トラ
ンザクション
同時実行トランザクション
同時実行トランザクション
論理的な読み取り
複製全体で単一コミット順序を強制
コミット済みト
ランザクション
Snapshot の
済み取りセット/
書き込みセット
の更新のコミット時点
論理的な書き込み
(コミット順の協調解決)
Snapshot isolation を実行する現トランザクション
トランザクション 最初の読み取り 複製にすべての読み取り 書き込み
開始時点
の実行時点
セットのコミット更新が の実行時点
伝搬した時点
コミット済みを待機しないので
低レイテンシー、高スループット
弱い一貫性(投機的実行)
読み取り後の更新の確率が
低くアボート率が下がる
すべての分散
トランザクション
参加者への書き込み
が終了し、consistent
な snapshot が完成
複製の snapshot
Replicated (Serializable) Snapshot Isolation
• 論理的な書き込みでブロード
キャストで複製に伝搬
• ローカルと他のリモートでの同
時実行トランザクションとのス
ケジュールを検証
• 事例:
• T1=w1(x), T2=w2(y),
T3=w3(x), T4=r4(x), r4(y),
T5=r5(x), r5(y)
• T1,T4 は RA ローカル、T2, T3,
T5 は RB ローカル
出典: Snapshot Isolation and Integrity Constraints in Replicated Databases
一貫性を調整する
• Snapshot には3段階の正しい一貫性がある
• 段階の強さに応じて実行性能 vs. 正しさのトレードオフがある
• 弱い方から(非 serializable であってもすべて可能)
• コミット済みトランザクション(avoiding cascading aborts)
• コミット順序で更新が順序化(monotonicity)
• 読み取りセットの複数データ項目間のコミット済みトランザクション
からの読み取り一貫性(consistent)
• Serializable と Snapshot Isolation を組み合わせる
• Isolation level をワークロードに割り当てる
• Read-only トランザクションへの考慮
最新動向
地球規模クラウドへの適用例
耐障害性、高可用性、低レイテンシーを維持しつつ
Geo-replication とは
• 次世代の大規模 Web サービス
の方向性
• ハイブリッドクラウドの進展
• Geo-replication の課題とは?
• 可用性のための複製とその一貫性
の両立
• ネットワークの障害、遅延
• いわゆる CAP 定理の克服
Parallel snapshot isolation “Walter”
同期複製
出典: Transactional storage for geo-replicated systems
同期複製
Causal Consistency
• 特定ユーザが A を実行し次に B を実行、あるユーザの A の実行
を見た別のユーザが B を実行したときの A と B の前後関係が
causal (因果)関係で、その関係を保持するのが、causal
consistency
• トランザクションではなく、(セッションの)R や W 操作の一貫性
A さん
w1
r2
論
理
時
間
w3
(W,R)=Read Your Writes
•
(R,R)=Monotonic Reads
•
(R,W)=Writes Follow Reads
•
(W,W)=Monotonic Writes
• Causal consistencyでは以下の一貫性を保証できない
• トランザクショナルな操作: 銀行送金、注文と決済など
• 参照整合性、ユニーク性などの integrity constraints
C さん
Web クライアントが Write
トランザクションに causal
依存関係を含ませる
スレッドやリプライ数は高々
100 程度
r4
w5
w6
• (前操作、後操作)の組み合わせに対して、
•
B さん
r7
操
作
依存関係
w8
w1 w3 w1
w5 -
w6 w3 w1
w8 w6 w5 w3 w1
出典: Stronger Semantics for Low-Latency Geo-Replicated Storage
Don’t Settle for Eventual: Scalable Causal Consistency for Wide-Area Storage with COPS
(causal+ consistency) の改良版
Transaction Chains
トランザクションの意味的分割
• 分散トランザクション
を意味的にマルチホッ
プに分割
• 第一ホップ終了で応答す
ることで serilaizable と、
低レイテンシーを実現
• オークションの事例
出典: Transaction Chains: Achieving Serializability with Low Latency
in Geo-Distributed Storage Systems SOSP 2013
Spanner での snapshot の選択
• 耐障害性、可用性
• Paxos により 複製の snapshot の strong consistency を保証
• 一貫性
• coordinator は Paxos プロトコル上で 2PC を実行=コミットの分散合意
• prepare で各トランザクション参加者は書き込みの timestamp を
coordinator に返し、最大の timestamp をそのトランザクションの
timestamp とする
• Timestamp によりトランザクション順序、トランザクション間の readsfrom 関係を管理
• 時間管理
• 時間の読み取り誤差の範囲を限定
• 時間ずれの範囲が大きいと、coordinator はトランザクションコミットを待機
させてずれの修正
2PC と Paxos の関係
• Replicated log
(Spanner)
• NoSQL ベース
NoSQL
• Replicated commit
• トランザクション
ベース
2PC
Paxos
Paxos
2PC
NoSQL
NoSQL
• DC 間の各 shard で
Paxos で合意、
shard 間で 2PC で
更新
• Google、OSS ?
RDB
RDB
RDB
• DC 内で 2PC で prepare、
DC 間で shard 毎に
Paxos で合意が取れる場合、
各 DC で commit
• Microsoft、Oracle ?
出典: Low-Latency Multi-datacenter database
using Replicated Commits, VLDB 2013
最新動向
トランザクション技術の再考
耐障害性、可用性と一貫性を両立するためのトランザクション技術の制約
条件を洗い出し、その制約を持たない実装技術を提案
HAT
(Highly Available
Transactions)
方向性(筆者注)
トランザクション
概念の根底を見直す
出典: Highly Available Transactions:
Virtues and Limitations
まとめ
• 一貫性は極めて重要
• NoSQL、Hadoop はこの観点で見ていく
• Serializable から弱い一貫性へ、そこからまた、強い一貫性へ
• 地球規模でのトランザクション実行は現実化しつつある
• ネットワーク障害、ノード障害、レイテンシーも考慮される
• 耐障害性、可用性を最初から考慮しないアーキテクチャーはクラウドネーティブ
とは言えない
• スケールする複合的なサービスは複数クラスターを組み合わせ、異なるワークロードを
集約したクラスターで実行される
• 基本アルゴリズム Paxos の実装は難しく、現実的にはライブラリーの使用
ZooKeeper/Curator、Raft など
• ビザンチン障害の考慮、Fail Safe、Anti-fragile …
• データベースと分散システムは高度に融合
• Big Dataというくくりではなく、クラウド、サービスのための次世代技術
Microsoft 社の寄与
• Paxos の基本アルゴリズム、関連特許
• Leslie Lamport 博士 http://www.lamport.org/
• Jim Gray 博士 “Paxos Commit”
• トランザクション、MVCC の同時性制御の基礎、Hyder などの先進的研究
• Philip Bernstein 博士 "Concurrency Control and Recovery in Database Systems“
• Isolation Level を定義化
• Serializable snapshot isolation
• Alan Fekete 博士との共同研究 "One-Copy Serializability with Snapshot Isolation
under the Hood"
• SQL Server 2014 “Hekaton” による製品化
• Parallel snapshot isolation “Walter”
• Transaction Chains
© 2013 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
このプレゼンテーションは、情報提供のみを目的としています。 Microsoft は、この概要について、明示または暗示を問わず、いかなる保証も行いません。