---
title: Yahoo! JAPANにおけるApache Cassandraへの取り組み
tags: 
author: [Yahoo!デベロッパーネットワーク](https://www.docswell.com/user/ydnjp)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/VEN5M24RJ8.jpg?width=480
description: Cassandra Meetup in Tokyo, Fall 2014 http://datastaxjp.connpass.com/event/9867/  Yahoo! JAPANにおけるApache Cassandraへの取り組み
published: December 16, 14
canonical: https://www.docswell.com/s/ydnjp/Z47ELZ-2014-12-16-123851
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/VEN5M24RJ8.jpg)

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


# Page. 2

![Page Image](https://bcdn.docswell.com/page/Y79YN1QZE3.jpg)

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


# Page. 3

![Page Image](https://bcdn.docswell.com/page/G786K4QYJD.jpg)

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


# Page. 4

![Page Image](https://bcdn.docswell.com/page/L7L9Z6X9ER.jpg)

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


# Page. 5

![Page Image](https://bcdn.docswell.com/page/4EMZV5LV7W.jpg)

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


# Page. 6

![Page Image](https://bcdn.docswell.com/page/PER623KWJ9.jpg)

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


# Page. 7

![Page Image](https://bcdn.docswell.com/page/P7XMD4LVJX.jpg)

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


# Page. 8

![Page Image](https://bcdn.docswell.com/page/37KGXZL5ED.jpg)

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


# Page. 9

![Page Image](https://bcdn.docswell.com/page/LJ3N5D31J5.jpg)

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


# Page. 10

![Page Image](https://bcdn.docswell.com/page/8JDWDP4KEG.jpg)

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


# Page. 11

![Page Image](https://bcdn.docswell.com/page/VEP9XNM378.jpg)

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


# Page. 12

![Page Image](https://bcdn.docswell.com/page/27VMLK9N7Q.jpg)

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


# Page. 13

![Page Image](https://bcdn.docswell.com/page/5JGGXQZ5JL.jpg)

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


# Page. 14

![Page Image](https://bcdn.docswell.com/page/47QX8KLLJP.jpg)

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


# Page. 15

![Page Image](https://bcdn.docswell.com/page/KE462PD5J1.jpg)

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


# Page. 16

![Page Image](https://bcdn.docswell.com/page/L71VM9Z2JG.jpg)

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


# Page. 17

![Page Image](https://bcdn.docswell.com/page/G7WL3Q92J2.jpg)

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


# Page. 18

![Page Image](https://bcdn.docswell.com/page/4JZMVW9473.jpg)

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


# Page. 19

![Page Image](https://bcdn.docswell.com/page/YE6N5GKGEV.jpg)

運用中の環境
Cassandra version 1.2.15, 2.0.5, 2.0.10
Production clusters
9
Production nodes
&gt; 200&quot;
Cluster size
6 ~ 40+&quot;
Total read / write of peak&quot;
Data size
75kqps / 30kqps
about 1TB
19
Copyright	  (C)	  2014	  Yahoo	  Japan	  Corporation.	  All	  Rights	  Reserved.	  無断引用・転載禁止


# Page. 20

![Page Image](https://bcdn.docswell.com/page/GE55YVPXE4.jpg)

ノード数
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月
©	  Aﬂo 20


# Page. 21

![Page Image](https://bcdn.docswell.com/page/972NG36QJR.jpg)

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

![Page Image](https://bcdn.docswell.com/page/DJYPV19YJM.jpg)

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


# Page. 23

![Page Image](https://bcdn.docswell.com/page/V7N5M2LRE8.jpg)

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


# Page. 24

![Page Image](https://bcdn.docswell.com/page/YJ9YN14Z73.jpg)

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


# Page. 25

![Page Image](https://bcdn.docswell.com/page/GJ86K4VYED.jpg)

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


# Page. 26

![Page Image](https://bcdn.docswell.com/page/LJL9Z6597R.jpg)

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


# Page. 27

![Page Image](https://bcdn.docswell.com/page/47MZV53VJW.jpg)

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


# Page. 28

![Page Image](https://bcdn.docswell.com/page/P7R623QWE9.jpg)

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

![Page Image](https://bcdn.docswell.com/page/PJXMD45VEX.jpg)

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


# Page. 30

![Page Image](https://bcdn.docswell.com/page/3JKGXZ657D.jpg)

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


# Page. 31

![Page Image](https://bcdn.docswell.com/page/LE3N5D61E5.jpg)

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


# Page. 32

![Page Image](https://bcdn.docswell.com/page/8EDWDPVK7G.jpg)

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


# Page. 33

![Page Image](https://bcdn.docswell.com/page/V7P9XNV3J8.jpg)

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


# Page. 34

![Page Image](https://bcdn.docswell.com/page/2JVMLKZNJQ.jpg)

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


# Page. 35

![Page Image](https://bcdn.docswell.com/page/5EGGXQ45EL.jpg)

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


# Page. 36

![Page Image](https://bcdn.docswell.com/page/4JQX8KGLEP.jpg)

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


# Page. 37

![Page Image](https://bcdn.docswell.com/page/K7462P55E1.jpg)

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


# Page. 38

![Page Image](https://bcdn.docswell.com/page/LJ1VM9W2EG.jpg)

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


# Page. 39

![Page Image](https://bcdn.docswell.com/page/GJWL3Q62E2.jpg)

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


# Page. 40

![Page Image](https://bcdn.docswell.com/page/4EZMVWY4J3.jpg)

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


# Page. 41

![Page Image](https://bcdn.docswell.com/page/Y76N5GDG7V.jpg)

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


# Page. 42

![Page Image](https://bcdn.docswell.com/page/G755YV3X74.jpg)

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


# Page. 43

![Page Image](https://bcdn.docswell.com/page/9J2NG3ZQER.jpg)

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


# Page. 44

![Page Image](https://bcdn.docswell.com/page/DEYPV1RYEM.jpg)

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


# Page. 45

![Page Image](https://bcdn.docswell.com/page/VJN5M2DR78.jpg)

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


# Page. 46

![Page Image](https://bcdn.docswell.com/page/YE9YN1GZJ3.jpg)

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


# Page. 47

![Page Image](https://bcdn.docswell.com/page/GE86K48Y7D.jpg)

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


# Page. 48

![Page Image](https://bcdn.docswell.com/page/LEL9Z6R9JR.jpg)

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


# Page. 49

![Page Image](https://bcdn.docswell.com/page/4JMZV5RVEW.jpg)

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


# Page. 50

![Page Image](https://bcdn.docswell.com/page/PJR623RW79.jpg)

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


# Page. 51

![Page Image](https://bcdn.docswell.com/page/PEXMD4RV7X.jpg)

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


