32
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 2017年10月17日 1 ヤフー株式会社 データサイエンスソリューション統括本部 データプラットフォーム本部 星井祥吾 Yahoo! JAPANの OSSコミュニティ貢献の今までとこれから

Yahoo! JAPANのOSS Cassandra貢献の今までとこれから

  • Upload
    yahoo

  • View
    421

  • Download
    1

Embed Size (px)

Citation preview

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

2017年10月17日

1

ヤフー株式会社 データサイエンスソリューション統括本部

データプラットフォーム本部

星井祥吾

Yahoo! JAPANの

OSSコミュニティ貢献の今までとこれから

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

About me

2

星井 祥吾

2011年ヤフー中途入社

広告システムの開発に従事したのち

2015年10月に、現NoSQLチームに異動

Cassandraクラスタの構築・運用自動化が主務

趣味は庭仕事

Mail: [email protected]

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

アジェンダ

3

1. Yahoo! JAPANにおけるCassandra

2. Yahoo! JAPANのOSS貢献の今まで

3. Yahoo! JAPANのOSS貢献のこれから

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Yahoo! JAPANにおけるCassandra

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Yahoo! JAPANのサービス

5

Media

US

Search Video Answer Mail

JP

US

JP

Membership C2C Payment C2C EC B2C EC Local

Search Knowledge search MailNews

YAHUOKU!Premium Wallet Loco

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Yahoo! JAPANのCassandraクラスタ規模

6

50Clusters

50TBUsages

2000+Nodes

500,000

Read/sec

500,000

Write/sec

2017

10Nodes /

Cluster

200Nodes /

Cluster

…1

Shared

Cluster

50Special

Clusters

50Systems

50Systems

3DCs

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Yahoo! JAPANのCassandraユースケース

7

120

Systems

20

データベースキャッシュ

10

広告サービス

40

ユーザDB

50

サービス個別DB

閲覧履歴

インプレッション

・・・・

メタデータ

集約データ

・・・・

生成データ

セッションデータ

メタデータ

集約データ

・・・・

生成データ

レコメ

デモグラ

ライフログ

・・・・

嗜好

行動履歴

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Yahoo! JAPANのCassandra利用バージョン

2010 2012 2014 2016 2017

各サービス部門

NoSQLチーム

0.5 0.8 1.x

0.8 1.x 2.x 3.0 3.X

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

NoSQLチーム

9

• 社内プロダクト向けに、NoSQLを構築・運用• 主務10名• Cassandra, Redis, Ignite• 業務効率化、自動化が課題

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

なぜOSS貢献

10

• お客様が求めるサービスを理解・構築できるエンジニア・デザイナの養成=クリエイターズマインド

• すべての結果を自分ごとに• 社外に対してオープンに• 困難なことにチャレンジ

参考:https://about.yahoo.co.jp/hr/engineers/ctomessage.html

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Yahoo! JAPANのOSS貢献の今まで

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Yahoo! JAPANのOSS貢献の今まで

12

JIRA-ID 分類 概要

CASSANDRA-5977 Nodetool nodetool cfstatsの出力フォーマットにJSONを追加する

CASSANDRA-12486 Nodetool nodetool compactionhistoryの出力フォーマットにJSONを追加する

CASSANDRA-12503 Nodetool nodetool netstatsの出力フォーマットにJSONを追加する

CASSANDRA-8727 Nodetool nodetoolに自動コンパクションステータス表示機能を追加

CASSANDRA-12279 Nodetool nodetoolバグ修正

CASSANDRA-11720 Nodetool nodetoolバグ修正

CASSANDRA-9430 Cqlsh cqlshにスタートオプションを追加

CASSANDRA-11032 Cqlsh cqlshバグ修正

CASSANDRA-11976 Cqlsh cqlshバグ修正

CASSANDRA-12150 Cqlsh cqlshバグ修正

CASSANDRA-12174 Cqlsh cqlshバグ修正

CASSANDRA-13262 Cqlsh cqlshバグ修正

2016/10 – 現在 、20件以上のチケットに関与

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Yahoo! JAPANのOSS貢献の今まで

13

JIRA-ID or github url 分類 概要

CASSANDRA-12555 CCM ネットワークエミュレータ機能の提案

https://github.com/pcmanus/ccm

/pull/618

CCM Nodetool compact, cleanup, flush のサブコマンド指定を可能にする

https://github.com/pcmanus/ccm

/pull/620

CCM クラスタ名へのバリデーション追加

https://github.com/pcmanus/ccm

/pull/627

CCM リファクタリング

CASSANDRA-13125 本体 2.1 -> 3.0バージョンアップ時のデータ分割問題

CASSANDRA-11695 本体 JMXコネクション設定をcassandra.yamlに移行する

CASSANDRA-11303 本体 ストリーミング時のinboundトラフィック制限機能

CASSANDRA-12403 本体 スロークエリログ出力機能

CASSANDRA-13001 本体 プラッガブルスロークエリログ出力

CASSANDRA-13002 本体 テーブル単位のスロークエリログ出力

CASSANDRA-13863 本体 Speculative retry時のread repair ON/OFF機能

2016/10 – 現在 、20件以上のチケットに関与

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Yahoo! JAPANのOSS貢献の今まで

14

1. 機能追加:スロークエリログ出力

2. バグ修正:アップグレード時のデータ分割

3. 機能改善:speculative retryとread repair

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

機能追加:スロークエリログ出力

15

プロダクトエンジニア(システム)

NoSQLチームマルチテナント式クラスタ

Slow query

?

誤ったスキーマ定義、クエリ実行はクラスタ全体の性能を劣化させることがあるそのようなクエリを直接把握する手段がCassandraにはなかった

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

機能追加:スロークエリログ出力

16

スロークエリログ出力のため、JIRAにチケットを起票してパッチ提出https://issues.apache.org/jira/browse/CASSANDRA-12403

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

機能追加:スロークエリログ出力

17

コミッターから多数の指摘を受けるが、再修正 -> 無事マージ -> 3.10 より利用可能に

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.18

バグ修正:アップグレード時のデータ分割

> CREATE TABLE test.test (

a int PRIMARY KEY,

b int,

c set<int>,

d set<int>,

e int );

> INSERT INTO test.test(a,b,c,d,e) VALUES (14,1,{2,3},{4,5},6);

> SELECT * FROM test.test;

Cassandra3系に、複数のコレクションカラムを含むテーブルへのinsertを行うとパーティションが意図せず分割されてしまう問題

a b c d e

14 1 null null null

14 null {2, 3} {4, 5} 6

a b c d e

14 1 {2, 3} {4, 5} 6

※あるべき結果

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

バグ修正:アップグレード時のデータ分割

19

バグ報告チケットをJIRAに起票し、詳細な再現手順とパッチを添付https://issues.apache.org/jira/browse/CASSANDRA-13125

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

バグ修正:アップグレード時のデータ分割

20

コミッターから、致命的なバグと認識され、即座に修正をしてもらう

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

機能改善:speculative retryとread repair

21

Cassandraクラスタ

Speculative retry: 一時的な負荷などでレプリカノードが高速にデータもしくはダイジェストを返せない場合、コーディネータノードが別レプリカから思索的にデータもしくはダイジェストを取得する機能

①②

クライアント

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

機能改善:speculative retryとread repair

22

広告系システムで利用しているクラスタにて、Cassandraバージョンを3.0.9 -> 3.0.12にアップグレードした結果

3.0.12のクラスタでspeculative retryが大量発生

通常およそ20msecの 99% read latencyが200msecほどに悪化

3.0.11より、speculative retry後にread repairが動くようになったことによるものと推測https://github.com/apache/cassandra/commit/48fed80162592f741bf29298e2064452d53de4d8

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

機能改善:speculative retryとread repair

23

JIRAチケットを起票し、speculative retry後のread repairを設定でオフにできる機能改善をコミッターと検討中https://issues.apache.org/jira/browse/CASSANDRA-13863

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Yahoo! JAPANのOSS貢献のこれから

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Yahoo! JAPANのOSS貢献のこれから

25

分散型自動リペアツール

• 運用上の課題• Repairがgc_grace_seconds以内に回りきらない

• Repair実行時にノードの性能が劣化する

• 中央集権型のcassandra-reaperの検証と並行して、独自ツールの開発を実施中

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Yahoo! JAPANのOSS貢献のこれから

26

監査ログ出力機能

• センシティブ情報を扱うクラスタで監査ログを出力する

• 独自パッチを当てたクラスタを社内で運用中

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Yahoo! JAPANのOSS貢献のこれから

27

..........

! ! !

! ! !

vCPU = Cheap

datastax/cpp-driver改善:DN -> UNノードへのリクエスト集中問題

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Yahoo! JAPANのOSS貢献のこれから

28

• 改善内容• UNノードを検知した後、ランダム時間待ってからノードに接

続する(Jitterの導入)• タイムアウト時の再リトライ間隔を等分ではなく徐々に遅らせ、ク

ラスタへの負荷を軽減する(バックオフ、リトライ遅延)

datastax/cpp-driver改善:DN -> UNノードへのリクエスト集中問題

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Yahoo! JAPANのOSS貢献のこれから

29

パッチを当てた独自ドライバは、社内の多数のクライアントで稼働中

datastax/cpp-driver改善:DN -> UNノードへのリクエスト集中問題

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

最後に

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Yahoo! JAPAN ブース

A

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

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