799 Views
October 17, 17
スライド概要
2016年10月から1年間の、Yahoo! JAPANのOSS Cassandraへの貢献内容と、今後の貢献予定を紹介します。
2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp
Yahoo! JAPANの OSSコミュニティ貢献の今までとこれから 2017年10月17日 ヤフー株式会社 データサイエンスソリューション統括本部 データプラットフォーム本部 1 星井祥吾 Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
About me 星井 祥吾 2011年ヤフー中途入社 広告システムの開発に従事したのち 2015年10月に、現NoSQLチームに異動 Cassandraクラスタの構築・運用自動化が主務 趣味は庭仕事 Mail: [email protected] 2 Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
アジェンダ 1. 2. 3. 3 Yahoo! JAPANにおけるCassandra Yahoo! JAPANのOSS貢献の今まで Yahoo! JAPANのOSS貢献のこれから Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
Yahoo! JAPANにおけるCassandra Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
Yahoo! JAPANのサービス Media Search Video Answer Mail US JP News Membership Search C2C Payment Knowledge search C2C EC B2C EC Mail Local US JP Premium 5 Wallet YAHUOKU! Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. Loco
Yahoo! JAPANのCassandraクラスタ規模 2017 6 3 50 2000+ 50TB 500,000 500,000 DCs Clusters Nodes Usages Read/sec Write/sec 1 50 Shared Special 10 Cluster Clusters Nodes / 50 50 Systems Systems Cluster Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. … 200 Nodes / Cluster
Yahoo! JAPANのCassandraユースケース 広告サービス ユーザDB デモグラ 嗜好 閲覧履歴 10 40 インプレッション ライフログ 行動履歴 ・・・・ ・・・・ 120 サービス個別DB Systems 50 7 データベースキャッシュ メタデータ メタデータ 生成データ 生成データ 集約データ 20 集約データ セッションデータ レコメ ・・・・ ・・・・ Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
Yahoo! JAPANのCassandra利用バージョン 2010 各サービス部 門 NoSQLチーム 2012 0.5 0.8 0.8 2014 2016 2017 1.x 1.x 2.x Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 3.0 3.X
NoSQLチーム • • • • 9 社内プロダクト向けに、NoSQLを構築・運用 主務10名 Cassandra, Redis, Ignite 業務効率化、自動化が課題 Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
なぜOSS貢献 • お客様が求めるサービスを理解・構築できる エンジニア・デザイナの養成 =クリエイターズマインド • すべての結果を自分ごとに • 社外に対してオープンに • 困難なことにチャレンジ 参考:https://about.yahoo.co.jp/hr/engineers/ctomessage.html 10 Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
Yahoo! JAPANのOSS貢献の今まで Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
Yahoo! JAPANのOSS貢献の今まで 2016/10 – 現在 、20件以上のチケットに関与 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バグ修正 12 Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
Yahoo! JAPANのOSS貢献の今まで 2016/10 – 現在 、20件以上のチケットに関与 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機能 13 Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
Yahoo! JAPANのOSS貢献の今まで 1. 2. 3. 14 機能追加:スロークエリログ出力 バグ修正:アップグレード時のデータ分割 機能改善:speculative retryとread repair Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
機能追加:スロークエリログ出力 誤ったスキーマ定義、クエリ実行はクラスタ全体の性能を劣化させることがある そのようなクエリを直接把握する手段がCassandraにはなかった プロダクトエンジニア (システム) マルチテナント式 クラスタ NoSQLチーム Slow query 15 Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. ?
機能追加:スロークエリログ出力 スロークエリログ出力のため、JIRAにチケットを起票してパッチ提出 https://issues.apache.org/jira/browse/CASSANDRA-12403 16 Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
機能追加:スロークエリログ出力 コミッターから多数の指摘を受けるが、再修正 -> 無事マージ -> 3.10 より利用可能に 17 Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
バグ修正:アップグレード時のデータ分割
Cassandra3系に、複数のコレクションカラムを含むテーブルへのinsertを行うと
パーティションが意図せず分割されてしまう問題
> CREATE TABLE test.test (
a int PRIMARY KEY,
b int,
a
b
c
d
e
14
1
null
null
null
14
null
{2, 3}
{4, 5}
6
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);
a
b
c
d
e
14
1
{2, 3}
{4, 5}
6
> SELECT * FROM test.test;
18
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
バグ修正:アップグレード時のデータ分割 バグ報告チケットをJIRAに起票し、詳細な再現手順とパッチを添付 https://issues.apache.org/jira/browse/CASSANDRA-13125 19 Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
バグ修正:アップグレード時のデータ分割 コミッターから、致命的なバグと認識され、即座に修正をしてもらう 20 Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
機能改善:speculative retryとread repair Speculative retry: 一時的な負荷などでレプリカノードが高速にデータもしくはダイジェストを返せない場合、 コーディネータノードが別レプリカから思索的にデータもしくはダイジェストを取得する機能 Cassandra クラスタ クライアント ① 21 ② ③ Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
機能改善:speculative retryとread repair 広告系システムで利用しているクラスタにて、 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 22 Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
機能改善:speculative retryとread repair JIRAチケットを起票し、speculative retry後のread repairを設定でオフにできる 機能改善をコミッターと検討中 https://issues.apache.org/jira/browse/CASSANDRA-13863 23 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貢献のこれから datastax/cpp-driver改善:DN -> UNノードへのリクエスト集中問題 ! ! ! vCPU = Cheap .......... ! 27 ! ! Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
Yahoo! JAPANのOSS貢献のこれから datastax/cpp-driver改善:DN -> UNノードへのリクエスト集中問題 • 28 改善内容 • UNノードを検知した後、ランダム時間待ってからノードに接 続する(Jitterの導入) • タイムアウト時の再リトライ間隔を等分ではなく徐々に遅らせ、ク ラスタへの負荷を軽減する(バックオフ、リトライ遅延) Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
Yahoo! JAPANのOSS貢献のこれから datastax/cpp-driver改善:DN -> UNノードへのリクエスト集中問題 パッチを当てた独自ドライバは、社内の多数のクライアントで稼働中 29 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.
ご清聴ありがとうございました Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.