SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Cassandra における SSD の活用
10 Oct, 2018
NVM Casual Talks #1
Yuji Ito
Principal Software Engineer at Scalar, Inc.
1
© 2018 Scalar, inc.
Confidential
Self introduction
• プロセッサの研究 @ U-Tokyo
– Transactional Memory: 並列プログラムの容易化、高速化
• SSD 開発を5年 @ Hitachi, Fixstars
– ファームウェア開発が中心 (一時期は上位連携アクセラレーションとかも)
– エンタープライズ向け (SAS, SATA, NVMe), コンシューマ向け (NVMe), モバ
イル向け (UFS)
• 2年半前〜現在、分散台帳に用いる分散ストレージ周り @ Orb, Scalar
2
© 2018 Scalar, inc.
Confidential
Contents
• Scalar DLT
• Cassandra
– 特徴
– Write
– Read
– CAS (LWT: Lightweight transaction)
– SSD の活用
• Scalar DB with Cassandra
– Transaction
– Benchmark
3
© 2018 Scalar, inc.
Confidential
4
Distributed Database
Spanner• Finality
• Consistency
• Scalability
• Availability
• Performance
Blockchain
• Tamper-Evidence
• Determinism
• Decentralization
Scalar DLT
Distributed Ledger Platform
toward a fusion of
Distributed Database and Blockchain
Scalar DLT – Blockchain-inspired Distributed Ledger Platform
Finality
Consistency
Scalability
Availability
Performance
Tamper-Evidence
Determinism
Decentralization
© 2018 Scalar, inc.
Confidential
Scalar DLT Software Architecture
5
Scalar DB
Scalar DL
Master-less Distributed Transaction Manager
Tamper-Evident Distributed Ledger with SmartContract
Scalar DM
Distributed Deterministic-ordering Manager
Scalar DLT
Oracle On-Premise
Distributed Storage
Finality
Consistency
Scalability
Availability
Performance
Tamper-Evidence
Decentralization
Tamper-Evidence
Determinism
Decentralization
© 2018 Scalar, inc.
Confidential
Cassandra: 特徴
• Scalability
– ノード数を増やすとスループットが向上
• Availability
– 一部ノードに障害があっても引き続きサービスを提供可能
• CAS (Lightweight transactions)
– 1レコードのアトミックな更新が可能
6
© 2018 Scalar, inc.
Confidential
Cassandra
• いずれのノードでもリクエストを受け取れる
7
C*
cluster
node
node node
node node
Requester
Requester
Requester Requester
Requester
© 2018 Scalar, inc.
Confidential
Cassandra
• Replication factor 分のノードが同じデータを持つ
– ただし、一貫性保証は consistency level による
8
C*
cluster
node
node node
node node
Requester
AA’
A
A
Replication factor = 3
A’
A’
A’
Requester
A’
© 2018 Scalar, inc.
Confidential
Write (inside a node)
• NAND Flash SSD と同様に、追記でデータを書き込む
– 直接、間接的に大小のシーケンシャル・ライトが発生
9
https://docs.datastax.com/en/cassandra/3.0/cassandra/dml/dmlHowDataWritten.html
© 2018 Scalar, inc.
Confidential
Write (inside a node)
• メモリ上
– memtable
– ライト・キャッシュのようなもの
– リード対象
• ディスク上
– commitlog
– レコード更新情報ログ
– 不正電源遮断後の再起動時に使用
– SSTable
– memtable 上の書き込みデータをまとめて永続化して作られる (後述)
– リード対象
10
© 2018 Scalar, inc.
Confidential
commitlog sync
11
• Write 毎 commitlog に書き込み完了しなければ本来永続化されない
– デフォルト設定で、 commitlog_sync: periodic だと消える可能性あり
– 以降では、即座に永続化する commitlog_sync: batch であるとする
• 更新情報ログとして書き込むのでシーケンシャル・ライト
– レコード・サイズや並列数によるが、ページ・サイズ 4KB 程度
• 不正電源遮断で memtable が消えても commitlog から復活 (Replay)
https://docs.datastax.com/en/cassandra/3.0/cassandra/dml/dmlHowDataWritten.html
© 2018 Scalar, inc.
Confidential
memtable flush
• memtable が一杯になったら新しい SSTable を作る
– 複数の更新データをまとめて永続化するので、大サイズのシーケンシャル・ラ
イトになる
– 古いデータを持つ SSTable に上書きするわけではないので、SSTable は
たくさんできる
12
https://docs.datastax.com/en/cassandra/3.0/cassandra/dml/dmlHowDataWritten.html
© 2018 Scalar, inc.
Confidential
Compaction
• Cassandra データの GC のような処理
– 追記で書き込むので、上書きされた無効なデータが SSTable 残っている
– SSTable が大量にあると Read 時にたくさんの SSTable を走査する必要が
あり、Read 性能が低下する
– 色々な compaction strategy が設定可能
• 複数の SSTable を読み込み、まとめる
– 大サイズのシーケンシャル・リード/ライトが発生
13https://docs.datastax.com/en/cassandra/3.0/cassandra/dml/dmlHowDataMaintain.html
© 2018 Scalar, inc.
Confidential
Read (inside a node)
14
• 色々な情報を参照して目的のデータを SSTable から読み出す (詳細割愛)
– memtable 上に存在する場合はそれを読み出す
– 基本的にはランダム・リードが発生
https://docs.datastax.com/en/cassandra/3.0/cassandra/dml/dmlAboutReads.html
© 2018 Scalar, inc.
Confidential
CAS (LWT: Lightweight transactions)
• あるレコードについて、複数ノード(replication factor分)で同じ値を持っているこ
とを保証する
– Paxos ベースのコンセンサス・アルゴリズムを利用
– ざっくり言えば、過半数ノードが同じ値で読み書きできたら成功
– 処理過程で Paxos state を逐一 write している (小サイズ)
– CAS Read では 1回、CAS Write では 3 回の Paxos テーブル更新
write が必要
→ CAS Read でも 1 回の write が発生、CAS Write ではユーザテーブ
ルと合わせ、4 回 write が発生
15
Paxos-ID State
a1-1111 proposed
Key Val
a1 A’
Paxos table User table
3回更新 1回更新
© 2018 Scalar, inc.
Confidential
I/O パターンの整理
16
I/O pattern Seq. read Seq. write Rnd. read Rnd. write
commitlog sync - Small size - -
memtable flush - Large size - -
Compaction Large size Large size - -
Read a record - - Small size -
CAS - Small size Small size -
© 2018 Scalar, inc.
Confidential
I/O パターンの整理
• Throughput (MB/s) が重要 (大サイズのシーケンシャルアクセス)
– memtable flush
– Compaction
• IOPS & レイテンシ が重要 (小サイズのアクセス)
– commitlog sync
– 特に CAS 操作
– Read a record
17
© 2018 Scalar, inc.
Confidential
SSD の活用
• 各レコードの read 処理では、ランダム・アクセスで効果あり
• 現状、write スループットは CPU ネックになる
– 多並列でも数十 KIOPS もいかない
– 多並列になるほどまとめて書き込みやすくなる
– 追記型なので、シーケンシャル・ライトでディスク(HDD, SSD)に優しい I/O
– ただし、レイテンシは重要
– きちんと永続化させるなら commitlog を書くまでリクエストは完了しな
い
– CAS では特に顕在化する
18
© 2018 Scalar, inc.
Confidential
Ref. GroupCommitLog
• commitlog sync での IOPS 増加を和らげる施策: GroupCommitLog
– Cassandra コミュニティに提案、コミット済み [CASSANDRA-13530]
– Cassandra 4.0 (未リリース) から使用可能
– Write リクエストを待たせて commitlog への永続化を一定時間毎にまとめ
て行う
– periodic と異なり、永続化完了までリクエストを待たせるので、データ消
失の可能性なし
– batch に比べて、まとめて永続化するので、ディスクへの I/O 数が減る
19
Scalar DB
Master-less Distributed Transaction Manager
20
© 2018 Scalar, inc.
Confidential
Cassandra はトランザクション機能なし
• CAS の対象は 1 レコードのみなので、複数のレコードをアトミックに更新できない
21
a = cassandra.get(keyA);
b = cassandra.get(keyB);
a.balance -= 100;
b.balance += 100;
cassandra.put(a);
cassandra.put(b);
c = cassandra.get(keyC);
b = cassandra.get(keyB);
c.balance -= 500;
b.balance += 500;
cassandra.put(c);
cassandra.put(b);
TX1 (A から B への送金) TX2 (C から B への送金)
time
TX1, TX2 ともに b の
balance は更新前なので
1000
TX1 により b の balance は
1100 へ更新
TX2 により b の balance は
1500 へ更新
(TX1 がなかったことになる)
b の balance は 1000
© 2018 Scalar, inc.
Confidential
Scalar DB
• トランザクション機能を提供
– Cassandra の Scalability, Availability を活かしつつ、ACID トランザ
クションを実行可能
– Cassandra のテーブル作成時にメタカラムを追加
– アプリケーション側で Java ライブラリ API を呼び出すだけ
– データ自体はすべて Cassandra で管理されるので、Spark などの既存の
解析ツールも使える
• CAS を多用するため、小サイズ write は増加する → commitlog 用には SSD
の使用を推奨
22
© 2018 Scalar, inc.
Confidential
Benchmark
• Node machine
– AWS EC2 i3.xlarge
– 4 vCPUs, 30.5 GB RAM, NVMe SSD 950 GB
• Cassandra cluster
– 3 nodes
– Replication factor: 3
• Workload
– A transaction transfers an amount from an account to another one
– 100,000 accounts
23
© 2018 Scalar, inc.
Confidential
TPS (Transaction per second)
• 200 秒測定
– クラスタ構成はほぼ最小構成
– これをベースに scale-up, scale-out 可能
– CPU ネック
24
© 2018 Scalar, inc.
Confidential
Disk read (48 hours)
• IOPS, throughput ともに compaction によって時々高くなる
25
© 2018 Scalar, inc.
Confidential
Disk write (48 hours)
• IOPS: commitlog が中心
• Throughput: flush や compaction で時々高くなる
26
© 2018 Scalar, inc.
Confidential
まとめ
• Cassandra
– ライトはシーケンシャル・アクセスが主で、大小サイズが混在
– リードはランダム、シーケンシャル混在
– リクエストするアプリケーションによるが、Throughput, IOPS ともに必要とす
るため、SSD の使用が好ましい
• Scalar DB
– Cassandra で ACID トランザクション可能
– CAS のためにある程度 IOPS も必要とするので SSD 推奨
27
Scalar DB
10 Oct. 2018 (本日)
オープンソースとして公開
https://github.com/scalar-labs/scalardb
28
29

Weitere ähnliche Inhalte

Was ist angesagt?

わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48Preferred Networks
 
Ingress on Azure Kubernetes Service
Ingress on Azure Kubernetes ServiceIngress on Azure Kubernetes Service
Ingress on Azure Kubernetes ServiceToru Makabe
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)NTT DATA Technology & Innovation
 
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタはじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタSatoyuki Tsukano
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれKumazaki Hiroki
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法Tetsutaro Watanabe
 
Kafkaを活用するためのストリーム処理の基本
Kafkaを活用するためのストリーム処理の基本Kafkaを活用するためのストリーム処理の基本
Kafkaを活用するためのストリーム処理の基本Sotaro Kimura
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 
オープンソースライセンスの基礎と実務
オープンソースライセンスの基礎と実務オープンソースライセンスの基礎と実務
オープンソースライセンスの基礎と実務Yutaka Kachi
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法についてYuji Otani
 
AWS Black Belt Online Seminar 2017 Amazon DynamoDB
AWS Black Belt Online Seminar 2017 Amazon DynamoDB AWS Black Belt Online Seminar 2017 Amazon DynamoDB
AWS Black Belt Online Seminar 2017 Amazon DynamoDB Amazon Web Services Japan
 
事例で学ぶApache Cassandra
事例で学ぶApache Cassandra事例で学ぶApache Cassandra
事例で学ぶApache CassandraYuki Morishita
 
GNU AGPLv3について(On GNU AGPLv3)
GNU AGPLv3について(On GNU AGPLv3)GNU AGPLv3について(On GNU AGPLv3)
GNU AGPLv3について(On GNU AGPLv3)真行 八田
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドAkihiro Suda
 
[AKIBA.AWS] EC2の基礎 - パフォーマンスを100%引き出すオプション設定 -
[AKIBA.AWS] EC2の基礎 - パフォーマンスを100%引き出すオプション設定 -[AKIBA.AWS] EC2の基礎 - パフォーマンスを100%引き出すオプション設定 -
[AKIBA.AWS] EC2の基礎 - パフォーマンスを100%引き出すオプション設定 -Shuji Kikuchi
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理NTT DATA Technology & Innovation
 
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #1320210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13Amazon Web Services Japan
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪Takuto Wada
 

Was ist angesagt? (20)

わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
 
Ingress on Azure Kubernetes Service
Ingress on Azure Kubernetes ServiceIngress on Azure Kubernetes Service
Ingress on Azure Kubernetes Service
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
 
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタはじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタ
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
 
Kafkaを活用するためのストリーム処理の基本
Kafkaを活用するためのストリーム処理の基本Kafkaを活用するためのストリーム処理の基本
Kafkaを活用するためのストリーム処理の基本
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
オープンソースライセンスの基礎と実務
オープンソースライセンスの基礎と実務オープンソースライセンスの基礎と実務
オープンソースライセンスの基礎と実務
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
AWS Black Belt Online Seminar 2017 Amazon DynamoDB
AWS Black Belt Online Seminar 2017 Amazon DynamoDB AWS Black Belt Online Seminar 2017 Amazon DynamoDB
AWS Black Belt Online Seminar 2017 Amazon DynamoDB
 
事例で学ぶApache Cassandra
事例で学ぶApache Cassandra事例で学ぶApache Cassandra
事例で学ぶApache Cassandra
 
GNU AGPLv3について(On GNU AGPLv3)
GNU AGPLv3について(On GNU AGPLv3)GNU AGPLv3について(On GNU AGPLv3)
GNU AGPLv3について(On GNU AGPLv3)
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
 
[AKIBA.AWS] EC2の基礎 - パフォーマンスを100%引き出すオプション設定 -
[AKIBA.AWS] EC2の基礎 - パフォーマンスを100%引き出すオプション設定 -[AKIBA.AWS] EC2の基礎 - パフォーマンスを100%引き出すオプション設定 -
[AKIBA.AWS] EC2の基礎 - パフォーマンスを100%引き出すオプション設定 -
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
 
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #1320210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 

Ähnlich wie Cassandra における SSD の活用

Guide to Cassandra for Production Deployments
Guide to Cassandra for Production DeploymentsGuide to Cassandra for Production Deployments
Guide to Cassandra for Production Deploymentssmdkk
 
ソフトウェア・デファインドが再定義するストレージ -- OpenStackデファクト標準ストレージCeph - OpenStack最新情報セミナー 201...
ソフトウェア・デファインドが再定義するストレージ -- OpenStackデファクト標準ストレージCeph - OpenStack最新情報セミナー 201...ソフトウェア・デファインドが再定義するストレージ -- OpenStackデファクト標準ストレージCeph - OpenStack最新情報セミナー 201...
ソフトウェア・デファインドが再定義するストレージ -- OpenStackデファクト標準ストレージCeph - OpenStack最新情報セミナー 201...VirtualTech Japan Inc.
 
Db tech showcase 2016
Db tech showcase 2016Db tech showcase 2016
Db tech showcase 2016datastaxjp
 
Cloudian update (Japanese:日本語)
Cloudian update (Japanese:日本語)Cloudian update (Japanese:日本語)
Cloudian update (Japanese:日本語)CLOUDIAN KK
 
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例terurou
 
SparkとCassandraの美味しい関係
SparkとCassandraの美味しい関係SparkとCassandraの美味しい関係
SparkとCassandraの美味しい関係datastaxjp
 
AWS Black Belt Techシリーズ Amazon ElastiCache
AWS Black Belt Techシリーズ Amazon ElastiCacheAWS Black Belt Techシリーズ Amazon ElastiCache
AWS Black Belt Techシリーズ Amazon ElastiCacheAmazon Web Services Japan
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)NTT DATA Technology & Innovation
 
クラウドデザイン パターンに見る クラウドファーストな アプリケーション設計 Data Management編
クラウドデザイン パターンに見るクラウドファーストなアプリケーション設計 Data Management編クラウドデザイン パターンに見るクラウドファーストなアプリケーション設計 Data Management編
クラウドデザイン パターンに見る クラウドファーストな アプリケーション設計 Data Management編Takekazu Omi
 
Snowflake Elastic Data Warehouse as a Service
Snowflake Elastic Data Warehouse as a ServiceSnowflake Elastic Data Warehouse as a Service
Snowflake Elastic Data Warehouse as a ServiceMineaki Motohashi
 
B 8スポンサー講演資料 osnexus steven umbehocker (アファーム・ビジネスパートナーズ株)
B 8スポンサー講演資料 osnexus steven umbehocker (アファーム・ビジネスパートナーズ株)B 8スポンサー講演資料 osnexus steven umbehocker (アファーム・ビジネスパートナーズ株)
B 8スポンサー講演資料 osnexus steven umbehocker (アファーム・ビジネスパートナーズ株)chenree3
 
B 8スポンサー講演資料 osnexus steven umbehocker (アファーム・ビジネスパートナーズ株)
B 8スポンサー講演資料 osnexus steven umbehocker (アファーム・ビジネスパートナーズ株)B 8スポンサー講演資料 osnexus steven umbehocker (アファーム・ビジネスパートナーズ株)
B 8スポンサー講演資料 osnexus steven umbehocker (アファーム・ビジネスパートナーズ株)softlayerjp
 
CommVault with Cloudian for Data Backup and Archive
CommVault with Cloudian for Data Backup and ArchiveCommVault with Cloudian for Data Backup and Archive
CommVault with Cloudian for Data Backup and ArchiveCLOUDIAN KK
 
Modernizing Big Data Workload Using Amazon EMR & AWS Glue
Modernizing Big Data Workload Using Amazon EMR & AWS GlueModernizing Big Data Workload Using Amazon EMR & AWS Glue
Modernizing Big Data Workload Using Amazon EMR & AWS GlueNoritaka Sekiyama
 
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデートAmazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデートAmazon Web Services Japan
 
LINEのMySQL運用について
LINEのMySQL運用についてLINEのMySQL運用について
LINEのMySQL運用についてLINE Corporation
 
OpenStack Object Storage; Usage
OpenStack Object Storage; UsageOpenStack Object Storage; Usage
OpenStack Object Storage; Usageirix_jp
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Masahiro Nagano
 
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門じゅん なかざ
 

Ähnlich wie Cassandra における SSD の活用 (20)

Guide to Cassandra for Production Deployments
Guide to Cassandra for Production DeploymentsGuide to Cassandra for Production Deployments
Guide to Cassandra for Production Deployments
 
ソフトウェア・デファインドが再定義するストレージ -- OpenStackデファクト標準ストレージCeph - OpenStack最新情報セミナー 201...
ソフトウェア・デファインドが再定義するストレージ -- OpenStackデファクト標準ストレージCeph - OpenStack最新情報セミナー 201...ソフトウェア・デファインドが再定義するストレージ -- OpenStackデファクト標準ストレージCeph - OpenStack最新情報セミナー 201...
ソフトウェア・デファインドが再定義するストレージ -- OpenStackデファクト標準ストレージCeph - OpenStack最新情報セミナー 201...
 
Db tech showcase 2016
Db tech showcase 2016Db tech showcase 2016
Db tech showcase 2016
 
Cloudian update (Japanese:日本語)
Cloudian update (Japanese:日本語)Cloudian update (Japanese:日本語)
Cloudian update (Japanese:日本語)
 
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
 
SparkとCassandraの美味しい関係
SparkとCassandraの美味しい関係SparkとCassandraの美味しい関係
SparkとCassandraの美味しい関係
 
AWS Black Belt Techシリーズ Amazon ElastiCache
AWS Black Belt Techシリーズ Amazon ElastiCacheAWS Black Belt Techシリーズ Amazon ElastiCache
AWS Black Belt Techシリーズ Amazon ElastiCache
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
 
クラウドデザイン パターンに見る クラウドファーストな アプリケーション設計 Data Management編
クラウドデザイン パターンに見るクラウドファーストなアプリケーション設計 Data Management編クラウドデザイン パターンに見るクラウドファーストなアプリケーション設計 Data Management編
クラウドデザイン パターンに見る クラウドファーストな アプリケーション設計 Data Management編
 
Serverless analytics on aws
Serverless analytics on awsServerless analytics on aws
Serverless analytics on aws
 
Snowflake Elastic Data Warehouse as a Service
Snowflake Elastic Data Warehouse as a ServiceSnowflake Elastic Data Warehouse as a Service
Snowflake Elastic Data Warehouse as a Service
 
B 8スポンサー講演資料 osnexus steven umbehocker (アファーム・ビジネスパートナーズ株)
B 8スポンサー講演資料 osnexus steven umbehocker (アファーム・ビジネスパートナーズ株)B 8スポンサー講演資料 osnexus steven umbehocker (アファーム・ビジネスパートナーズ株)
B 8スポンサー講演資料 osnexus steven umbehocker (アファーム・ビジネスパートナーズ株)
 
B 8スポンサー講演資料 osnexus steven umbehocker (アファーム・ビジネスパートナーズ株)
B 8スポンサー講演資料 osnexus steven umbehocker (アファーム・ビジネスパートナーズ株)B 8スポンサー講演資料 osnexus steven umbehocker (アファーム・ビジネスパートナーズ株)
B 8スポンサー講演資料 osnexus steven umbehocker (アファーム・ビジネスパートナーズ株)
 
CommVault with Cloudian for Data Backup and Archive
CommVault with Cloudian for Data Backup and ArchiveCommVault with Cloudian for Data Backup and Archive
CommVault with Cloudian for Data Backup and Archive
 
Modernizing Big Data Workload Using Amazon EMR & AWS Glue
Modernizing Big Data Workload Using Amazon EMR & AWS GlueModernizing Big Data Workload Using Amazon EMR & AWS Glue
Modernizing Big Data Workload Using Amazon EMR & AWS Glue
 
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデートAmazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
 
LINEのMySQL運用について
LINEのMySQL運用についてLINEのMySQL運用について
LINEのMySQL運用について
 
OpenStack Object Storage; Usage
OpenStack Object Storage; UsageOpenStack Object Storage; Usage
OpenStack Object Storage; Usage
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
 
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門
 

Kürzlich hochgeladen

論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 

Kürzlich hochgeladen (10)

論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

Cassandra における SSD の活用

  • 1. Cassandra における SSD の活用 10 Oct, 2018 NVM Casual Talks #1 Yuji Ito Principal Software Engineer at Scalar, Inc. 1
  • 2. © 2018 Scalar, inc. Confidential Self introduction • プロセッサの研究 @ U-Tokyo – Transactional Memory: 並列プログラムの容易化、高速化 • SSD 開発を5年 @ Hitachi, Fixstars – ファームウェア開発が中心 (一時期は上位連携アクセラレーションとかも) – エンタープライズ向け (SAS, SATA, NVMe), コンシューマ向け (NVMe), モバ イル向け (UFS) • 2年半前〜現在、分散台帳に用いる分散ストレージ周り @ Orb, Scalar 2
  • 3. © 2018 Scalar, inc. Confidential Contents • Scalar DLT • Cassandra – 特徴 – Write – Read – CAS (LWT: Lightweight transaction) – SSD の活用 • Scalar DB with Cassandra – Transaction – Benchmark 3
  • 4. © 2018 Scalar, inc. Confidential 4 Distributed Database Spanner• Finality • Consistency • Scalability • Availability • Performance Blockchain • Tamper-Evidence • Determinism • Decentralization Scalar DLT Distributed Ledger Platform toward a fusion of Distributed Database and Blockchain Scalar DLT – Blockchain-inspired Distributed Ledger Platform Finality Consistency Scalability Availability Performance Tamper-Evidence Determinism Decentralization
  • 5. © 2018 Scalar, inc. Confidential Scalar DLT Software Architecture 5 Scalar DB Scalar DL Master-less Distributed Transaction Manager Tamper-Evident Distributed Ledger with SmartContract Scalar DM Distributed Deterministic-ordering Manager Scalar DLT Oracle On-Premise Distributed Storage Finality Consistency Scalability Availability Performance Tamper-Evidence Decentralization Tamper-Evidence Determinism Decentralization
  • 6. © 2018 Scalar, inc. Confidential Cassandra: 特徴 • Scalability – ノード数を増やすとスループットが向上 • Availability – 一部ノードに障害があっても引き続きサービスを提供可能 • CAS (Lightweight transactions) – 1レコードのアトミックな更新が可能 6
  • 7. © 2018 Scalar, inc. Confidential Cassandra • いずれのノードでもリクエストを受け取れる 7 C* cluster node node node node node Requester Requester Requester Requester Requester
  • 8. © 2018 Scalar, inc. Confidential Cassandra • Replication factor 分のノードが同じデータを持つ – ただし、一貫性保証は consistency level による 8 C* cluster node node node node node Requester AA’ A A Replication factor = 3 A’ A’ A’ Requester A’
  • 9. © 2018 Scalar, inc. Confidential Write (inside a node) • NAND Flash SSD と同様に、追記でデータを書き込む – 直接、間接的に大小のシーケンシャル・ライトが発生 9 https://docs.datastax.com/en/cassandra/3.0/cassandra/dml/dmlHowDataWritten.html
  • 10. © 2018 Scalar, inc. Confidential Write (inside a node) • メモリ上 – memtable – ライト・キャッシュのようなもの – リード対象 • ディスク上 – commitlog – レコード更新情報ログ – 不正電源遮断後の再起動時に使用 – SSTable – memtable 上の書き込みデータをまとめて永続化して作られる (後述) – リード対象 10
  • 11. © 2018 Scalar, inc. Confidential commitlog sync 11 • Write 毎 commitlog に書き込み完了しなければ本来永続化されない – デフォルト設定で、 commitlog_sync: periodic だと消える可能性あり – 以降では、即座に永続化する commitlog_sync: batch であるとする • 更新情報ログとして書き込むのでシーケンシャル・ライト – レコード・サイズや並列数によるが、ページ・サイズ 4KB 程度 • 不正電源遮断で memtable が消えても commitlog から復活 (Replay) https://docs.datastax.com/en/cassandra/3.0/cassandra/dml/dmlHowDataWritten.html
  • 12. © 2018 Scalar, inc. Confidential memtable flush • memtable が一杯になったら新しい SSTable を作る – 複数の更新データをまとめて永続化するので、大サイズのシーケンシャル・ラ イトになる – 古いデータを持つ SSTable に上書きするわけではないので、SSTable は たくさんできる 12 https://docs.datastax.com/en/cassandra/3.0/cassandra/dml/dmlHowDataWritten.html
  • 13. © 2018 Scalar, inc. Confidential Compaction • Cassandra データの GC のような処理 – 追記で書き込むので、上書きされた無効なデータが SSTable 残っている – SSTable が大量にあると Read 時にたくさんの SSTable を走査する必要が あり、Read 性能が低下する – 色々な compaction strategy が設定可能 • 複数の SSTable を読み込み、まとめる – 大サイズのシーケンシャル・リード/ライトが発生 13https://docs.datastax.com/en/cassandra/3.0/cassandra/dml/dmlHowDataMaintain.html
  • 14. © 2018 Scalar, inc. Confidential Read (inside a node) 14 • 色々な情報を参照して目的のデータを SSTable から読み出す (詳細割愛) – memtable 上に存在する場合はそれを読み出す – 基本的にはランダム・リードが発生 https://docs.datastax.com/en/cassandra/3.0/cassandra/dml/dmlAboutReads.html
  • 15. © 2018 Scalar, inc. Confidential CAS (LWT: Lightweight transactions) • あるレコードについて、複数ノード(replication factor分)で同じ値を持っているこ とを保証する – Paxos ベースのコンセンサス・アルゴリズムを利用 – ざっくり言えば、過半数ノードが同じ値で読み書きできたら成功 – 処理過程で Paxos state を逐一 write している (小サイズ) – CAS Read では 1回、CAS Write では 3 回の Paxos テーブル更新 write が必要 → CAS Read でも 1 回の write が発生、CAS Write ではユーザテーブ ルと合わせ、4 回 write が発生 15 Paxos-ID State a1-1111 proposed Key Val a1 A’ Paxos table User table 3回更新 1回更新
  • 16. © 2018 Scalar, inc. Confidential I/O パターンの整理 16 I/O pattern Seq. read Seq. write Rnd. read Rnd. write commitlog sync - Small size - - memtable flush - Large size - - Compaction Large size Large size - - Read a record - - Small size - CAS - Small size Small size -
  • 17. © 2018 Scalar, inc. Confidential I/O パターンの整理 • Throughput (MB/s) が重要 (大サイズのシーケンシャルアクセス) – memtable flush – Compaction • IOPS & レイテンシ が重要 (小サイズのアクセス) – commitlog sync – 特に CAS 操作 – Read a record 17
  • 18. © 2018 Scalar, inc. Confidential SSD の活用 • 各レコードの read 処理では、ランダム・アクセスで効果あり • 現状、write スループットは CPU ネックになる – 多並列でも数十 KIOPS もいかない – 多並列になるほどまとめて書き込みやすくなる – 追記型なので、シーケンシャル・ライトでディスク(HDD, SSD)に優しい I/O – ただし、レイテンシは重要 – きちんと永続化させるなら commitlog を書くまでリクエストは完了しな い – CAS では特に顕在化する 18
  • 19. © 2018 Scalar, inc. Confidential Ref. GroupCommitLog • commitlog sync での IOPS 増加を和らげる施策: GroupCommitLog – Cassandra コミュニティに提案、コミット済み [CASSANDRA-13530] – Cassandra 4.0 (未リリース) から使用可能 – Write リクエストを待たせて commitlog への永続化を一定時間毎にまとめ て行う – periodic と異なり、永続化完了までリクエストを待たせるので、データ消 失の可能性なし – batch に比べて、まとめて永続化するので、ディスクへの I/O 数が減る 19
  • 20. Scalar DB Master-less Distributed Transaction Manager 20
  • 21. © 2018 Scalar, inc. Confidential Cassandra はトランザクション機能なし • CAS の対象は 1 レコードのみなので、複数のレコードをアトミックに更新できない 21 a = cassandra.get(keyA); b = cassandra.get(keyB); a.balance -= 100; b.balance += 100; cassandra.put(a); cassandra.put(b); c = cassandra.get(keyC); b = cassandra.get(keyB); c.balance -= 500; b.balance += 500; cassandra.put(c); cassandra.put(b); TX1 (A から B への送金) TX2 (C から B への送金) time TX1, TX2 ともに b の balance は更新前なので 1000 TX1 により b の balance は 1100 へ更新 TX2 により b の balance は 1500 へ更新 (TX1 がなかったことになる) b の balance は 1000
  • 22. © 2018 Scalar, inc. Confidential Scalar DB • トランザクション機能を提供 – Cassandra の Scalability, Availability を活かしつつ、ACID トランザ クションを実行可能 – Cassandra のテーブル作成時にメタカラムを追加 – アプリケーション側で Java ライブラリ API を呼び出すだけ – データ自体はすべて Cassandra で管理されるので、Spark などの既存の 解析ツールも使える • CAS を多用するため、小サイズ write は増加する → commitlog 用には SSD の使用を推奨 22
  • 23. © 2018 Scalar, inc. Confidential Benchmark • Node machine – AWS EC2 i3.xlarge – 4 vCPUs, 30.5 GB RAM, NVMe SSD 950 GB • Cassandra cluster – 3 nodes – Replication factor: 3 • Workload – A transaction transfers an amount from an account to another one – 100,000 accounts 23
  • 24. © 2018 Scalar, inc. Confidential TPS (Transaction per second) • 200 秒測定 – クラスタ構成はほぼ最小構成 – これをベースに scale-up, scale-out 可能 – CPU ネック 24
  • 25. © 2018 Scalar, inc. Confidential Disk read (48 hours) • IOPS, throughput ともに compaction によって時々高くなる 25
  • 26. © 2018 Scalar, inc. Confidential Disk write (48 hours) • IOPS: commitlog が中心 • Throughput: flush や compaction で時々高くなる 26
  • 27. © 2018 Scalar, inc. Confidential まとめ • Cassandra – ライトはシーケンシャル・アクセスが主で、大小サイズが混在 – リードはランダム、シーケンシャル混在 – リクエストするアプリケーションによるが、Throughput, IOPS ともに必要とす るため、SSD の使用が好ましい • Scalar DB – Cassandra で ACID トランザクション可能 – CAS のためにある程度 IOPS も必要とするので SSD 推奨 27
  • 28. Scalar DB 10 Oct. 2018 (本日) オープンソースとして公開 https://github.com/scalar-labs/scalardb 28
  • 29. 29

Hinweis der Redaktion

  1. コンポーネント、ネーミング修正 要件はここに