Yahoo! JAPANにおけるApache Cassandraへの取り組み

51
Yahoo! JAPANにおける Apache Cassandraへの取り組み ヤフー株式会社 システム統括本部プラットフォーム開発本部 鄭 中翔

Transcript of Yahoo! JAPANにおけるApache Cassandraへの取り組み

Yahoo! JAPANにおける Apache Cassandraへの取り組み

ヤフー株式会社 システム統括本部プラットフォーム開発本部

鄭 中翔

自己紹介

•  鄭 中翔(てい ちゅうしょう) •  2013年新卒入社 – 社内向けプラットフォームの運用担当

•  Cassandra歴1年5ヶ月 •  twitter: @zx_zheng

2 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

発表内容

•  KVSチームの紹介 •  Yahoo! JAPANでのCassandra利用 •  運用のはなし •  学んだこと •  まとめ

3 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

KVSチームの紹介

4 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

KVSチームの紹介

•  ≒ Cassandraチーム

•  Dev 3人, Ops は1人相当

•  Yahoo! JAPANのサービスにCassandraを提供

5 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

約30のサービスが利用中

6

etc..

Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

7 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

? Why Cassandra

8 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

Why Cassandra

•  入社したらあった •  汎用的に使えるNoSQLのプラットフォームがなかった – 特定の目的に特化した分散データベース – 汎用的には使いづらい – 運用コスト、初期導入コストが高い

新しいNoSQLのプラットフォームが求められた 9

Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

Why Cassandra

•  NoSQLプラットフォームに対する要求 – パフォーマンス – スケーラビリティ – 高い可用性 – 運用のしやすさ、導入のしやすさ

10 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

✔    高いパフォーマンス  ✔    優れたスケーラビリティ  ✔    SPOFが存在しない  

11

Why Cassandra

Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

Yahoo! JAPANでのCassandra利用

12 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

•  httpインターフェース •  サービス共有環境 •  サービス専用環境

13

提供形態

Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

運用環境 その1 2013年5月~ httpインターフェース提供開始

WebAPI

thrift

http etc..

Cassandra

最近1.1.5→1.2.15へのバージョンアップを実施 14

Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

httpインターフェース

15 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

•  httpインターフェースを用意した理由 – CQL

•  CQL2 は機能が不十分だった •  CQL3 は beta だった(Ver. 1.1)

– Thrift • 実装コストが高い • サービスに使ってもらう際の障壁になる可能性がある

✔    httpインターフェース 簡単に使える!

httpインターフェース

✔  Cassandraに直接接続する選択肢も提供 16

Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

•  httpインターフェースの課題 – Cassandraの機能追加への対応コスト – パフォーマンスの低下

•  Cassandraが使いやすくなった – CQL3 – 様々なドライバ

運用している環境 その2

Cassandra

2014年8月~ Cassandra共有環境 提供開始

Thrift, CQL3 etc…

17 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

運用している環境 その3

大規模サービス向けに専用環境も提供

etc…

Cassandra

なんとか

18

Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

Cassandra

Thrift, CQL3

Thrift, CQL3

運用中の環境

Cassandra version 1.2.15, 2.0.5, 2.0.10

Production clusters 9

Production nodes > 200"

Cluster size 6 ~ 40+"

Total read / write of peak" 75kqps / 30kqps

Data size about 1TB 19

Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

0  

1  

2  

3  

4  

5  

6  

7  

8  

9  

10  

2013/11月 2014/11月

クラスタ数  

0  

50  

100  

150  

200  

250  

2013/11月 2014/11月

ノード数

5倍 9倍

0  

20000  

40000  

60000  

80000  

100000  

120000  

2013/11月 2014/11月

リクエスト数/秒

20倍

©  Aflo 20 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

Hardware

•  CPU – 8cores ~ 12cores

•  Memory – 24GB or 64GB

•  Disk – SAS 300GB * 4

•  RAID 0 or RAID 10 – そろそろSSDも…

21 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

Configuration

•  Replication factor = 3 •  Consistency level – 基本はQUORUM – サービスによって異なる

•  vnode – 一部のクラスタで有効 – 40台クラスタでnum_tokens = 32

22 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

運用のはなし

23 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

Operations

•  監視 – Nagios – Graphite + Grafana

24 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

Grafana

• イケてるUI  • 導入が非常に容易  • 頻繁な機能追加

25 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

Operations

•  repair & compaction – cronで定期的に実施

•  OpsCenter – 社内環境と相性(?)が合わず現在未使用 L – 導入に向けて再検証中

•  障害対応 – 独自Webツールから

26 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

障害対応ツール nodetoolコマンドの一部を実行可能 デモ

27 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

Operations

•  定期的にチェックする項目 – リクエスト数 – Read/Write latency – Java heap使用率

•  1.1.5では時間経過とともに上昇し性能劣化 •  1.2系以降では安定しているように見える

– pending tasks – timeout数 – Disk busy – クライアントとのコネクション数

28 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

とある日の共有クラスタにおける  クライアントとのコネクション数

Cassandraの再起動を実施

29 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

クライアントのバグでコネクション数が激増

注意していること

•  新サービスの利用開始時 – コネクション数が異常に増えていないか – リクエスト数が異常に増えていないか

•  99percentile latencyが悪化してないか – GC – Disk Busy – サービスごとの利用状態

30 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

学んだこと

31 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

nodetool cleanup is 大事

32 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

nodetool cleanup is 大事

nodetool cleanup … cleanup  [keyspace][table]    Triggers  the  immediate  cleanup  of  keys  no  longer  belonging  to  this  node.  This  has  roughly  the  same  effect  on  a  node  that  a  major  compaction  does  in  terms  of  a  temporary  increase  in  disk  space  usage  and  an  increase  in  disk  I/O.  Optionally  takes  a  list  of  table  names.

ノードの増減などによりtoken  rangeに変更があった時に担当範囲外になったデータをcleanupによって削除します

33

Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

nodetool cleanupをしないとどうなりますか?

無駄なデータがノードに残り続けます。

34

nodetool cleanup is 大事

Q

A

Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

無駄なデータがノードに残り続けて  最悪の場合削除したデータが復活します。

35

nodetool cleanup is 大事

A

nodetool cleanupをしないとどうなりますか?

無駄なデータがノードに残り続けます。

Q

A

Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

前に削除したデータの一部が復活してるけど何かしました?

KVSチーム(ぼく達)

なにもしてませんが調べてみます

サービス担当者

•  repairはちゃんと実行していたので当初原因不明  •  後にcleanupをしなかったことが原因だと判明

36

nodetool cleanup is 大事

Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

37

nodetool cleanup is 大事

データ復活の順番 :データ

1. データが保存されている(RF=3) Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

38

nodetool cleanup is 大事

2. データを持っているノードをはずす

:データ

Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

39

nodetool cleanup is 大事

3. token range 変更によりデータも移動

:データ

Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

40

nodetool cleanup is 大事

4. はずしたノードを戻すと  →  になる 本来は を削除するためにcleanupを実施

:ゴミデータ

:データ

Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

41

nodetool cleanup is 大事

5. データ  に削除リクエスト 担当範囲になっているノードのみに届く

delete

:ゴミデータ

Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

42

nodetool cleanup is 大事

6. しばらくするとデータが担当ノードから 実際に削除される   は残ったままだが参照はできない

:データJ

:ゴミデータ

Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

43

nodetool cleanup is 大事

7. データを持っていたノードを再びはずす

:データJ

:ゴミデータ

Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

44

nodetool cleanup is 大事

8. token range 変更   →  に昇格しデータを参照可能になる

:データL

Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

45

nodetool cleanup is 大事

9. repairにより全ノードにデータ復活

:データLLL

Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

ノードの増減時にcleanupをしないと忘れた頃に削除したデータが復活する

ことがあります

46

nodetool cleanup is 大事

Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

cleanupしましょう ちゃんとしているとは思いますが…

47 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

まとめ

48 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

まとめ

•  Yahoo! JAPANにおけるApache Cassandraの利用は爆速で拡大しています

•  cleanupはちゃんとやりましょう •  運用は“わかっていれば”結構楽です – 普段の運用業務だけなら1,2人で回っています

49 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

今後の予定

•  Cassadra2.1系の導入 •  SSD検証、本番投入 •  1.2系→2.0系へのバージョンアップ •  今後も利用は拡大していきます – 大きい案件が複数進行中 – データ量が一気に増える予感

•  DataStaxへの要望 – PHPのドライバをDataStaxで出してほしいなぁ

50 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

ご清聴ありがとうございました

❤ 51