Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

745 views

Published on

2016年10月から1年間の、Yahoo! JAPANのOSS Cassandraへの貢献内容と、今後の貢献予定を紹介します。

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

  1. 1. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 2017年10月17日 1 ヤフー株式会社 データサイエンスソリューション統括本部 データプラットフォーム本部 星井祥吾 Yahoo! JAPANの OSSコミュニティ貢献の今までとこれから
  2. 2. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. About me 2 星井 祥吾 2011年ヤフー中途入社 広告システムの開発に従事したのち 2015年10月に、現NoSQLチームに異動 Cassandraクラスタの構築・運用自動化が主務 趣味は庭仕事 Mail: shoshii@yahoo-corp.jp
  3. 3. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. アジェンダ 3 1. Yahoo! JAPANにおけるCassandra 2. Yahoo! JAPANのOSS貢献の今まで 3. Yahoo! JAPANのOSS貢献のこれから
  4. 4. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. Yahoo! JAPANにおけるCassandra
  5. 5. 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
  6. 6. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. Yahoo! JAPANのCassandraクラスタ規模 6 50 Clusters 50TB Usages 2000+ Nodes 500,000 Read/sec 500,000 Write/sec 2017 10 Nodes / Cluster 200 Nodes / Cluster … 1 Shared Cluster 50 Special Clusters 50 Systems 50 Systems 3 DCs
  7. 7. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. Yahoo! JAPANのCassandraユースケース 7 120 Systems 20 データベースキャッシュ 10 広告サービス 40 ユーザDB 50 サービス個別DB 閲覧履歴 インプレッション ・・・・ メタデータ 集約データ ・・・・ 生成データ セッションデータ メタデータ 集約データ ・・・・ 生成データ レコメ デモグラ ライフログ ・・・・ 嗜好 行動履歴
  8. 8. 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
  9. 9. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. NoSQLチーム 9 • 社内プロダクト向けに、NoSQLを構築・運用 • 主務10名 • Cassandra, Redis, Ignite • 業務効率化、自動化が課題
  10. 10. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. なぜOSS貢献 10 • お客様が求めるサービスを理解・構築できる エンジニア・デザイナの養成 =クリエイターズマインド • すべての結果を自分ごとに • 社外に対してオープンに • 困難なことにチャレンジ 参考:https://about.yahoo.co.jp/hr/engineers/ctomessage.html
  11. 11. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. Yahoo! JAPANのOSS貢献の今まで
  12. 12. 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件以上のチケットに関与
  13. 13. 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件以上のチケットに関与
  14. 14. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. Yahoo! JAPANのOSS貢献の今まで 14 1. 機能追加:スロークエリログ出力 2. バグ修正:アップグレード時のデータ分割 3. 機能改善:speculative retryとread repair
  15. 15. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 機能追加:スロークエリログ出力 15 プロダクトエンジニア (システム) NoSQLチームマルチテナント式 クラスタ Slow query ? 誤ったスキーマ定義、クエリ実行はクラスタ全体の性能を劣化させることがある そのようなクエリを直接把握する手段がCassandraにはなかった
  16. 16. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 機能追加:スロークエリログ出力 16 スロークエリログ出力のため、JIRAにチケットを起票してパッチ提出 https://issues.apache.org/jira/browse/CASSANDRA-12403
  17. 17. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 機能追加:スロークエリログ出力 17 コミッターから多数の指摘を受けるが、再修正 -> 無事マージ -> 3.10 より利用可能に
  18. 18. 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 ※あるべき結果
  19. 19. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. バグ修正:アップグレード時のデータ分割 19 バグ報告チケットをJIRAに起票し、詳細な再現手順とパッチを添付 https://issues.apache.org/jira/browse/CASSANDRA-13125
  20. 20. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. バグ修正:アップグレード時のデータ分割 20 コミッターから、致命的なバグと認識され、即座に修正をしてもらう
  21. 21. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 機能改善:speculative retryとread repair 21 Cassandra クラスタ Speculative retry: 一時的な負荷などでレプリカノードが高速にデータもしくはダイジェストを返せない場合、 コーディネータノードが別レプリカから思索的にデータもしくはダイジェストを取得する機能 ① ② ③ クライアント
  22. 22. 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
  23. 23. 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
  24. 24. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. Yahoo! JAPANのOSS貢献のこれから
  25. 25. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. Yahoo! JAPANのOSS貢献のこれから 25 分散型自動リペアツール • 運用上の課題 • Repairがgc_grace_seconds以内に回りきらない • Repair実行時にノードの性能が劣化する • 中央集権型のcassandra-reaperの検証と並行して、独自 ツールの開発を実施中
  26. 26. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. Yahoo! JAPANのOSS貢献のこれから 26 監査ログ出力機能 • センシティブ情報を扱うクラスタで監査ログを出力する • 独自パッチを当てたクラスタを社内で運用中
  27. 27. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. Yahoo! JAPANのOSS貢献のこれから 27 .......... ! ! ! ! ! ! vCPU = Cheap datastax/cpp-driver改善:DN -> UNノードへのリクエスト集中問題
  28. 28. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. Yahoo! JAPANのOSS貢献のこれから 28 • 改善内容 • UNノードを検知した後、ランダム時間待ってからノードに接 続する(Jitterの導入) • タイムアウト時の再リトライ間隔を等分ではなく徐々に遅らせ、ク ラスタへの負荷を軽減する(バックオフ、リトライ遅延) datastax/cpp-driver改善:DN -> UNノードへのリクエスト集中問題
  29. 29. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. Yahoo! JAPANのOSS貢献のこれから 29 パッチを当てた独自ドライバは、社内の多数のクライアントで稼働中 datastax/cpp-driver改善:DN -> UNノードへのリクエスト集中問題
  30. 30. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 最後に
  31. 31. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. Yahoo! JAPAN ブース A
  32. 32. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. ご清聴ありがとうございました

×