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

1.1K Views

December 16, 14

スライド概要

Cassandra Meetup in Tokyo, Fall 2014
http://datastaxjp.connpass.com/event/9867/

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

profile-image

2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

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

2.

自己紹介 • 鄭 中翔(てい ちゅうしょう) • 2013年新卒入社 – 社内向けプラットフォームの運用担当 • Cassandra歴1年5ヶ月 • twitter: @zx_zheng 2 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

3.

発表内容 • • • • • KVSチームの紹介 Yahoo! JAPANでのCassandra利用 運用のはなし 学んだこと まとめ 3 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

4.

KVSチームの紹介 4 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

5.

KVSチームの紹介 • Cassandraチーム • Dev 3人, Ops は1人相当 • Yahoo! JAPANのサービスにCassandraを提供 5 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

6.

約30のサービスが利用中 etc.. 6 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

7.

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

8.

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

9.

Why Cassandra • 入社したらあった • 汎用的に使えるNoSQLのプラットフォー ムがなかった – 特定の目的に特化した分散データベース – 汎用的には使いづらい – 運用コスト、初期導入コストが高い 新しいNoSQLのプラットフォームが求められた 9 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

10.

Why Cassandra • NoSQLプラットフォームに対する要求 – パフォーマンス – スケーラビリティ – 高い可用性 – 運用のしやすさ、導入のしやすさ 10 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

11.

Why Cassandra ✔    高いパフォーマンス   ✔    優れたスケーラビリティ   ✔    SPOFが存在しない   11 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

12.

Yahoo! JAPANでのCassandra利用 12 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

13.

提供形態 • httpインターフェース • サービス共有環境 • サービス専用環境 13 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

14.

運用環境 その1 2013年5月〜 httpインターフェース提供開始 Cassandra WebAPI thrift etc.. http 最近1.1.5→1.2.15へのバージョンアップを実施 14 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

15.

httpインターフェース • httpインターフェースを用意した理由 – CQL • CQL2 は機能が不十分だった • CQL3 は beta だった(Ver. 1.1) – Thrift • 実装コストが高い • サービスに使ってもらう際の障壁になる可能性が ある 簡単に使える! ✔    httpインターフェース 15 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

16.

httpインターフェース • httpインターフェースの課題 – Cassandraの機能追加への対応コスト – パフォーマンスの低下 • Cassandraが使いやすくなった – CQL3 – 様々なドライバ ✔  Cassandraに直接接続する選択肢も提供 16 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

17.

運用している環境 その2 2014年8月〜 Cassandra共有環境 提供開始 Cassandra Thrift, CQL3 etc… 17 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

18.

運用している環境 その3 大規模サービス向けに専用環境も提供 Cassandra Thrift, CQL3 Cassandra なんとか etc… Thrift, CQL3 18 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

19.

運用中の環境 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" Data size 75kqps / 30kqps about 1TB 19 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

20.

ノード数 250   クラスタ数   10   120000   9   200   5倍 150   8   7   100000   9倍 80000   6   5   100   40000   3   2   20000   1   0   0   2013/11月 2014/11月 20倍 60000   4   50   リクエスト数/秒 0   2013/11月 2014/11月 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止 2013/11月 2014/11月 ©  Aflo 20

21.

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

22.

Configuration • Replication factor = 3 • Consistency level – 基本はQUORUM – サービスによって異なる • vnode – 一部のクラスタで有効 – 40台クラスタでnum̲tokens = 32 22 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

23.

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

24.

Operations • 監視 – Nagios – Graphite + Grafana 24 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

25.

Grafana • イケてるUI   • 導入が非常に容易   • 頻繁な機能追加 25 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

26.

Operations • repair & compaction – cronで定期的に実施 • OpsCenter – 社内環境と相性(?)が合わず現在未使用 L – 導入に向けて再検証中 • 障害対応 – 独自Webツールから 26 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

27.

障害対応ツール nodetoolコマンドの一部を実行可能 デモ 27 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

28.

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

29.

とある日の共有クラスタにおける   クライアントとのコネクション数 Cassandraの再起動を実施 クライアントのバグでコネクション数が激増 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止 29

30.

注意していること • 新サービスの利用開始時 – コネクション数が異常に増えていないか – リクエスト数が異常に増えていないか • 99percentile latencyが悪化してないか – GC – Disk Busy – サービスごとの利用状態 30 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

31.

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

32.

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

33.

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. rangeに変更が ✔ ノードの増減などによりtoken   あった時に担当範囲外になったデータを cleanupによって削除します 33 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

34.

nodetool cleanup is 大事 Q nodetool cleanupをしないとどうなりま すか? A 無駄なデータがノードに残り続けます。 34 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

35.

nodetool cleanup is 大事 Q nodetool cleanupをしないとどうなりま すか? A 無駄なデータがノードに残り続けます。 A 無駄なデータがノードに残り続けて   最悪の場合削除したデータが復活します。 35 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

36.

nodetool cleanup is 大事 前に削除したデータの一部が復活し てるけど何かしました? サービス担当者 なにもしてませんが調べてみます KVSチーム(ぼく達) • repairはちゃんと実行していたので当初原因不明   • 後にcleanupをしなかったことが原因だと判明 36 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

37.

nodetool cleanup is 大事 データ復活の順番 :データ 1. データが保存されている(RF=3) 37 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

38.

nodetool cleanup is 大事 :データ 2. データを持っているノードをはずす 38 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

39.

nodetool cleanup is 大事 :データ 3. token range 変更によりデータも移動 39 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

40.

nodetool cleanup is 大事 :データ :ゴミデータ 4. はずしたノードを戻すと → になる 本来は を削除するためにcleanupを実施 40 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

41.

nodetool cleanup is 大事 :ゴミデータ delete 5. データ に削除リクエスト 担当範囲になっているノードのみに届く 41 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

42.

nodetool cleanup is 大事 :データJ :ゴミデータ 6. しばらくするとデータが担当ノードから 実際に削除される は残ったままだが参照はできない Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止 42

43.

nodetool cleanup is 大事 :データJ :ゴミデータ 7. データを持っていたノードを再びはずす 43 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

44.

nodetool cleanup is 大事 :データL 8. token range 変更 → に昇格しデータを参照可能になる Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止 44

45.

nodetool cleanup is 大事 :データLLL 9. repairにより全ノードにデータ復活 45 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

46.

nodetool cleanup is 大事 ノードの増減時にcleanupをしないと 忘れた頃に削除したデータが復活する ことがあります 46 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

47.

ちゃんとしているとは思いますが… cleanupしましょう 47 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

48.

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

49.

まとめ • Yahoo! JAPANにおけるApache Cassandraの利用は爆速で拡大しています • cleanupはちゃんとやりましょう • 運用は“わかっていれば”結構楽です – 普段の運用業務だけなら1,2人で回っています 49 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

50.

今後の予定 • • • • Cassadra2.1系の導入 SSD検証、本番投入 1.2系→2.0系へのバージョンアップ 今後も利用は拡大していきます – 大きい案件が複数進行中 – データ量が一気に増える予感 • DataStaxへの要望 – PHPのドライバをDataStaxで出してほしい なぁ 50 Copyright  (C)  2014  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引用・転載禁止

51.

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