Apache Cassandra - Einf¼hrung

download Apache Cassandra - Einf¼hrung

of 61

  • date post

    16-Jul-2015
  • Category

    Software

  • view

    359
  • download

    5

Embed Size (px)

Transcript of Apache Cassandra - Einf¼hrung

  • Referent: Andreas Finke

    Sichere Systeme Prof. Dr. Christoph Pleier

    WS2014/15

    15. Januar 2015

    Hochverfgbares NoSQL Datenbank System

  • Aspekte IT-Sicherheit Verfgbarkeit Datensicherheit

    Einsatz von Cassandra im Unternehmen seit 2012 Finanzumfeld (Kurse, Charts) Vorher proprietre Lsung

    600 Schreibzugriffe/Sek

    Cassandra 26.000 Schreibzugriffe/Sek

    2

    Motivation

    http://keyinvest-ch.ubs.com/marktuebersicht/ubs-deri-risk-indikator

  • Apache Cassandra Cassandra Architektur Daten-Replikation Konsistenz Sicherheit Demo: Daten Modellierung mit CQL

    3

    Agenda

  • Verteilte spaltenorientierte NoSQL Datenbank Entwickelt bei Facebook Open Source: 2008 (github.com/apache/cassandra) Aktuelle Version: 2.1.2 (Stand: 13.Januar 2015) Kein Master = Gleichwertige Nodes API

    CQL (Cassandra Query Language) Apache Thrift

    Treiber Java, Python, Ruby, NodeJS, C#

    4

    Apache Cassandra

    A

    D B

    CCassandra Node

    r/w

    r/w

  • SQL: Structured Query Language Syntax fr Abfragen auf relationale Datenbanken Beispiele: MySql, MsSQL Server, Postgres

    NoSQL: Not Only SQL (seit 2009) Sammelbegriff fr nicht relationale Datenbanken

    Weitere Unterteilungen

    5

    Exkurs: NoSQL

    Typ BeispieleSpaltenorientiert Cassandra, HBase

    Dokumentenbasiert MongoDB, CouchDBKey-Value Store Redis, Memcache

    Graph DB Neo4j

  • Bietet horizontale lineare Skalierbarkeit Grte produktive Installationen

    Apple: 75T Nodes, 10 PB, 1000+ Cluster, Mehrere Millionen Op/Sek Netflix: 2,7T Nodes, 420 TB, ber 1 Billion Op/Tag Easou: 270 Nodes, 300 TB, 800 Millionen Anfragen/Tag Ebay: 100 Nodes, 250 TB

    6

    Apache Cassandra

    http://www.datastax.com/documentation/cassandra/2.0/cassandra/images/intro_cassandra.png

  • 7Apache Cassandra

    https://pbs.twimg.com/media/BxSWW9vCYAALQ58.jpg:large

    Apple Vortrag auf Cassandra Summit 2014

  • 8Apache Cassandra

    http://1.bp.blogspot.com/-ZFtW7MFMqZQ/TrG5ujuDGdI/AAAAAAAAAWw/heceeMD50x4/s1600/scale.png

    http://2.bp.blogspot.com/-yZqbhRguaH0/TrHO9tg06aI/AAAAAAAAAXI/NVTpTvc2pAw/s1600/activity.png

    Netflix Benchmark

  • Gegrndet: April 2010 von Jonathan Ellis Enterprise Support fr Apache Cassandra ~80% der Commits auf Github DataStax Enterprise

    Apache Cassandra + Extra features

    Datastax Community (frei verfgbar) OpsCenter (GUI) DevCenter (Daten Modellierung)

    9

    Apache Cassandra

    http://www.datastax.com/wp-content/themes/datastax-2013/images/opscenter/opsc4-ring-view-c-hadoop-solr.jpg

    Datastax

  • Apache Cassandra

    Cassandra Architektur Daten-Replikation Konsistenz Sicherheit Demo: Daten Modellierung mit CQL

    10

    Agenda

  • Gesetzmigkeit fr verteilte Systeme (2002 MIT/Boston)

    Cassandra bietet A + P bessere Konsistenz gegen hhere Latenz

    11

    Cassandra Architektur

    Konsistenz

    Verfgbarkeit Partitionstoleranz

    C

    A P

    Ein verteiltes System kann nur zwei der drei Eigenschaften Konsistenz, Verfgbarkeit sowie Partitionstoleranz zur selben Zeit gewhrleisten

    Theoretische Grundlagen: CAP - Theorem

  • Quelle: Amazon (Oktober 2007) Problem: Notwendigkeit fr ~100% Verfgbarkeit

    Lsung: Partitionierung der Daten auf 1-n gleichwertige Nodes (masterless) Gleichmige Verteilung via Consistent Hashing Hohe Verfgbarkeit mittels n * Replikation der Daten Intra-Cluster Kommunikations Protokoll (Gossip)

    12

    Cassandra Architektur

    [] even if disks are failing, network routes are flapping, or data centers are being destroyed by tornados []

    Theoretische Grundlagen: Dynamo Paper

  • Quelle: Google (November 2006) Problem: Skalierung von massiven Datenmengen (PB) Lsung:

    Einfaches Datenmodell: row-key> columns (keine Relationen) Logische Strukturierung in ColumnFamilies (analog SQL: Table) Persistenz: n * SSTable / ColumnFamily Caching pro ColumnFamily:

    Scan Cache: Index ber Spalten in SSTable

    Block Cache: Ganze Zeile im RAM

    13

    Cassandra Architektur

    column1 column2row-key-1 xrow-key-2 y

    Theoretische Grundlagen: Big Table Paper

  • Quelle: Google (November 2006) Problem: Skalierung von massiven Datenmengen (PB) Lsung:

    Einfaches Datenmodell: row-key> columns (keine Relationen) Logische Strukturierung in ColumnFamilies (analog SQL: Table) Persistenz: n * SSTable / ColumnFamily Caching pro ColumnFamily:

    Scan Cache: Index ber Spalten in SSTable

    Block Cache: Ganze Zeile im RAM

    13

    Cassandra Architektur

    column1 column2row-key-1 xrow-key-2 y

    Theoretische Grundlagen: Big Table Paper

    RAM

  • Quelle: Google (November 2006) Problem: Skalierung von massiven Datenmengen (PB) Lsung:

    Einfaches Datenmodell: row-key> columns (keine Relationen) Logische Strukturierung in ColumnFamilies (analog SQL: Table) Persistenz: n * SSTable / ColumnFamily Caching pro ColumnFamily:

    Scan Cache: Index ber Spalten in SSTable

    Block Cache: Ganze Zeile im RAM

    13

    Cassandra Architektur

    column1 column2row-key-1 xrow-key-2 y

    Theoretische Grundlagen: Big Table Paper

    RAM

    RAM

  • 14

    Cassandra Architektur

    API (CQL/Thrift)

    Cluster (Dynamo)

    Storage (Big Table)

    Node 1

    API (CQL/Thrift)

    Cluster (Dynamo)

    Storage (Big Table)

    Node 2

    API (CQL/Thrift)

    Cluster (Dynamo)

    Storage (Big Table)

    Node n

    Client Request

    Schichtenmodell

    Daten

    Gossip

  • Partitioner entscheiden ber Platzierung auf Node Murmur3Partitioner (MurmurHash), RandomPartitioner (MD5)

    Murmur3 Bereich: [-263, 263-1] Aufteilung des Bereichs in virtuelle Nodes Zuordnung von virtuellen Nodes zu echten Nodes

    Node 1 > n virtueller Node Verschiedene Anzahl von virtuellen Nodes mglich (Lastenverteilung)

    Erweiterung des Clusters = Minimale Daten-Neuverteilung

    15

    Cassandra ArchitekturConsistent Hashing und Virtual Nodes

  • 16

    Cassandra ArchitekturVirtual Nodes

    Node Anzahl virtuelle NodesA 256

    B 256

    512

    A

    B

    Hashes pro virtueller Node = 264/512

  • 17

    Cassandra ArchitekturVirtual Nodes

    17

    Node Anzahl virtuelle Nodes

    A 256

    B 256

    C 256

    768

    A

    C

    Hashes pro virtueller Node = 264/768

    B

  • 17

    Cassandra ArchitekturVirtual Nodes

    17

    Node Anzahl virtuelle Nodes

    A 256

    B 256

    C 256

    768

    A

    C

    Hashes pro virtueller Node = 264/768

    B

    Daten

    Daten

  • 18

    Cassandra ArchitekturVirtual Nodes

    Beispiel: nodetool status

  • 1. Schreib-Anfrage zuerst in ein Commit Log2. In-Memory Speicherung in Memtables3. Frequentielle Persistenz in SSTables (Flush)4. Asynchrone frequentielle Komprimierung (Compaction)

    19

    Cassandra ArchitekturLokales Schreiben

    RAM

    HDD

    Daten

    Commitlog

    Memtables

    SSTables

    Flush

    Komprimierte SSTable

    Compaction

  • Apache Cassandra Cassandra Architektur

    Daten-Replikation Konsistenz Sicherheit Demo: Daten Modellierung mit CQL

    20

    Agenda

  • Design: Festplatten werden ausfallen Lsung: Replication Factor (RF = N) pro Keyspace Strategien bestimmen Ort der Kopien (Replica Set) SimpleStrategy:

    Einfache Verteilung von N-1 Kopien auf die nchsten Nodes im Ring

    NetworkTopologyStrategy: Zuordnung der Nodes zu Datacenter (DC) und Rack Verteilung von N-1 Kopien unter Beachtung der Netzwerk Topology Vermeidung der Speicherung von Kopien im selben Rack Verteilung der Kopien auf weitere Datencenter

    21

    Daten-Replikationbersicht

  • Beispiel: SimpleStrategy (RF = 2)

    22

    Daten-Replikation

    A

    D B

    C

    Daten

    Simple Strategy

    Coordinator Node

  • Beispiel: SimpleStrategy (RF = 2)

    22

    Daten-Replikation

    A

    D B

    C

    Daten

    Daten

    Kopie

    nchster Node in Uhrzeigerrichtung

    Simple Strategy

    Coordinator Node

  • Beispiel: NetworkTopologyStrategy (RF = DC1:2)

    23

    Daten-Replikation

    A

    D B

    C

    Daten

    DC1Rack 1 Rack 2

    A CB D

    NetworkTopologyStrategy

    Coordinator Node

  • Beispiel: NetworkTopologyStrategy (RF = DC1:2)

    23

    Daten-Replikation

    A

    D B

    C

    Daten

    Daten

    Kopie

    DC1Rack 1 Rack 2

    A CB D

    nchster Node im anderen Rack

    NetworkTopologyStrategy

    Coordinator Node

  • Beispiel: NetworkTopologyStrategy (RF = DC1:2, DC2:2)

    24

    Daten-Replikation

    Daten

    A

    D B

    C

    DC1 DC2Rack 1 Rack 2 Rack 1 Rack2

    A C E GB D F H

    NetworkTopologyStrategy

    E

    H F

    G

    DC1 DC2Coordinator Node

  • Beispiel: NetworkTopologyStrategy (RF = DC1:2, DC2:2)

    24

    Daten-Replikation

    Daten

    A

    D B

    C

    DC1 DC2Rack 1 Rack 2 Rack 1 Rack2

    A C E GB D F H

    NetworkTopologyStrategy

    E

    H F

    G

    DC1 DC2Coordinator Node

  • Hinted Handoff Kurzfristige Lsung zur Wiederherstellung von Daten Bei Ausfall eines Nodes merkt sich ein anderer Node die Daten Wenn Node wieder verfgbar ist werden gemerkte Daten geschrieben

    25

    Daten-Replikation

    Daten

    A

    D B

    C

    Ausfall Replica Set

    Ausfall eines Nodes

    Coordinator Node

  • Hinted Handoff Kurzfristige Lsung zur Wiederherstellung von Daten