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.
©2015 DataStax Confidential. Do not distribute without consent.
Apache Cassandra と Sparkの美味しい関係
1
DataStax
原沢滋
@Cassandraja...
©2015 DataStax Confidential. Do not distribute without consent.
最初にApache Cassandraとは
©2015 DataStax Confidential. Do not distribute without consent.
x
Apache Cassandraとは分散データベース
Apache Cassandra とは
Amazon Dyn...
©2015 DataStax Confidential. Do not distribute without consent.
100,000+ ノード
数十ペタバイト
数百万件/秒以上オペレーション
最大クラスタのノード数1,000+
バージョ...
©2015 DataStax Confidential. Do not distribute without consent.
ソニーにおけるApache Cassandra
•  Cassandraを6ヶ月でプロダクション
•  リニアスケーラ...
©2015 DataStax Confidential. Do not distribute without consent.
NetflixにおけるDataStax Enterprise(DSE)
(Apache Cassandra)
Netf...
©2015 DataStax Confidential. Do not distribute without consent.
 7
©2015 DataStax Confidential. Do not distribute without consent.
 8
©2015 DataStax Confidential. Do not distribute without consent.
C*
C*
C*
C*C*
C*
Cassandra のアーキテクチャ
•  Shared Nothing (データだ...
©2015 DataStax Confidential. Do not distribute without consent.
Cassandra のアーキテクチャ(マルチデータセンター)
•  複数のデータセンター内でのレプリケーションも自動で...
©2015 DataStax Confidential. Do not distribute without consent.
Cassandra のアーキテクチャ(マルチデータセンター)
•  複数のデータセンター内でのレプリケーションも自動で...
©2015 DataStax Confidential. Do not distribute without consent.
C*
C*
C*
C*C*
C*
Cassandra 向きのアプリケーション
7369,原沢
7369,原沢
7369...
©2015 DataStax Confidential. Do not distribute without consent.
たとえば: 気象観測データの場合
すべての気象観測所のデータを

リアルタイムに時系列でCassandraに保持
アプ...
©2015 DataStax Confidential. Do not distribute without consent.
CREATE TABLE raw_weather_data (!
wsid text,!
year int,!
mon...
©2015 DataStax Confidential. Do not distribute without consent.
渋谷、東京
2015年12月9日
最高気温:17℃
最低気温:7℃
平均気温:10℃
でもちょっと統計を取ろうとすると...
©2015 DataStax Confidential. Do not distribute without consent.
Max, Min, Avgとか使えないの? 
使えません
基本すべてのデータに対しての集約関数はCassandraでは...
©2015 DataStax Confidential. Do not distribute without consent.
どういうことか?
C*
C*
C*
C*C*
C*
7369,渋谷, 東京
7379,目黒,東京
7389,練馬,東京...
©2015 DataStax Confidential. Do not distribute without consent.
どういうことか?
C*
C*
C*
C*C*
C*
7369,渋谷, 東京
7379,目黒,東京
7389,練馬,東京...
©2015 DataStax Confidential. Do not distribute without consent.
ちなみに
C*
C*
C*
C*C*
C*
7369,渋谷, 東京
7379,目黒,東京
7389,練馬,東京
分散デ...
©2015 DataStax Confidential. Do not distribute without consent.
では、Apache Sparkとは?
©2015 DataStax Confidential. Do not distribute without consent.
Data Science at Scale
2009
©2015 DataStax Confidential. Do not distribute without consent.
Apache Sparkとは
Apache Spark is an open source cluster compu...
©2015 DataStax Confidential. Do not distribute without consent.
Sparkは大量データをスキャンするのが得意
Input Data
Map
Reduce
Intermediate D...
©2015 DataStax Confidential. Do not distribute without consent.
メモリーを使って
Input Data
Spark Intermediate Data
Output Data
ディス...
©2015 DataStax Confidential. Do not distribute without consent.
Spark Streaming
Near Real-time
SparkSQL
Structured Data
MLL...
©2015 DataStax Confidential. Do not distribute without consent.
Store a ton of data Analyze a ton of data
Cassandra と Spark...
©2015 DataStax Confidential. Do not distribute without consent.
Spark Streaming
Near Real-time
SparkSQL
Structured Data
MLL...
©2015 DataStax Confidential. Do not distribute without consent.
Spark Streaming
Near Real-time
SparkSQL
Structured Data
MLL...
©2015 DataStax Confidential. Do not distribute without consent.
Cassandra
Cassandra +
Spark
Join, Union No Yes
データ変換
(Trans...
©2015 DataStax Confidential. Do not distribute without consent.
もちろんCassandraと同じレプリケーション機能がありますのでデータは
レプリケーションされる
分散データを各
ノ...
©2015 DataStax Confidential. Do not distribute without consent.
えっ!! でもちょっと待って!!
Cassandra と Sparkの良い関係
てなるって
P17で
言ったじゃ
ん!...
©2015 DataStax Confidential. Do not distribute without consent.
はい・・・ 正しいです。
Cassandra と Sparkの良い関係
なので・・・
©2015 DataStax Confidential. Do not distribute without consent.
Cassandra と Sparkの良い関係
こうすれば完璧です。マルチデータセンター
オペレーショナル
環境
分析環...
©2015 DataStax Confidential. Do not distribute without consent.
ETL不要!!(リアルタイムのデータの反映)
Cassandra と Sparkの良い関係
オペレーション
©2015 DataStax Confidential. Do not distribute without consent.
リアルタイムにオペレーショナルに負担なしで分析
Cassandra と Sparkの良い関係
オペレーション
©2015 DataStax Confidential. Do not distribute without consent.
分析結果をリアルタイムでオペレーショナル環境に反映
Cassandra と Sparkの良い関係
分析結果の書き込みリ...
©2015 DataStax Confidential. Do not distribute without consent.
Executer
Master
Worker
Executer
Executer
ノード
各Cassandra+Spa...
©2015 DataStax Confidential. Do not distribute without consent.
Executer
Master
Worker
Executer
Executer
SELECT *!
FROM key...
©2015 DataStax Confidential. Do not distribute without consent.
Executer
Master
Worker
Executer
Executer
Spark RDD
Spark Pa...
©2015 DataStax Confidential. Do not distribute without consent.
Cassandra
Only DC
Cassandra
+ Spark DC
Spark Jobs
Spark Str...
©2015 DataStax Confidential. Do not distribute without consent.
Spark Streaming
Near Real-time
SparkSQL
Structured Data
MLL...
©2015 DataStax Confidential. Do not distribute without consent.
Store a ton of data Analyze a ton of data
Cassandra と Spark...
©2015 DataStax Confidential. Do not distribute without consent.
ありがとうございました
Twitter account: @cassandrajapanで情報発信しています
 
Upcoming SlideShare
Loading in …5
×

SparkとCassandraの美味しい関係

5,979 views

Published on

Apache CassandraのApache Sparkのお話し

Published in: Technology

SparkとCassandraの美味しい関係

  1. 1. ©2015 DataStax Confidential. Do not distribute without consent. Apache Cassandra と Sparkの美味しい関係 1 DataStax 原沢滋 @Cassandrajapan
  2. 2. ©2015 DataStax Confidential. Do not distribute without consent. 最初にApache Cassandraとは
  3. 3. ©2015 DataStax Confidential. Do not distribute without consent. x Apache Cassandraとは分散データベース Apache Cassandra とは Amazon Dynamo の分散ハッシュ テーブル(DHT)と、Google BigTable のKVSの2つの特徴を 併せ持つビッグデータ用分散 データベース •  Amazon DynamoとGoogle Bigtableの良い点を持つ •  高速パフォーマンスとリニアな拡張 •  SPOF(Single Point of Failure)がない、簡単に24時 間 x 365日ダウンさせないで運用が可能 •  完全な分散 •  柔軟なNoSQLデータモデル(スキーマーレス!) •  シンプルな運用管理 •  SQL ライクな言語CQLをサポートしている •  様々な無償ツールとドライバ/コネクタを持つ •  様々な整合性を選ぶ事が可能(CAP定理, BASE) +
  4. 4. ©2015 DataStax Confidential. Do not distribute without consent. 100,000+ ノード 数十ペタバイト 数百万件/秒以上オペレーション 最大クラスタのノード数1,000+ バージョンはv1.2 とv2.0を利用 (写真は昨年のもの)
  5. 5. ©2015 DataStax Confidential. Do not distribute without consent. ソニーにおけるApache Cassandra •  Cassandraを6ヶ月でプロダクション •  リニアスケーラビリティ •  パフォーマンス •  ダウンタイムがない •  運用が楽 •  コスト データスループット: Gigabytes/sec トランザクション: >200,000/sec データサイズ: Tens of terabytes
  6. 6. ©2015 DataStax Confidential. Do not distribute without consent. NetflixにおけるDataStax Enterprise(DSE) (Apache Cassandra) Netflix は映像ストリーミング配信会社 •  Netflix の全データベースのち95%を DSE を 利用 •  スループットは1千万トランザクション/秒 •  1日1兆トランザクションをDSE で処理 •  世界各地にある6つのデータセンターの Oracle を置き換え、100%クラウドで実現 •  AWSの大規模の再起動の際も全く問題なく24 時間x365日のサービスをCassandraで提供
  7. 7. ©2015 DataStax Confidential. Do not distribute without consent. 7
  8. 8. ©2015 DataStax Confidential. Do not distribute without consent. 8
  9. 9. ©2015 DataStax Confidential. Do not distribute without consent. C* C* C* C*C* C* Cassandra のアーキテクチャ •  Shared Nothing (データだけでなく機能まで) •  マスターという概念がなく、すべてのノードが完全に同じ機能を持つ •  ハイパフォーマンスでリニアにスケールする •  常にサービスを止めない レプリケーション (データのコピー) は何台に持たせるかを決められる Replication factor=3 7369,原沢 7369,原沢 7369,原沢 マシンが故障しても、 特定のマシンが特定の機能を 持っている訳ではないので、 他のデータのあるマシンが 同じ作業を全く問題なく処理 する事が可能
  10. 10. ©2015 DataStax Confidential. Do not distribute without consent. Cassandra のアーキテクチャ(マルチデータセンター) •  複数のデータセンター内でのレプリケーションも自動で行う事が可能 •  双方向のマルチデータセンターでのレプリケーションを行う •  どのデータセンターのどのノードを対象に対しても読み取り/書き込みが可能 •  故障時はドライバが判断して、接続できるノードに接続を行う C* C* C* C* C* C* C* C* C* C* C* C* C* C* C* C* C* C* 東京 大阪 クラウド 7369,原沢 7369,原沢 7369,原沢 7369,原沢 7369,原沢 7369,原沢 7369,原沢 7369,原沢 7369,原沢
  11. 11. ©2015 DataStax Confidential. Do not distribute without consent. Cassandra のアーキテクチャ(マルチデータセンター) •  複数のデータセンター内でのレプリケーションも自動で行う事が可能 •  双方向のマルチデータセンターでのレプリケーションを行う •  どのデータセンターのどのノードを対象に対しても読み取り/書き込みが可能 •  故障時はドライバが判断して、接続できるノードに接続を行う C* C* C* C* C* C* C* C* C* C* C* C* C* C* C* C* C* C* 東京 大阪 クラウド 7369,原沢 7369,原沢 7369,原沢 7369,原沢 7369,原沢 7369,原沢 7369,原沢 7369,原沢 7369,原沢
  12. 12. ©2015 DataStax Confidential. Do not distribute without consent. C* C* C* C*C* C* Cassandra 向きのアプリケーション 7369,原沢 7369,原沢 7369,原沢 WEB アプリケーション Mobile, センサー ゲーム、インターネット IoT リアルタイム
  13. 13. ©2015 DataStax Confidential. Do not distribute without consent. たとえば: 気象観測データの場合 すべての気象観測所のデータを
 リアルタイムに時系列でCassandraに保持 アプリケーションは時系列でデータを取得
  14. 14. ©2015 DataStax Confidential. Do not distribute without consent. CREATE TABLE raw_weather_data (! wsid text,! year int,! month int,! day int,! hour int,! temperature double,! dewpoint double,! pressure double,! wind_direction int,! wind_speed double,! sky_condition int,! sky_condition_text text,! one_hour_precip double,! six_hour_precip double,! PRIMARY KEY ((wsid), year, month, day, hour)! ) WITH CLUSTERING ORDER BY (year DESC, month DESC, day DESC, hour DESC);! 気象データを • 気象観測所のIDで検索 • 気象観測所のIDと時間で検索 • 気象観測所のIDと時間の範囲で検索 たとえば: 気象観測データの場合
  15. 15. ©2015 DataStax Confidential. Do not distribute without consent. 渋谷、東京 2015年12月9日 最高気温:17℃ 最低気温:7℃ 平均気温:10℃ でもちょっと統計を取ろうとすると大変 気象観測所のIDで集約統計したテーブルを用意 • 気象観測所のIDで検索 • 気象観測所のIDと時間で検索 • 気象観測所のIDと時間の範囲で検索 CREATE TABLE daily_aggregate_temperature (! wsid text,! year int,! month int,! day int,! high double,! low double,! mean double,! variance double,! stdev double,! PRIMARY KEY ((wsid), year, month, day)! ) WITH CLUSTERING ORDER BY (year DESC, month DESC, day DESC);!
  16. 16. ©2015 DataStax Confidential. Do not distribute without consent. Max, Min, Avgとか使えないの?  使えません 基本すべてのデータに対しての集約関数はCassandraではありません 但し、最新版(CQL 3.3, Cassandra 2.2以降)では、今回のような 場合だと、気象観測所ID(WSID)がPartition Keyなので使えます。 が・・・例えば、東京23区のMax, Min, Avgはダメです でもちょっと統計を取ろうとすると大変
  17. 17. ©2015 DataStax Confidential. Do not distribute without consent. どういうことか? C* C* C* C*C* C* 7369,渋谷, 東京 7379,目黒,東京 7389,練馬,東京 分散データベースにおいて、データを複数マシンから集めて集約するのは 大変!! 東京23区のデータの 集約をしたい 7369,品川, 東京 7369,新宿, 東京 7369,世田谷, 東京 すべてのノードが処理、 各ノードで複数件レンジス キャンする 分散オペレーショナルデータベースと しては最悪のケース なので させない(できない) !!!!
  18. 18. ©2015 DataStax Confidential. Do not distribute without consent. どういうことか? C* C* C* C*C* C* 7369,渋谷, 東京 7379,目黒,東京 7389,練馬,東京 分散データベースにおいて、集約するのは推奨しない でも・・・ 東京と渋谷のデータ だけ集約したい Partition Key(先ほど のケースだとWSID) のみ集約は可能 7369,品川, 東京 7369,新宿, 東京 7369,世田谷, 東京 1つのノードだけで レンジスキャンする 分散オペレーショナルデータベースと しては他のノードには影響を与えないので 許容する(Cassandra 2.2以降)
  19. 19. ©2015 DataStax Confidential. Do not distribute without consent. ちなみに C* C* C* C*C* C* 7369,渋谷, 東京 7379,目黒,東京 7389,練馬,東京 分散データベースにおいて、Keyでデータを検索するのは最高!! 渋谷、東京の 1レコードだけ検索 7369,品川, 東京 7369,新宿, 東京 7369,世田谷, 東京 1つのノードで1レコードだけ検 索 分散オペレーショナルデータベースの為 の処理 ベスト! しかも分散なので 複数ノードで大量に処理できる!! ✔ ✔
  20. 20. ©2015 DataStax Confidential. Do not distribute without consent. では、Apache Sparkとは?
  21. 21. ©2015 DataStax Confidential. Do not distribute without consent. Data Science at Scale 2009
  22. 22. ©2015 DataStax Confidential. Do not distribute without consent. Apache Sparkとは Apache Spark is an open source cluster computing framework originally developed in the AMPLab at University of California, Berkeley but was later donated to the Apache Software Foundation where it remains today. In contrast to Hadoop's two-stage disk-based MapReduce paradigm, Spark's multi-stage in-memory primitives provides performance up to 100 times faster for certain applications.[1] By allowing user programs to load data into a cluster's memory and query it repeatedly, Spark is well-suited to machine learning algorithms.[2] Spark requires a cluster manager and a distributed storage system. For cluster management, Spark supports standalone (native Spark cluster), Hadoop YARN, or Apache Mesos.[3] For distributed storage, Spark can interface with a wide variety, including Hadoop Distributed File System (HDFS),[4] Cassandra,[5] OpenStack Swift, Amazon S3, Kudu, or a custom solution can be implemented. Spark also supports a pseudo-distributed local mode, usually used only for development or testing purposes, where distributed storage is not required and the local file system can be used instead; in such a scenario, Spark is run on a single machine with one executor per CPU core. Spark had in excess of 465 contributors in 2014,[6] making it not only the most active project in the Apache Software Foundation[citation needed] but one of the most active open source big data projects.[citation needed 出典:Wikipedia https://en.wikipedia.org/wiki/Apache_Spark •  Apache Sparkはopen Source のクラスターコンピューティングフレームワーク •  AMPLab (UCB)が開発し、Apacheプロジェクトとなる •  HadoopのMapReduceのMapとReduceの二回層の作りではなく、In-Memoryでのマルチ層での処理が可能 •  パフォーマンスはMapReduceの100倍?(特定のものでは・・・) •  マシーン・ラーナニング向きであるとされる、なぜなら・・・ •  SparkはHadoopのように分散の複数のストレージを利用する(大量データ) •  クラスターマネージメントとしては、Standalone, YARN, Mesosをサポート •  いろいろの分散システムとのインターフェースを持つ(HDFS, Swift, S3, Kudu, CASSANDRA, etc…)
  23. 23. ©2015 DataStax Confidential. Do not distribute without consent. Sparkは大量データをスキャンするのが得意 Input Data Map Reduce Intermediate Data Output Data ディスクMapReduce
  24. 24. ©2015 DataStax Confidential. Do not distribute without consent. メモリーを使って Input Data Spark Intermediate Data Output Data ディスク メモリー
  25. 25. ©2015 DataStax Confidential. Do not distribute without consent. Spark Streaming Near Real-time SparkSQL Structured Data MLLib Machine Learning GraphX Graph Analysis Sparkは大量データをスキャンするのが得意
  26. 26. ©2015 DataStax Confidential. Do not distribute without consent. Store a ton of data Analyze a ton of data Cassandra と Sparkの良い関係 大量データをスキャンして 高速に集約、分析するのが得意 大量データをスキャンして 集約、分析するのが苦手 高速に、安全に大量のデータを 集めてくるのが得意 データを集めてくるのは不得意 バッチでデータを集めたりする 得意分野x得意分野 不得意分野を補う
  27. 27. ©2015 DataStax Confidential. Do not distribute without consent. Spark Streaming Near Real-time SparkSQL Structured Data MLLib Machine Learning GraphX Graph Analysis Cassandra と Sparkの良い関係
  28. 28. ©2015 DataStax Confidential. Do not distribute without consent. Spark Streaming Near Real-time SparkSQL Structured Data MLLib Machine Learning GraphX Graph Analysis CREATE TABLE raw_weather_data (! wsid text, ! year int, ! month int, ! day int, ! hour int, ! temperature double, ! dewpoint double, ! pressure double, ! wind_direction int, ! wind_speed double, ! sky_condition int, ! sky_condition_text text, ! one_hour_precip double, ! six_hour_precip double, ! PRIMARY KEY ((wsid), year, month, day, hour)! ) WITH CLUSTERING ORDER BY (year DESC, month DESC, day DESC, hour DESC);! Spark Connector! Cassandra と Sparkの良い関係
  29. 29. ©2015 DataStax Confidential. Do not distribute without consent. Cassandra Cassandra + Spark Join, Union No Yes データ変換 (Transformation) Limited Yes 外部データとの連携 No Yes 計算、集計 Limited Yes Cassandra と Sparkの良い関係
  30. 30. ©2015 DataStax Confidential. Do not distribute without consent. もちろんCassandraと同じレプリケーション機能がありますのでデータは レプリケーションされる 分散データを各 ノードで分析する
 パラレル処理 を行う事が可能 各ノードにCassandraとSpark Cassandra と Sparkの良い関係
  31. 31. ©2015 DataStax Confidential. Do not distribute without consent. えっ!! でもちょっと待って!! Cassandra と Sparkの良い関係 てなるって P17で 言ったじゃ ん! レンジスキャン したら
  32. 32. ©2015 DataStax Confidential. Do not distribute without consent. はい・・・ 正しいです。 Cassandra と Sparkの良い関係 なので・・・
  33. 33. ©2015 DataStax Confidential. Do not distribute without consent. Cassandra と Sparkの良い関係 こうすれば完璧です。マルチデータセンター オペレーショナル 環境 分析環境双方向レプリケーション
  34. 34. ©2015 DataStax Confidential. Do not distribute without consent. ETL不要!!(リアルタイムのデータの反映) Cassandra と Sparkの良い関係 オペレーション
  35. 35. ©2015 DataStax Confidential. Do not distribute without consent. リアルタイムにオペレーショナルに負担なしで分析 Cassandra と Sparkの良い関係 オペレーション
  36. 36. ©2015 DataStax Confidential. Do not distribute without consent. 分析結果をリアルタイムでオペレーショナル環境に反映 Cassandra と Sparkの良い関係 分析結果の書き込みリアルタイムの分析 結果の検索
  37. 37. ©2015 DataStax Confidential. Do not distribute without consent. Executer Master Worker Executer Executer ノード 各Cassandra+Sparkノードでは
  38. 38. ©2015 DataStax Confidential. Do not distribute without consent. Executer Master Worker Executer Executer SELECT *! FROM keyspace.table! WHERE token(pk) > 75! AND token(pk) <= 99! Spark RDD Spark Partition! Spark Partition! Spark Partition! Spark Connector! 各Cassandra+Sparkノードでは ノード
  39. 39. ©2015 DataStax Confidential. Do not distribute without consent. Executer Master Worker Executer Executer Spark RDD Spark Partition! Spark Partition! Spark Partition! 各Cassandra+Sparkノードでは ノード
  40. 40. ©2015 DataStax Confidential. Do not distribute without consent. Cassandra Only DC Cassandra + Spark DC Spark Jobs Spark Streaming Hot データ、Warm データCold データ MapReduce Pig Hive/Tez Spark Storm Hbase HDFS YARN データレイクのように バッチでデータを集めて分析処理 Nearリアルタイムで分析処理をSpark Streamingも可能 Cassandra と Sparkの良い関係
  41. 41. ©2015 DataStax Confidential. Do not distribute without consent. Spark Streaming Near Real-time SparkSQL Structured Data MLLib Machine Learning GraphX Graph Analysis CREATE TABLE raw_weather_data (! wsid text, ! year int, ! month int, ! day int, ! hour int, ! temperature double, ! dewpoint double, ! pressure double, ! wind_direction int, ! wind_speed double, ! sky_condition int, ! sky_condition_text text, ! one_hour_precip double, ! six_hour_precip double, ! PRIMARY KEY ((wsid), year, month, day, hour)! ) WITH CLUSTERING ORDER BY (year DESC, month DESC, day DESC, hour DESC);! Spark Connector! Cassandra と Sparkの良い関係 リアルタイム 分析 オペレーショナル データ 分析結果 検索結果 分析結果 分析結果 オペレーショナルデータ
  42. 42. ©2015 DataStax Confidential. Do not distribute without consent. Store a ton of data Analyze a ton of data Cassandra と Sparkの良い関係
  43. 43. ©2015 DataStax Confidential. Do not distribute without consent. ありがとうございました Twitter account: @cassandrajapanで情報発信しています  

×