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

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

Jul 13, 2015

Download

Technology

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Yahoo! JAPANにおけるApache Cassandraへの取り組み

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

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

鄭 中翔

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

自己紹介

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

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

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

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

発表内容

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

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

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

KVSチームの紹介

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

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

KVSチームの紹介

•  ≒ Cassandraチーム

•  Dev 3人, Ops は1人相当

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

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

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

約30のサービスが利用中

6

etc..

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

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

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

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

? Why Cassandra

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

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

Why Cassandra

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

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

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

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

Why Cassandra

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

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

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

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

11

Why Cassandra

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

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

Yahoo! JAPANでのCassandra利用

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

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

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

13

提供形態

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

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

運用環境 その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.  無断引用・転載禁止

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

httpインターフェース

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

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

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

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

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

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

httpインターフェース

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

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

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

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

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

運用している環境 その2

Cassandra

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

Thrift, CQL3 etc…

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

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

運用している環境 その3

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

etc…

Cassandra

なんとか

18

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

Cassandra

Thrift, CQL3

Thrift, CQL3

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

運用中の環境

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.  無断引用・転載禁止

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

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.  無断引用・転載禁止

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

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.  無断引用・転載禁止

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

Configuration

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

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

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

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

運用のはなし

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

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

Operations

•  監視 – Nagios – Graphite + Grafana

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

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

Grafana

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

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

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

Operations

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

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

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

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

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

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

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

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

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.  無断引用・転載禁止

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

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

Cassandraの再起動を実施

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

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

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

注意していること

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

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

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

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

学んだこと

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

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

nodetool cleanup is 大事

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

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

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.  無断引用・転載禁止

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

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

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

34

nodetool cleanup is 大事

Q

A

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

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

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

35

nodetool cleanup is 大事

A

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

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

Q

A

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

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

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

KVSチーム(ぼく達)

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

サービス担当者

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

36

nodetool cleanup is 大事

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

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

37

nodetool cleanup is 大事

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

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

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

38

nodetool cleanup is 大事

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

:データ

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

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

39

nodetool cleanup is 大事

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

:データ

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

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

40

nodetool cleanup is 大事

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

:ゴミデータ

:データ

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

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

41

nodetool cleanup is 大事

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

delete

:ゴミデータ

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

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

42

nodetool cleanup is 大事

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

:データJ

:ゴミデータ

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

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

43

nodetool cleanup is 大事

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

:データJ

:ゴミデータ

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

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

44

nodetool cleanup is 大事

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

:データL

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

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

45

nodetool cleanup is 大事

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

:データLLL

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

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

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

ことがあります

46

nodetool cleanup is 大事

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

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

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

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

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

まとめ

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

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

まとめ

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

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

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

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

今後の予定

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

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

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

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

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

❤ 51