• 検索結果がありません。

ファイル置き場 日本Cassandraコミュニティ

N/A
N/A
Protected

Academic year: 2018

シェア "ファイル置き場 日本Cassandraコミュニティ"

Copied!
10
0
0

読み込み中.... (全文を見る)

全文

(1)

ConsistencyLevel

株式会社ムロドー

とみたかずたか

(2)

全回アジェンダ

• cassandra を複数で立ち上げる

• コンシステンシーレベルとは

ゴシッププロトコル?

• 複数ノードで異なる設定

• 巨大なデータを入れてみる

• ノードのスプリットブレイン

(3)

アジェンダ

• ConsistencyLevel とは?

▫データは何処にあるのか?

▫データは何処まで書き込まれるのか?

▫データは何時書き込まれるのか?

▫データを読み込む

(4)

データは何処にあるのか? ( Partition)

• 複数ノードを立ち上げた時に実際データは何処にあるのか

storage-conf.xmlの Partitioner が org.apache.cassandra.dht.RandomPartitioner の場合

(デフォルト)、キーを MD5 で Hash 値化した値を整数とみなし、 0 から 2^127 の間の 各ノードが持つレンジに割り当てる。

例 )

KS「 TimeStampSimpleTrees 」、 CF 「 SimpleTrees 」、 key「 3 」、 Column 「 id 」データの場合

TimeStampSimpleTrees.SimpleTrees['3']['id']

keyを md5 でハッシュ化→「 314755909755515592000481005244904880883 」 Nodetoolより

pompadour@zaku2-F-1:~$ nodetool --host 192.168.1.104 ring

Address Status Load Range Ring

123621947362397555094783433836216926846 192.168.1.106 Up 21.53 MB 4368941974377008489670679703283346037 |

<--|

192.168.1.6 Up 11.01 MB 53716703941129153059732412441632990819 | |

192.168.1.104 Up 4.37 MB 72360816833403413813516172818645147903 | |

192.168.1.109 Up 10.95 MB 123621947362397555094783433836216926846

|-->|

192.168.1.109のキー「 123621947362397555094783433836216926846 」より大きい よってプライマリレプリカは「 192.168.1.106 」

(5)

データは何処まで書き込まれるのか?

• 複数ノードを立ち上げた時にデータはどのノードに書き込まれるのか?

storage-conf.xmlの ReplicaPlacementStrategy が RackUnawareStrategy の場合

(デフォルト)、 ring 上で隣り合う n-1 分、右のノードまで書き込む。 (next 2-1 nodes) N = ReplicationFactor

例 )key「 3 」のハッシュ化→「 314755909755515592000481005244904880883 」 ReplicationFactor = 2

192.168.1.106

436894197437700848967067970328334 6037

192.168.1.6

537167039411291530597324124416329 90819

192.168.1.104

723608168334034138135161728186451 47903

192.168.1.109

123621947362397555094783433836216 926846

2-1 ノード右まで

(6)

thriftAPIの describe_ring を使用してリング情報を取得する。 例 )

KS「 TimeStampSimpleTrees 」の ring を取得 ReplicationFactor = 2

結果を成形 [

TokenRange(

end_token='123621947362397555094783433836216926846', start_token='72360816833403413813516172818645147903', endpoints=['192.168.1.109', '192.168.1.106']), TokenRange(

end_token='72360816833403413813516172818645147903', start_token='53716703941129153059732412441632990819', endpoints=['192.168.1.104', '192.168.1.109']), TokenRange(

end_token='4368941974377008489670679703283346037', start_token='123621947362397555094783433836216926846', endpoints=['192.168.1.106', '192.168.1.6']),

TokenRange(

end_token='53716703941129153059732412441632990819', start_token='4368941974377008489670679703283346037', endpoints=['192.168.1.6', '192.168.1.104']) ]

「 3 」の hash 値「 314755909755515592000481005244904880883 」は

「 192.168.1.109 」 , 「 192.168.1.6 」に格納される。

thriftAPI で見てみる

(7)

データは何時書き込まれるのか?

• 複数ノードを立ち上げた時に実際データは何時書き込まれるのか?

memtable

Memory

Disk

Commit Log

Write

OP

Flush

SSTabl

e

SSTabl

e

SSTabl

e

ConsistencyLevel ZERO

For

local

YES

No

With

hints

YES

No

Write

Hints

Message Sent to other node

Read OP

(8)

データは何時書き込まれるのか?

• 複数ノードを立ち上げた時に実際データは何時書き込まれるのか?

Commit Log

Write

OP

ConsistencyLevel その他

For

local

YES

No

With

hints

YES

No

Write

Hints

Sent messages to other node

Return message from other

node

(9)

データを読み込む

• 複数ノードの場合データはどの様に呼び出されるのか?

対応しているのは現状 ConsistencyLevel.ONE と ConsistencyLevel. QUORUM

のみ。

「 ONE 」:

最初に接続要求のあったノードによって返されたレコードを返答。

一貫性を保持するためにバックグラウンド系で常時チェックを実行。

最初の要求で古いデータを返答したとしても、その後の呼び出しで

正しいデータを返答。 ( 「リードリペア」と呼ばれます。 )

「 QUORUM 」:

いったん全てのノードに問い合わせを行い、レプリカも含めた

返答データの内、 最も新しい TimeStamp を持つレコードを返答。

古いレコードを持つレプリカはバックグラウンドでチェックされる。

(10)

宣伝

• 日経 BP 様より依頼があって日経 Linux に記事書きました。

でも原稿提出してからレスポンスが殆どないので本当に掲載されるか分かりません。

W 内容は AmazonEC2 で複数ノードの Cassandra を使うです。

質問等有れば連絡ください。

twitter: railute

blog:http://www.intheforest.jp/blog/

e-mail:[email protected]

参照

関連したドキュメント

 次項では,コミュニティにダイナミズムを生み出すアートプロジェクトとは どういうものか,続いて Play Me, I’m

・本計画は都市計画に関する基本的な方 針を定めるもので、各事業の具体的な

   遠くに住んでいる、家に入られることに抵抗感があるなどの 療養中の子どもへの直接支援の難しさを、 IT という手段を使えば

マニピュレータで、プール 内のがれきの撤去や燃料取 り出しをサポートする テンシルトラスには,2本 のマニピュレータが設置さ

マニピュレータで、プール 内のがれきの撤去や燃料取 り出しをサポートする テンシルトラスには,2本 のマニピュレータが設置さ

 筆記試験は与えられた課題に対して、時間 内に回答 しなければなりません。時間内に答 え を出すことは働 くことと 同様です。 だから分からな い問題は後回しでもいいので

自分ではおかしいと思って も、「自分の体は汚れてい るのではないか」「ひどい ことを周りの人にしたので

使用言語 日本語 選考要件. 登録届を提出するまでに個別面談を受けてください。留学中で直接面談 できない場合は Skype か