SlideShare ist ein Scribd-Unternehmen logo
Big Game Data 
Big Game Data - Volker Janz 
1 
Event Tracking @ InnoGames
Big Game Data - Volker Janz 2
Big Game Data - Volker Janz 3 
Volker Janz 
 Lead Software Developer 
! @prenomenon
Big Game Data - Volker Janz 4
Big Game Data - Volker Janz 5 
InnoGames 
๏ Free-to-play Onlinespiele 
๏ Die Stämme 
๏ Forge of Empires 
๏ Grepolis 
๏ The West 
๏ 350 Mitarbeiter am Standort Hamburg 
๏ Mehr als 130 Millionen Registrierungen 
๏ International 
๏ Bester Arbeitgeber der Games Branche
" Was ist Big Data? 
Big Game Data - Volker Keynote Janz Template 
6
Was ist Big Data? " 
Big Game Data - Volker Janz 7
Was ist Big Data? " 
Volume 
Variety 
Velocity 
Big Game Data - Volker Janz 8
⚡ Events 
Big Game Data - Volker Keynote Janz Template 
9
Events ⚡ 
Big Game Data - Volker Janz 10 
! 
Ein Event ist ein Indikator für ein beobachtbares Geschehen 
bzw. eine Zustandsänderung in Form einer Text Nachricht 
welche aktiv sowie passiv durch oder für einen bestimmten, 
identifizierbaren Nutzer oder ein System zu einer bestimmten 
Zeit ausgelöst werden kann.
Events ⚡ 
Big Game Data - Volker Janz 11 
! 
Ein Event ist ein Indikator für ein beobachtbares Geschehen 
bzw. eine Zustandsänderung in Form einer Text Nachricht 
welche aktiv sowie passiv durch oder für einen bestimmten, 
identifizierbaren Nutzer oder ein System zu einer bestimmten 
Zeit ausgelöst werden kann.
Events ⚡ 
Identifikatoren Metadaten Parameter 
version/category/type/game/sprint/market/player/date/user_agent/param1/…/paramN 
0.1.0/prog/build/foe/2.0.1/de/4711/2014-10-01T13:37.000Z/ua/kaserne/10/20/15 
Big Game Data - Volker Janz 12
Events ⚡ 
Big Game Data - Volker Janz 13
Events ⚡ 
prog/build 
soci/message 
set/change 
prog/fight 
soci/invite 
Big Game Data - Volker Janz 14
Events ⚡ 
280M 
Events / Tag 
100G 
Daten / Tag 
3000G 
Daten / Monat 
Big Game Data - Volker Janz 15
Events ⚡ 
Big Game Data - Volker Janz 
16 
"  
Hadoop 
$ 
Game 
Server 
Drag Your Image Here 
$ 
Game 
Server 
$ 
Game 
Server 
 
 
 
Game Backend Tracking
% Event Tracking 
Big Game Data - Volker Keynote Janz Template 
17
Event Tracking % 
Aller Anfang 
ist schwer 
Big Game Data - Volker Janz 18
Event Tracking % 
Konsumieren und Schreiben 
der Events an die Korrekte 
Stelle im HDFS (Partitionierung) 
Big Game Data - Volker Janz 19 
$ 
Game Server 
' 
Event 
Gateway 
Event 
Client 
( 
Message 
Queue 
) 
Event 
Consumer 
 
Hadoop 
 
 
 
Entkoppeln und einfacher 
einstieg ins System 
Buffer und „Auffangbecken“ - 
Bereitstellung der Events an 
Consumer 
Verteilte Speicherung 
(HDFS) und Verarbeitung 
(MapReduce, Spark)
Event Tracking % 
' 
Gateway 
( 
Queue 
Twitter Kestrel 
Big Game Data - Volker Janz 20 
 
Client 
) 
Consumer 
Apache Storm 
Perl Script 
REST API mit Dropwizard
Event Tracking % 
Big Game Data - Volker Janz 21 
$ 
Game Server 
' 
REST API 
Perl 
Script 
( 
Kestrel 
 
Hadoop 
' 
REST API 
( 
Kestrel 
LB 
⚡ 
Storm 
Cluster 
⟳ 
Round 
Robin 
Event 
File 
Backup = 
nginx access.log + 
$request_body + 
logrotate + 
hadoop fs -put
( Kestrel 
https://github.com/twitter/kestrel 
Big Game Data - Volker Keynote Janz Template 
22
Kestrel ( 
Einfache, verteile 
Message queue 
Big Game Data - Volker Janz 23
Kestrel ( 
Persistent 
Hält Messages im Speicher für Speed 
Schreibt in Journal Dateien für Persistenz 
Big Game Data - Volker Janz 24
Kestrel ( 
Zuverlässig 
Clients können Messages „vorläufig“ lesen 
Bei Abbruch wird Message „zurückgelegt“ 
Big Game Data - Volker Janz 25
Kestrel ( 
Flexibel 
memcache Protokoll 
Einfaches text Protokoll 
Apache Thrift 
Big Game Data - Volker Janz 26
Kestrel ( 
 
Big Game Data - Volker Janz 27 
( 
geordnet 
( 
geordnet 
( 
locker geordnet
Kestrel ( 
 
Client 1 
Client 2 
Big Game Data - Volker Janz 28 
(events_queue 
( 
events_queue+fanout 

Kestrel ( 
new KestrelConfig { 
queues = new QueueBuilder() { 
name = "q" 
maxItems = 500 
} :: new QueueBuilder() { 
name = "q+fanout" 
maxAge = 1.minute 
} :: new QueueBuilder() { 
name = "x" 
maxMemorySize = 16.megabytes 
Big Game Data - Volker Janz 29 
} 
}
Kestrel ( 
Big Game Data - Volker Janz 30
⚡ Storm 
https://github.com/apache/storm 
Big Game Data - Volker Keynote Janz Template 
31
Storm ⚡ 
Apache™ Storm is a distributed real-time 
computation system for processing fast, large 
streams of data. 
Big Game Data - Volker Janz 32
Storm ⚡ 
❌ 
✓ 
Big Game Data - Volker Janz 33 
⏩ 
Schnell 
1.000.000 100 Byte 
Nachrichten pro 
Sekunde pro Node 
, 
Skalierbar 
Parallele, im Cluster 
verteilte 
Berechnung 
Fehlertolerant 
Ausfallende Worker 
und Nodes werden 
automatisch 
kompensiert 
Zuverlässig 
Garantiert „at least 
once“ Verarbeitung 
von Nachrichten
Storm ⚡ 
Storm verarbeitet Datenströme aus Tupeln 
Big Game Data - Volker Janz 34 
Tupel 
Tupel 
Tupel 
Tupel 
Datenstrom 
Ein Tupel ist eine Liste von Werten
Storm ⚡ 
Big Game Data - Volker Janz 35 
Spout 
Kestrel Spout hQtutpesl:l/e/ gvitohnu bD.caotemn/sntartöhmanemnarz/storm-kestrel
Storm ⚡ 
Bolt 
Verarbeitung von Tupeln 
Big Game Data - Volker Janz 36
Storm ⚡ 
 
In Datenbank schreiben 
Big Game Data - Volker Janz 37
Storm ⚡ 
 
Aus Datenbank lesen 
Big Game Data - Volker Janz 38
Storm ⚡ 
Optional weitere Tupel / 
Datenströme erzeugen 
HDFS Bolt https://github.com/ptgoetz/storm-hdfs 
Big Game Data - Volker Janz 39
Storm ⚡ 
Eine Topologie ist ein gerichteter 
azyklischer Graph und eine 
Komposition aus Spouts und Bolts 
Big Game Data - Volker Janz 40
λ Lambda Architektur 
Big Game Data - Volker Keynote Janz Template 
41
Lambda Architektur λ 
Abstrakte Architektur für die 
Realisierung von skalierbaren 
Echtzeitsystemen 
Big Game Data - Volker Janz 42
Lambda Architektur λ 
@nathanmarz 
http://manning.com/marz/ 
! 
 
Big Game Data - Volker Janz 43
Lambda Architektur λ 
Big Game Data - Volker Janz 44 
" 
Datenquellen 
Batch Layer 
Speed Layer 
Serving Layer Query
Lambda Architektur λ 
Big Game Data - Volker Janz 45 
" 
Datenquellen 
Query 
Batch Layer 
Speed Layer 
Serving Layer 
Master 
Datensatz 
Batch 
Views ⟳ 
Datenstrom Real-Time 
Views ⚡ 
Merged 
View &
Lambda Architektur λ 
Messaging 
System Query 
Big Game Data - Volker Janz 46 
DB / DFS 
Batch 
Processing 
System 
Stream Processing System 
DB Batch 
Views 
DB Real- 
Time Views 
Application
Hadoop 2 / YARN 
HDFS MapReduce 
/ Spark 
Big Game Data - Volker Janz 
Lambda Architektur 
47 
λ 
Kestrel Query 
Storm-YARN 
HOYA 
Hue / 
Apache Twill 
/ Apache 
Slider
Hadoop 2 / YARN 
Big Game Data - Volker Janz 
Lambda Architektur 
48 
λ 
Query 
HDFS MapReduce 
/ Spark 
HDFS 
Storm-YARN HOYA 
Apache Mesos
Customer in 
Hadoop / Hive 
Big Game Data - Volker Janz 
Lambda Architektur 
49 
λ 
Tweets in HBase 
select c.name, hb.tweets.count 
from hive.ods.`customers` c 
join hbase.user.`socialdata` hb 
on c.customerId = convert_from(hb.rowkey, UTF-8); 
http://incubator.apache.org/drill/
Lambda Architektur λ 
Big Game Data - Volker Janz 50 
$ 
Game Server 
' 
REST API 
Perl 
Script 
( 
Kestrel 
 
Hadoop 
' 
REST API 
( 
Kestrel 
LB 
⚡ 
Storm 
Cluster 
Event 
File 
⟳ 
Round 
Robin
Lambda Architektur λ 
LB ⟳ 
( 
Kestrel 
Big Game Data - Volker Janz 51 
$ 
Game Server 
' 
REST API 
Perl 
Script 
' 
REST API 
Event 
File 
( 
Kestrel 
 
Hadoop 
 
HBASE 
⚡ 
Storm 
Cluster 
Event 
Consumer
Lambda Architektur λ 
( 
Kestrel 
Big Game Data - Volker Janz 52 
$ 
Game Server 
' 
REST API 
Perl 
Script 
' 
REST API 
LB 
Event 
File 
( 
Kestrel 
 
Hadoop 
 
HBASE 
⚡ 
Storm 
Cluster 
Event 
Consumer 
⟳
Lambda Architektur λ 
⟳ 
( 
Kestrel 
Big Game Data - Volker Janz 
53 
$ 
Game Server 
' 
REST API 
Perl 
Script 
' 
REST API 
LB 
Event 
File 
( 
Kestrel 
Speed 
Layer Serving 
Layer 
 
Hadoop 
 
HBASE 
⚡ 
Storm 
Cluster 
Event 
Consumer Batch Layer 
Datenquelle
' 
Mark Twain 
If the only tool you have 
is a hammer, everything 
looks like a nail.
2012
' 
2014
( VIELEN DANK 
!@prenomenon " de.linkedin.com/in/vjanz/ 
0 
innogames.com 
jobs.innogames.com 
blog.innogames.com 
Big Game Data - Volker Janz 57
Backup Folien
Events ⚡ 
Big Game Data - Volker Janz 59 
 
Spieler verstehen 
und Spiele 
optimieren  
Ad-hoc Analysen 
und 
automatisiere 
Reports 
 
Mobile 
Plattformen 
differenzieren 
Drag Your Image Here 
' 
Datenbereitstellung 
für andere 
Systeme (BI) 
⚡ 
Echtzeitanalysen 
und Aktionen
Events ⚡ 
Big Game Data - Volker Janz 
60 
 
Client 
"  
Hadoop 
$ 
Game 
Server 
 
Client 
$ 
Game 
Server 
 
Client 
$ 
Game 
Server 
 
 
 
Client Side Tracking 
Game Backend Tracking
Storm ⚡ 
Spouts und Bolts werden als 
individuelle Tasks parallel im Cluster 
ausgeführt, die Verteilung der Tupel 
geschieht durch Stream Grouping 
Big Game Data - Volker Janz 61
Storm ⚡ 
public class RedisSpout extends BaseRichSpout { 
// ... 
@Override 
public void nextTuple() { 
String message = jedis.rpop(messageQueue); 
if(null != message && !message.equals(NIL)) { 
int pos = message.indexOf(","); 
String entityId = message.substring(0, pos); 
String recordData = message.substring(pos+1); 
collector.emit(new Values(entityId, recordData)); 
Big Game Data - Volker Janz 62 
} 
} 
}
Storm ⚡ 
Kestrel Spout https://github.com/nathanmarz/storm-kestrel 
Big Game Data - Volker Janz 63 
public 
collector 
} 
} 
}
Storm ⚡ 
public static class WordCount extends BaseBasicBolt { 
Map<String, Integer> counts = new HashMap<String, Integer>(); 
@Override 
public void execute(Tuple tuple, BasicOutputCollector collector) { 
String sentence = tuple.getString(0); 
for (String word : sentence.split(" ")) { 
collector.emit(tuple, new Values(word)); 
Big Game Data - Volker Janz 64 
} 
collector.ack(tuple); 
} 
}
Storm ⚡ 
Big Game Data - Volker Janz 65 
public 
collector 
} 
collector 
} 
} 
HDFS Bolt https://github.com/ptgoetz/storm-hdfs
Storm ⚡ 
public static void main(String[] args) throws Exception { 
TopologyBuilder builder = new TopologyBuilder(); 
builder.setSpout("spout", new RandomSentenceSpout(), 5); 
builder.setBolt("split", new SplitSentence(), 8).shuffleGrouping("spout"); 
builder.setBolt("count", new WordCount(), 12).fieldsGrouping("split", new Fields("word")); 
Config conf = new Config(); 
conf.setDebug(true); 
// ... 
LocalCluster cluster = new LocalCluster(); 
cluster.submitTopology("word-count", conf, builder.createTopology()); 
Thread.sleep(10000); 
cluster.shutdown(); 
Big Game Data - Volker Janz 66 
}
Storm ⚡ 
Executor 
Worker Prozess 
Worker Node 
⚙ 
Task 
⚙ 
Task 
⚙ 
Task 
⚙ 
Task 
Big Game Data - Volker Janz 67 
image 
Nimbus 
ZK
Storm ⚡ 
Alternativen? 
) http://odysseus.informatik.uni-oldenburg.de/ 
Big Game Data - Volker Janz 68
Kestrel ( 
SET <queue-name> <flags (ignored)> <expiration> <# bytes> * 
echo -e "SET game_events 0 0 16n0.1.0/prog/buildn" | nc localhost 22133 
) watch -t -d -n,1 'echo "DUMP_STATS" | nc localhost 22133' 
GET <queue-name>[options] + 
echo "GET game_events" | nc localhost 22133 
Big Game Data - Volker Janz 69
' 
Albert Einstein 
Not everything that can 
be counted counts. 
Not everything that 
counts can be counted.

Weitere ähnliche Inhalte

Andere mochten auch

Real-Time-Analytics mit Spark und Cassandra
Real-Time-Analytics mit Spark und CassandraReal-Time-Analytics mit Spark und Cassandra
Real-Time-Analytics mit Spark und Cassandra
Thomas Mann
 
Big Data Bullshit Bingo
Big Data Bullshit BingoBig Data Bullshit Bingo
Big Data Bullshit Bingo
Danny Linden
 
Big Data User Prediction: Siegfried Stepke, e-dialog
Big Data User Prediction: Siegfried Stepke, e-dialog Big Data User Prediction: Siegfried Stepke, e-dialog
Big Data User Prediction: Siegfried Stepke, e-dialog
e-dialog GmbH
 
6 Data Modeling for NoSQL 2/2
6 Data Modeling for NoSQL 2/26 Data Modeling for NoSQL 2/2
6 Data Modeling for NoSQL 2/2
Fabio Fumarola
 
Technologie und SEO: Cloud, Big Data und Mobile First angeschaut
Technologie und SEO: Cloud, Big Data und Mobile First angeschautTechnologie und SEO: Cloud, Big Data und Mobile First angeschaut
Technologie und SEO: Cloud, Big Data und Mobile First angeschaut
Ralf Schwoebel
 
A NoSQL Summer - The Year After
A NoSQL Summer - The Year AfterA NoSQL Summer - The Year After
A NoSQL Summer - The Year After
MeMo News AG
 
Big Data and Fast Data - Lambda Architecture in Action
Big Data and Fast Data - Lambda Architecture in ActionBig Data and Fast Data - Lambda Architecture in Action
Big Data and Fast Data - Lambda Architecture in Action
Guido Schmutz
 
Einführung Big Data
Einführung Big DataEinführung Big Data
Einführung Big Data
Stefan Kasberger
 
Big Data: Kunden auf der Spur
Big Data: Kunden auf der SpurBig Data: Kunden auf der Spur
Big Data: Kunden auf der Spur
B2B Smartdata GmbH
 
Apache Cassandra - Einführung
Apache Cassandra - EinführungApache Cassandra - Einführung
Apache Cassandra - Einführung
Andreas Finke
 
Big Data & High-Performance-Analytics
Big Data & High-Performance-AnalyticsBig Data & High-Performance-Analytics
Big Data & High-Performance-Analytics
SAS in Deutschland, Österreich und der Schweiz
 
Tech Talk Cassandra
Tech Talk CassandraTech Talk Cassandra
Tech Talk Cassandra
adesso AG
 

Andere mochten auch (12)

Real-Time-Analytics mit Spark und Cassandra
Real-Time-Analytics mit Spark und CassandraReal-Time-Analytics mit Spark und Cassandra
Real-Time-Analytics mit Spark und Cassandra
 
Big Data Bullshit Bingo
Big Data Bullshit BingoBig Data Bullshit Bingo
Big Data Bullshit Bingo
 
Big Data User Prediction: Siegfried Stepke, e-dialog
Big Data User Prediction: Siegfried Stepke, e-dialog Big Data User Prediction: Siegfried Stepke, e-dialog
Big Data User Prediction: Siegfried Stepke, e-dialog
 
6 Data Modeling for NoSQL 2/2
6 Data Modeling for NoSQL 2/26 Data Modeling for NoSQL 2/2
6 Data Modeling for NoSQL 2/2
 
Technologie und SEO: Cloud, Big Data und Mobile First angeschaut
Technologie und SEO: Cloud, Big Data und Mobile First angeschautTechnologie und SEO: Cloud, Big Data und Mobile First angeschaut
Technologie und SEO: Cloud, Big Data und Mobile First angeschaut
 
A NoSQL Summer - The Year After
A NoSQL Summer - The Year AfterA NoSQL Summer - The Year After
A NoSQL Summer - The Year After
 
Big Data and Fast Data - Lambda Architecture in Action
Big Data and Fast Data - Lambda Architecture in ActionBig Data and Fast Data - Lambda Architecture in Action
Big Data and Fast Data - Lambda Architecture in Action
 
Einführung Big Data
Einführung Big DataEinführung Big Data
Einführung Big Data
 
Big Data: Kunden auf der Spur
Big Data: Kunden auf der SpurBig Data: Kunden auf der Spur
Big Data: Kunden auf der Spur
 
Apache Cassandra - Einführung
Apache Cassandra - EinführungApache Cassandra - Einführung
Apache Cassandra - Einführung
 
Big Data & High-Performance-Analytics
Big Data & High-Performance-AnalyticsBig Data & High-Performance-Analytics
Big Data & High-Performance-Analytics
 
Tech Talk Cassandra
Tech Talk CassandraTech Talk Cassandra
Tech Talk Cassandra
 

Ähnlich wie Big Game Data - Event Tracking mit Storm, Kestrel und der Lambda Architektur - data2day 2014

Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit Microservices
QAware GmbH
 
Storage Trends für KMU
Storage Trends für KMUStorage Trends für KMU
Storage Trends für KMU
A. Baggenstos & Co. AG
 
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDASchulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Jörn Dinkla
 
Hochleistungsspeichersysteme für Datenanalyse an der TU Dresden (Michael Kluge)
Hochleistungsspeichersysteme für Datenanalyse an der TU Dresden (Michael Kluge)Hochleistungsspeichersysteme für Datenanalyse an der TU Dresden (Michael Kluge)
Hochleistungsspeichersysteme für Datenanalyse an der TU Dresden (Michael Kluge)
data://disrupted®
 
Docker Entwicklungsumgebung für TYPO3 mit xdebug
Docker Entwicklungsumgebung für TYPO3 mit xdebugDocker Entwicklungsumgebung für TYPO3 mit xdebug
Docker Entwicklungsumgebung für TYPO3 mit xdebug
Alexander Bohndorf
 
Workshop Logfile Analyse mit Splunk
Workshop Logfile Analyse mit SplunkWorkshop Logfile Analyse mit Splunk
Workshop Logfile Analyse mit Splunk
Hannes Richter
 
GPU-beschleunigtes Desktop-Remoting 2014-06 (Citrix Solutions Exchange 2014)
GPU-beschleunigtes Desktop-Remoting 2014-06 (Citrix Solutions Exchange 2014)GPU-beschleunigtes Desktop-Remoting 2014-06 (Citrix Solutions Exchange 2014)
GPU-beschleunigtes Desktop-Remoting 2014-06 (Citrix Solutions Exchange 2014)
bluecue consulting
 
FMK2018- Virtuelle Server Peter Schubert
FMK2018- Virtuelle Server Peter SchubertFMK2018- Virtuelle Server Peter Schubert
FMK2018- Virtuelle Server Peter Schubert
Verein FM Konferenz
 
Clickstream Analysis with Spark—Understanding Visitors in Realtime by Josef A...
Clickstream Analysis with Spark—Understanding Visitors in Realtime by Josef A...Clickstream Analysis with Spark—Understanding Visitors in Realtime by Josef A...
Clickstream Analysis with Spark—Understanding Visitors in Realtime by Josef A...
Spark Summit
 
Datenrettung in Virtuellen Umgebungen
Datenrettung in Virtuellen UmgebungenDatenrettung in Virtuellen Umgebungen
Datenrettung in Virtuellen Umgebungen
Kroll Ontrack GmbH
 
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
agilemethoden
 
Clickstream Analysis with Spark - Understanding Visitors in Real Time
Clickstream Analysis with Spark - Understanding Visitors in Real TimeClickstream Analysis with Spark - Understanding Visitors in Real Time
Clickstream Analysis with Spark - Understanding Visitors in Real Time
QAware GmbH
 
Clickstream Analysis with Spark
Clickstream Analysis with Spark Clickstream Analysis with Spark
Clickstream Analysis with Spark
Josef Adersberger
 
OSMC 2010 | Logverarbeitung mit syslog-ng - Status und Zukunft by Martin Grauel
OSMC 2010 | Logverarbeitung mit syslog-ng - Status und Zukunft by Martin GrauelOSMC 2010 | Logverarbeitung mit syslog-ng - Status und Zukunft by Martin Grauel
OSMC 2010 | Logverarbeitung mit syslog-ng - Status und Zukunft by Martin Grauel
NETWAYS
 
Elegantes In-Memory Computing mit Apache Ignite und Kubernetes. @data2day
Elegantes In-Memory Computing mit Apache Ignite und Kubernetes. @data2dayElegantes In-Memory Computing mit Apache Ignite und Kubernetes. @data2day
Elegantes In-Memory Computing mit Apache Ignite und Kubernetes. @data2day
Mario-Leander Reimer
 
In-Memory Computing mit Apache Ignite und Kubernetes
In-Memory Computing mit Apache Ignite und KubernetesIn-Memory Computing mit Apache Ignite und Kubernetes
In-Memory Computing mit Apache Ignite und Kubernetes
QAware GmbH
 
MapRecude: The Hadoop Connection
MapRecude: The Hadoop ConnectionMapRecude: The Hadoop Connection
MapRecude: The Hadoop Connection
vesparun
 
The Hadoop Connection
The Hadoop ConnectionThe Hadoop Connection
The Hadoop Connection
inovex GmbH
 
Windows 10 IoT Core
Windows 10 IoT CoreWindows 10 IoT Core
Windows 10 IoT Core
Jens Siebert
 
Power point stadtwerke cottbus w.will 16 9
Power point stadtwerke cottbus w.will 16 9Power point stadtwerke cottbus w.will 16 9
Power point stadtwerke cottbus w.will 16 9
Cloud-EcoSystem
 

Ähnlich wie Big Game Data - Event Tracking mit Storm, Kestrel und der Lambda Architektur - data2day 2014 (20)

Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit Microservices
 
Storage Trends für KMU
Storage Trends für KMUStorage Trends für KMU
Storage Trends für KMU
 
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDASchulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDA
 
Hochleistungsspeichersysteme für Datenanalyse an der TU Dresden (Michael Kluge)
Hochleistungsspeichersysteme für Datenanalyse an der TU Dresden (Michael Kluge)Hochleistungsspeichersysteme für Datenanalyse an der TU Dresden (Michael Kluge)
Hochleistungsspeichersysteme für Datenanalyse an der TU Dresden (Michael Kluge)
 
Docker Entwicklungsumgebung für TYPO3 mit xdebug
Docker Entwicklungsumgebung für TYPO3 mit xdebugDocker Entwicklungsumgebung für TYPO3 mit xdebug
Docker Entwicklungsumgebung für TYPO3 mit xdebug
 
Workshop Logfile Analyse mit Splunk
Workshop Logfile Analyse mit SplunkWorkshop Logfile Analyse mit Splunk
Workshop Logfile Analyse mit Splunk
 
GPU-beschleunigtes Desktop-Remoting 2014-06 (Citrix Solutions Exchange 2014)
GPU-beschleunigtes Desktop-Remoting 2014-06 (Citrix Solutions Exchange 2014)GPU-beschleunigtes Desktop-Remoting 2014-06 (Citrix Solutions Exchange 2014)
GPU-beschleunigtes Desktop-Remoting 2014-06 (Citrix Solutions Exchange 2014)
 
FMK2018- Virtuelle Server Peter Schubert
FMK2018- Virtuelle Server Peter SchubertFMK2018- Virtuelle Server Peter Schubert
FMK2018- Virtuelle Server Peter Schubert
 
Clickstream Analysis with Spark—Understanding Visitors in Realtime by Josef A...
Clickstream Analysis with Spark—Understanding Visitors in Realtime by Josef A...Clickstream Analysis with Spark—Understanding Visitors in Realtime by Josef A...
Clickstream Analysis with Spark—Understanding Visitors in Realtime by Josef A...
 
Datenrettung in Virtuellen Umgebungen
Datenrettung in Virtuellen UmgebungenDatenrettung in Virtuellen Umgebungen
Datenrettung in Virtuellen Umgebungen
 
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
 
Clickstream Analysis with Spark - Understanding Visitors in Real Time
Clickstream Analysis with Spark - Understanding Visitors in Real TimeClickstream Analysis with Spark - Understanding Visitors in Real Time
Clickstream Analysis with Spark - Understanding Visitors in Real Time
 
Clickstream Analysis with Spark
Clickstream Analysis with Spark Clickstream Analysis with Spark
Clickstream Analysis with Spark
 
OSMC 2010 | Logverarbeitung mit syslog-ng - Status und Zukunft by Martin Grauel
OSMC 2010 | Logverarbeitung mit syslog-ng - Status und Zukunft by Martin GrauelOSMC 2010 | Logverarbeitung mit syslog-ng - Status und Zukunft by Martin Grauel
OSMC 2010 | Logverarbeitung mit syslog-ng - Status und Zukunft by Martin Grauel
 
Elegantes In-Memory Computing mit Apache Ignite und Kubernetes. @data2day
Elegantes In-Memory Computing mit Apache Ignite und Kubernetes. @data2dayElegantes In-Memory Computing mit Apache Ignite und Kubernetes. @data2day
Elegantes In-Memory Computing mit Apache Ignite und Kubernetes. @data2day
 
In-Memory Computing mit Apache Ignite und Kubernetes
In-Memory Computing mit Apache Ignite und KubernetesIn-Memory Computing mit Apache Ignite und Kubernetes
In-Memory Computing mit Apache Ignite und Kubernetes
 
MapRecude: The Hadoop Connection
MapRecude: The Hadoop ConnectionMapRecude: The Hadoop Connection
MapRecude: The Hadoop Connection
 
The Hadoop Connection
The Hadoop ConnectionThe Hadoop Connection
The Hadoop Connection
 
Windows 10 IoT Core
Windows 10 IoT CoreWindows 10 IoT Core
Windows 10 IoT Core
 
Power point stadtwerke cottbus w.will 16 9
Power point stadtwerke cottbus w.will 16 9Power point stadtwerke cottbus w.will 16 9
Power point stadtwerke cottbus w.will 16 9
 

Big Game Data - Event Tracking mit Storm, Kestrel und der Lambda Architektur - data2day 2014

  • 1. Big Game Data Big Game Data - Volker Janz 1 Event Tracking @ InnoGames
  • 2. Big Game Data - Volker Janz 2
  • 3. Big Game Data - Volker Janz 3 Volker Janz  Lead Software Developer ! @prenomenon
  • 4. Big Game Data - Volker Janz 4
  • 5. Big Game Data - Volker Janz 5 InnoGames ๏ Free-to-play Onlinespiele ๏ Die Stämme ๏ Forge of Empires ๏ Grepolis ๏ The West ๏ 350 Mitarbeiter am Standort Hamburg ๏ Mehr als 130 Millionen Registrierungen ๏ International ๏ Bester Arbeitgeber der Games Branche
  • 6. " Was ist Big Data? Big Game Data - Volker Keynote Janz Template 6
  • 7. Was ist Big Data? " Big Game Data - Volker Janz 7
  • 8. Was ist Big Data? " Volume Variety Velocity Big Game Data - Volker Janz 8
  • 9. ⚡ Events Big Game Data - Volker Keynote Janz Template 9
  • 10. Events ⚡ Big Game Data - Volker Janz 10 ! Ein Event ist ein Indikator für ein beobachtbares Geschehen bzw. eine Zustandsänderung in Form einer Text Nachricht welche aktiv sowie passiv durch oder für einen bestimmten, identifizierbaren Nutzer oder ein System zu einer bestimmten Zeit ausgelöst werden kann.
  • 11. Events ⚡ Big Game Data - Volker Janz 11 ! Ein Event ist ein Indikator für ein beobachtbares Geschehen bzw. eine Zustandsänderung in Form einer Text Nachricht welche aktiv sowie passiv durch oder für einen bestimmten, identifizierbaren Nutzer oder ein System zu einer bestimmten Zeit ausgelöst werden kann.
  • 12. Events ⚡ Identifikatoren Metadaten Parameter version/category/type/game/sprint/market/player/date/user_agent/param1/…/paramN 0.1.0/prog/build/foe/2.0.1/de/4711/2014-10-01T13:37.000Z/ua/kaserne/10/20/15 Big Game Data - Volker Janz 12
  • 13. Events ⚡ Big Game Data - Volker Janz 13
  • 14. Events ⚡ prog/build soci/message set/change prog/fight soci/invite Big Game Data - Volker Janz 14
  • 15. Events ⚡ 280M Events / Tag 100G Daten / Tag 3000G Daten / Monat Big Game Data - Volker Janz 15
  • 16. Events ⚡ Big Game Data - Volker Janz 16 "  Hadoop $ Game Server Drag Your Image Here $ Game Server $ Game Server    Game Backend Tracking
  • 17. % Event Tracking Big Game Data - Volker Keynote Janz Template 17
  • 18. Event Tracking % Aller Anfang ist schwer Big Game Data - Volker Janz 18
  • 19. Event Tracking % Konsumieren und Schreiben der Events an die Korrekte Stelle im HDFS (Partitionierung) Big Game Data - Volker Janz 19 $ Game Server ' Event Gateway Event Client ( Message Queue ) Event Consumer  Hadoop    Entkoppeln und einfacher einstieg ins System Buffer und „Auffangbecken“ - Bereitstellung der Events an Consumer Verteilte Speicherung (HDFS) und Verarbeitung (MapReduce, Spark)
  • 20. Event Tracking % ' Gateway ( Queue Twitter Kestrel Big Game Data - Volker Janz 20  Client ) Consumer Apache Storm Perl Script REST API mit Dropwizard
  • 21. Event Tracking % Big Game Data - Volker Janz 21 $ Game Server ' REST API Perl Script ( Kestrel  Hadoop ' REST API ( Kestrel LB ⚡ Storm Cluster ⟳ Round Robin Event File Backup = nginx access.log + $request_body + logrotate + hadoop fs -put
  • 22. ( Kestrel https://github.com/twitter/kestrel Big Game Data - Volker Keynote Janz Template 22
  • 23. Kestrel ( Einfache, verteile Message queue Big Game Data - Volker Janz 23
  • 24. Kestrel ( Persistent Hält Messages im Speicher für Speed Schreibt in Journal Dateien für Persistenz Big Game Data - Volker Janz 24
  • 25. Kestrel ( Zuverlässig Clients können Messages „vorläufig“ lesen Bei Abbruch wird Message „zurückgelegt“ Big Game Data - Volker Janz 25
  • 26. Kestrel ( Flexibel memcache Protokoll Einfaches text Protokoll Apache Thrift Big Game Data - Volker Janz 26
  • 27. Kestrel (  Big Game Data - Volker Janz 27 ( geordnet ( geordnet ( locker geordnet
  • 28. Kestrel (  Client 1 Client 2 Big Game Data - Volker Janz 28 (events_queue ( events_queue+fanout 
  • 29. Kestrel ( new KestrelConfig { queues = new QueueBuilder() { name = "q" maxItems = 500 } :: new QueueBuilder() { name = "q+fanout" maxAge = 1.minute } :: new QueueBuilder() { name = "x" maxMemorySize = 16.megabytes Big Game Data - Volker Janz 29 } }
  • 30. Kestrel ( Big Game Data - Volker Janz 30
  • 31. ⚡ Storm https://github.com/apache/storm Big Game Data - Volker Keynote Janz Template 31
  • 32. Storm ⚡ Apache™ Storm is a distributed real-time computation system for processing fast, large streams of data. Big Game Data - Volker Janz 32
  • 33. Storm ⚡ ❌ ✓ Big Game Data - Volker Janz 33 ⏩ Schnell 1.000.000 100 Byte Nachrichten pro Sekunde pro Node , Skalierbar Parallele, im Cluster verteilte Berechnung Fehlertolerant Ausfallende Worker und Nodes werden automatisch kompensiert Zuverlässig Garantiert „at least once“ Verarbeitung von Nachrichten
  • 34. Storm ⚡ Storm verarbeitet Datenströme aus Tupeln Big Game Data - Volker Janz 34 Tupel Tupel Tupel Tupel Datenstrom Ein Tupel ist eine Liste von Werten
  • 35. Storm ⚡ Big Game Data - Volker Janz 35 Spout Kestrel Spout hQtutpesl:l/e/ gvitohnu bD.caotemn/sntartöhmanemnarz/storm-kestrel
  • 36. Storm ⚡ Bolt Verarbeitung von Tupeln Big Game Data - Volker Janz 36
  • 37. Storm ⚡  In Datenbank schreiben Big Game Data - Volker Janz 37
  • 38. Storm ⚡  Aus Datenbank lesen Big Game Data - Volker Janz 38
  • 39. Storm ⚡ Optional weitere Tupel / Datenströme erzeugen HDFS Bolt https://github.com/ptgoetz/storm-hdfs Big Game Data - Volker Janz 39
  • 40. Storm ⚡ Eine Topologie ist ein gerichteter azyklischer Graph und eine Komposition aus Spouts und Bolts Big Game Data - Volker Janz 40
  • 41. λ Lambda Architektur Big Game Data - Volker Keynote Janz Template 41
  • 42. Lambda Architektur λ Abstrakte Architektur für die Realisierung von skalierbaren Echtzeitsystemen Big Game Data - Volker Janz 42
  • 43. Lambda Architektur λ @nathanmarz http://manning.com/marz/ !  Big Game Data - Volker Janz 43
  • 44. Lambda Architektur λ Big Game Data - Volker Janz 44 " Datenquellen Batch Layer Speed Layer Serving Layer Query
  • 45. Lambda Architektur λ Big Game Data - Volker Janz 45 " Datenquellen Query Batch Layer Speed Layer Serving Layer Master Datensatz Batch Views ⟳ Datenstrom Real-Time Views ⚡ Merged View &
  • 46. Lambda Architektur λ Messaging System Query Big Game Data - Volker Janz 46 DB / DFS Batch Processing System Stream Processing System DB Batch Views DB Real- Time Views Application
  • 47. Hadoop 2 / YARN HDFS MapReduce / Spark Big Game Data - Volker Janz Lambda Architektur 47 λ Kestrel Query Storm-YARN HOYA Hue / Apache Twill / Apache Slider
  • 48. Hadoop 2 / YARN Big Game Data - Volker Janz Lambda Architektur 48 λ Query HDFS MapReduce / Spark HDFS Storm-YARN HOYA Apache Mesos
  • 49. Customer in Hadoop / Hive Big Game Data - Volker Janz Lambda Architektur 49 λ Tweets in HBase select c.name, hb.tweets.count from hive.ods.`customers` c join hbase.user.`socialdata` hb on c.customerId = convert_from(hb.rowkey, UTF-8); http://incubator.apache.org/drill/
  • 50. Lambda Architektur λ Big Game Data - Volker Janz 50 $ Game Server ' REST API Perl Script ( Kestrel  Hadoop ' REST API ( Kestrel LB ⚡ Storm Cluster Event File ⟳ Round Robin
  • 51. Lambda Architektur λ LB ⟳ ( Kestrel Big Game Data - Volker Janz 51 $ Game Server ' REST API Perl Script ' REST API Event File ( Kestrel  Hadoop  HBASE ⚡ Storm Cluster Event Consumer
  • 52. Lambda Architektur λ ( Kestrel Big Game Data - Volker Janz 52 $ Game Server ' REST API Perl Script ' REST API LB Event File ( Kestrel  Hadoop  HBASE ⚡ Storm Cluster Event Consumer ⟳
  • 53. Lambda Architektur λ ⟳ ( Kestrel Big Game Data - Volker Janz 53 $ Game Server ' REST API Perl Script ' REST API LB Event File ( Kestrel Speed Layer Serving Layer  Hadoop  HBASE ⚡ Storm Cluster Event Consumer Batch Layer Datenquelle
  • 54. ' Mark Twain If the only tool you have is a hammer, everything looks like a nail.
  • 55. 2012
  • 57. ( VIELEN DANK !@prenomenon " de.linkedin.com/in/vjanz/ 0 innogames.com jobs.innogames.com blog.innogames.com Big Game Data - Volker Janz 57
  • 59. Events ⚡ Big Game Data - Volker Janz 59  Spieler verstehen und Spiele optimieren  Ad-hoc Analysen und automatisiere Reports  Mobile Plattformen differenzieren Drag Your Image Here ' Datenbereitstellung für andere Systeme (BI) ⚡ Echtzeitanalysen und Aktionen
  • 60. Events ⚡ Big Game Data - Volker Janz 60  Client "  Hadoop $ Game Server  Client $ Game Server  Client $ Game Server    Client Side Tracking Game Backend Tracking
  • 61. Storm ⚡ Spouts und Bolts werden als individuelle Tasks parallel im Cluster ausgeführt, die Verteilung der Tupel geschieht durch Stream Grouping Big Game Data - Volker Janz 61
  • 62. Storm ⚡ public class RedisSpout extends BaseRichSpout { // ... @Override public void nextTuple() { String message = jedis.rpop(messageQueue); if(null != message && !message.equals(NIL)) { int pos = message.indexOf(","); String entityId = message.substring(0, pos); String recordData = message.substring(pos+1); collector.emit(new Values(entityId, recordData)); Big Game Data - Volker Janz 62 } } }
  • 63. Storm ⚡ Kestrel Spout https://github.com/nathanmarz/storm-kestrel Big Game Data - Volker Janz 63 public collector } } }
  • 64. Storm ⚡ public static class WordCount extends BaseBasicBolt { Map<String, Integer> counts = new HashMap<String, Integer>(); @Override public void execute(Tuple tuple, BasicOutputCollector collector) { String sentence = tuple.getString(0); for (String word : sentence.split(" ")) { collector.emit(tuple, new Values(word)); Big Game Data - Volker Janz 64 } collector.ack(tuple); } }
  • 65. Storm ⚡ Big Game Data - Volker Janz 65 public collector } collector } } HDFS Bolt https://github.com/ptgoetz/storm-hdfs
  • 66. Storm ⚡ public static void main(String[] args) throws Exception { TopologyBuilder builder = new TopologyBuilder(); builder.setSpout("spout", new RandomSentenceSpout(), 5); builder.setBolt("split", new SplitSentence(), 8).shuffleGrouping("spout"); builder.setBolt("count", new WordCount(), 12).fieldsGrouping("split", new Fields("word")); Config conf = new Config(); conf.setDebug(true); // ... LocalCluster cluster = new LocalCluster(); cluster.submitTopology("word-count", conf, builder.createTopology()); Thread.sleep(10000); cluster.shutdown(); Big Game Data - Volker Janz 66 }
  • 67. Storm ⚡ Executor Worker Prozess Worker Node ⚙ Task ⚙ Task ⚙ Task ⚙ Task Big Game Data - Volker Janz 67 image Nimbus ZK
  • 68. Storm ⚡ Alternativen? ) http://odysseus.informatik.uni-oldenburg.de/ Big Game Data - Volker Janz 68
  • 69. Kestrel ( SET <queue-name> <flags (ignored)> <expiration> <# bytes> * echo -e "SET game_events 0 0 16n0.1.0/prog/buildn" | nc localhost 22133 ) watch -t -d -n,1 'echo "DUMP_STATS" | nc localhost 22133' GET <queue-name>[options] + echo "GET game_events" | nc localhost 22133 Big Game Data - Volker Janz 69
  • 70. ' Albert Einstein Not everything that can be counted counts. Not everything that counts can be counted.