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 
Big Game Data - Volker Janz 8
Was ist Big Data? " 
Variety 
Big Game Data - Volker Janz 9
Was ist Big Data? " 
Velocity 
Big Game Data - Volker Janz 10
Was ist Big Data? " 
Big Game Data - Volker Janz 11
⚡ Events 
Big Game Data - Volker Keynote Janz Template 
12
Events ⚡ 
Big Game Data - Volker Janz 13 
! 
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 14 
! 
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 15
Events ⚡ 
Big Game Data - Volker Janz 16
Events ⚡ 
prog/build 
soci/message 
set/change 
prog/fight 
soci/invite 
Big Game Data - Volker Janz 17
Events ⚡ 
250M 
Events / Tag 
90G 
Daten / Tag 
2700G 
Daten / Monat 
Big Game Data - Volker Janz 18
Events ⚡ 
Big Game Data - Volker Janz 19 
" 
Game 
Server 
#  
Hadoop 
" 
Game 
Server 
" 
Game 
Server 
" 
Game 
Server 
" 
Game 
Server 
" 
Game 
Server 
" 
Game 
Server 
" 
Game 
Server 
" 
Game 
Server 
 
 

Events ⚡ 
Big Game Data - Volker Janz 20 
 
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
% Event Tracking 
Big Game Data - Volker Keynote Janz Template 
21
Event Tracking % 
Aller Anfang 
ist schwer 
Big Game Data - Volker Janz 22
Event Tracking % 
Konsumieren und Schreiben 
der Events an die Korrekte 
Stelle im HDFS (Partitionierung) 
Big Game Data - Volker Janz 23 
" 
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 24 
 
Client 
+ 
Consumer 
Apache Storm 
Perl Script 
REST API mit Dropwizard
Event Tracking % 
Big Game Data - Volker Janz 25 
" 
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 
26
Kestrel * 
Einfache, verteile 
Message queue 
Big Game Data - Volker Janz 27
Kestrel * 
Persistent 
Hält Messages im Speicher für Speed 
Schreibt in Journal Dateien für Persistenz 
Big Game Data - Volker Janz 28
Kestrel * 
Zuverlässig 
Clients können Messages „vorläufig“ lesen 
Bei Abbruch wird Message „zurückgelegt“ 
Big Game Data - Volker Janz 29
Kestrel * 
Flexibel 
memcache Protokoll 
Einfaches text Protokoll 
Apache Thrift 
Big Game Data - Volker Janz 30
Kestrel * 
 
Big Game Data - Volker Janz 31 
* 
geordnet 
* 
geordnet 
* 
locker geordnet
Kestrel * 
 
Client 1 
Client 2 
Big Game Data - Volker Janz 32 
*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 33 
} 
}
Kestrel * 
Big Game Data - Volker Janz 34
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 35
⚡ Storm 
https://github.com/apache/storm 
Big Game Data - Volker Keynote Janz Template 
36
Storm ⚡ 
Apache™ Storm is a distributed real-time 
computation system for processing fast, large 
streams of data. 
Big Game Data - Volker Janz 37
Storm ⚡ 
❌ 
✓ 
Big Game Data - Volker Janz 38 
⏩ 
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“ oder „exactly 
once“ Verarbeitung 
von Nachrichten
Storm ⚡ 
Storm verarbeitet Datenströme aus Tupeln 
Big Game Data - Volker Janz 39 
Tupel 
Tupel 
Tupel 
Tupel 
Datenstrom 
Ein Tupel ist eine Liste von Werten
Storm ⚡ 
Big Game Data - Volker Janz 40 
Spout 
Quelle von Datenströmen
Storm ⚡ 
Bolt 
Verarbeitung von Tupeln 
Big Game Data - Volker Janz 41
Storm ⚡ 
 
In Datenbank schreiben 
Big Game Data - Volker Janz 42
Storm ⚡ 
 
Aus Datenbank lesen 
Big Game Data - Volker Janz 43
Storm ⚡ 
Optional weitere Tupel / 
Datenströme erzeugen 
Big Game Data - Volker Janz 44
Storm ⚡ 
Eine Topologie ist ein gerichteter 
azyklischer Graph und eine 
Komposition aus Spouts und Bolts 
Big Game Data - Volker Janz 45
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 46
Storm ⚡ 
Executor 
Worker Prozess 
Worker Node 
⚙ 
Task 
⚙ 
Task 
⚙ 
Task 
⚙ 
Task 
Big Game Data - Volker Janz 47 
image 
Nimbus 
ZK
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 48 
} 
} 
}
Storm ⚡ 
Kestrel Spout https://github.com/nathanmarz/storm-kestrel 
Big Game Data - Volker Janz 49 
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 50 
} 
collector.ack(tuple); 
} 
}
Storm ⚡ 
Big Game Data - Volker Janz 51 
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 52 
}
λ Lambda Architektur 
Big Game Data - Volker Keynote Janz Template 
53
Lambda Architektur λ 
Abstrakte Architektur für die 
Realisierung von skalierbaren 
Echtzeitsystemen 
Big Game Data - Volker Janz 54
Lambda Architektur λ 
@nathanmarz 
http://manning.com/marz/ 
! 
 
Big Game Data - Volker Janz 55
Lambda Architektur λ 
Big Game Data - Volker Janz 56 
# 
Datenquellen 
Batch Layer 
Speed Layer 
Serving Layer Query
Lambda Architektur λ 
Big Game Data - Volker Janz 57 
# 
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 58 
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 
59 
λ 
Apache 
Kafka / Kestrel Query 
Storm-YARN 
HOYA 
Hue / 
Apache Twill 
/ Apache 
Slider
Hadoop 2 / YARN 
HDFS MapReduce 
/ Spark 
Big Game Data - Volker Janz 
Lambda Architektur 
60 
λ 
Apache 
HDFS 
Kafka / Kestrel Query 
Storm-YARN HOYA
Lambda Architektur λ 
Big Game Data - Volker Janz 61 
" 
Game Server 
' 
REST API 
Perl 
Script 
* 
Kestrel 
 
Hadoop 
' 
REST API 
* 
Kestrel 
LB 
⚡ 
Storm 
Cluster 
⟳ 
Round 
Robin 
Event 
File
Lambda Architektur λ 
LB ⟳ 
* 
Kestrel 
Big Game Data - Volker Janz 62 
" 
Game Server 
' 
REST API 
Perl 
Script 
' 
REST API 
Event 
File 
* 
Kestrel 
 
Hadoop 
 
HBASE 
⚡ 
Storm 
Cluster 
Event 
Consumer
Lambda Architektur λ 
LB ⟳ 
* 
Kestrel 
Big Game Data - Volker Janz 63 
" 
Game Server 
' 
REST API 
Perl 
Script 
' 
REST API 
Event 
File 
* 
Kestrel 
 
Hadoop 
 
HBASE 
⚡ 
Storm 
Cluster 
Event 
Consumer
Lambda Architektur λ 
LB ⟳ 
* 
Kestrel 
Speed 
Layer Serving 
Layer 
Big Game Data - Volker Janz 64 
" 
Game Server 
' 
REST API 
Perl 
Script 
' 
REST API 
Event 
File 
* 
Kestrel 
 
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
* 
Albert Einstein 
Not everything that can 
be counted counts. 
Not everything that 
counts can be counted.
+ VIELEN DANK 
!@prenomenon " de.linkedin.com/in/vjanz/ 
3 
innogames.com 
jobs.innogames.com 
blog.innogames.com 
Big Game Data - Volker Janz 69
+ VIELEN DANK 
JOIN US , 
!@prenomenon " de.linkedin.com/in/vjanz/ 
3 
innogames.com 
jobs.innogames.com 
blog.innogames.com 
Big Game Data - Volker Janz 70

Weitere ähnliche Inhalte

Andere mochten auch

Rbu amanox big_data_intro_infrastruktur
Rbu amanox big_data_intro_infrastrukturRbu amanox big_data_intro_infrastruktur
Rbu amanox big_data_intro_infrastrukturRene Burgener
 
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
 
Cascading Big Data User Group
Cascading Big Data User GroupCascading Big Data User Group
Cascading Big Data User Group
Big-Data-User-Group
 
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
 
Icons and Stencils for Hadoop
Icons and Stencils for HadoopIcons and Stencils for Hadoop
Icons and Stencils for Hadoop
Hortonworks
 
Big data ppt
Big  data pptBig  data ppt
Big data ppt
Nasrin Hussain
 
[Infographic] How will Internet of Things (IoT) change the world as we know it?
[Infographic] How will Internet of Things (IoT) change the world as we know it?[Infographic] How will Internet of Things (IoT) change the world as we know it?
[Infographic] How will Internet of Things (IoT) change the world as we know it?
InterQuest Group
 

Andere mochten auch (8)

Raspberry Pi
Raspberry PiRaspberry Pi
Raspberry Pi
 
Rbu amanox big_data_intro_infrastruktur
Rbu amanox big_data_intro_infrastrukturRbu amanox big_data_intro_infrastruktur
Rbu amanox big_data_intro_infrastruktur
 
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
 
Cascading Big Data User Group
Cascading Big Data User GroupCascading Big Data User Group
Cascading Big Data User Group
 
Big Data & High-Performance-Analytics
Big Data & High-Performance-AnalyticsBig Data & High-Performance-Analytics
Big Data & High-Performance-Analytics
 
Icons and Stencils for Hadoop
Icons and Stencils for HadoopIcons and Stencils for Hadoop
Icons and Stencils for Hadoop
 
Big data ppt
Big  data pptBig  data ppt
Big data ppt
 
[Infographic] How will Internet of Things (IoT) change the world as we know it?
[Infographic] How will Internet of Things (IoT) change the world as we know it?[Infographic] How will Internet of Things (IoT) change the world as we know it?
[Infographic] How will Internet of Things (IoT) change the world as we know it?
 

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

Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit Microservices
QAware GmbH
 
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
 
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
 
Datenrettung in Virtuellen Umgebungen
Datenrettung in Virtuellen UmgebungenDatenrettung in Virtuellen Umgebungen
Datenrettung in Virtuellen Umgebungen
Kroll Ontrack GmbH
 
Storage Trends für KMU
Storage Trends für KMUStorage Trends für KMU
Storage Trends für KMU
A. Baggenstos & Co. AG
 
Splunk für alle: Optimierte Prozesse für eine zuverlässige und störungsfreie ...
Splunk für alle: Optimierte Prozesse für eine zuverlässige und störungsfreie ...Splunk für alle: Optimierte Prozesse für eine zuverlässige und störungsfreie ...
Splunk für alle: Optimierte Prozesse für eine zuverlässige und störungsfreie ...
Splunk EMEA
 
Windows 10 IoT Core
Windows 10 IoT CoreWindows 10 IoT Core
Windows 10 IoT Core
Jens Siebert
 
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
 
Azure Notebooks
Azure NotebooksAzure Notebooks
Azure Notebooks
TEitelberg
 
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®
 
Azure Days 2019: Master the Move to Azure (Konrad Brunner)
Azure Days 2019: Master the Move to Azure (Konrad Brunner)Azure Days 2019: Master the Move to Azure (Konrad Brunner)
Azure Days 2019: Master the Move to Azure (Konrad Brunner)
Trivadis
 
FMK2018- Virtuelle Server Peter Schubert
FMK2018- Virtuelle Server Peter SchubertFMK2018- Virtuelle Server Peter Schubert
FMK2018- Virtuelle Server Peter Schubert
Verein FM Konferenz
 
E Security
E SecurityE Security
E Security
Udo Ornik
 
NETCONF & YANG
NETCONF & YANGNETCONF & YANG
NETCONF & YANG
Konrad Ferdinand Heimel
 
GPU-Computing mit CUDA und OpenCL in der Praxis
GPU-Computing mit CUDA und OpenCL in der PraxisGPU-Computing mit CUDA und OpenCL in der Praxis
GPU-Computing mit CUDA und OpenCL in der Praxis
Jörn Dinkla
 
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
OPITZ CONSULTING Deutschland
 
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
 
Netzwerkmonitoring.pdf
Netzwerkmonitoring.pdfNetzwerkmonitoring.pdf
Netzwerkmonitoring.pdf
Westermo Network Technologies
 

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

Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit Microservices
 
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
 
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
 
Datenrettung in Virtuellen Umgebungen
Datenrettung in Virtuellen UmgebungenDatenrettung in Virtuellen Umgebungen
Datenrettung in Virtuellen Umgebungen
 
Storage Trends für KMU
Storage Trends für KMUStorage Trends für KMU
Storage Trends für KMU
 
Splunk für alle: Optimierte Prozesse für eine zuverlässige und störungsfreie ...
Splunk für alle: Optimierte Prozesse für eine zuverlässige und störungsfreie ...Splunk für alle: Optimierte Prozesse für eine zuverlässige und störungsfreie ...
Splunk für alle: Optimierte Prozesse für eine zuverlässige und störungsfreie ...
 
Windows 10 IoT Core
Windows 10 IoT CoreWindows 10 IoT Core
Windows 10 IoT Core
 
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
 
Azure Notebooks
Azure NotebooksAzure Notebooks
Azure Notebooks
 
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)
 
Azure Days 2019: Master the Move to Azure (Konrad Brunner)
Azure Days 2019: Master the Move to Azure (Konrad Brunner)Azure Days 2019: Master the Move to Azure (Konrad Brunner)
Azure Days 2019: Master the Move to Azure (Konrad Brunner)
 
FMK2018- Virtuelle Server Peter Schubert
FMK2018- Virtuelle Server Peter SchubertFMK2018- Virtuelle Server Peter Schubert
FMK2018- Virtuelle Server Peter Schubert
 
E Security
E SecurityE Security
E Security
 
NETCONF & YANG
NETCONF & YANGNETCONF & YANG
NETCONF & YANG
 
GPU-Computing mit CUDA und OpenCL in der Praxis
GPU-Computing mit CUDA und OpenCL in der PraxisGPU-Computing mit CUDA und OpenCL in der Praxis
GPU-Computing mit CUDA und OpenCL in der Praxis
 
CS108 Bootcamp Eyeballs
CS108 Bootcamp EyeballsCS108 Bootcamp Eyeballs
CS108 Bootcamp Eyeballs
 
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
 
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
 
Netzwerkmonitoring.pdf
Netzwerkmonitoring.pdfNetzwerkmonitoring.pdf
Netzwerkmonitoring.pdf
 

Big Game Data - Event Tracking mit Storm, Kestrel und der Lambda Architektur - code.talks 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 Big Game Data - Volker Janz 8
  • 9. Was ist Big Data? " Variety Big Game Data - Volker Janz 9
  • 10. Was ist Big Data? " Velocity Big Game Data - Volker Janz 10
  • 11. Was ist Big Data? " Big Game Data - Volker Janz 11
  • 12. ⚡ Events Big Game Data - Volker Keynote Janz Template 12
  • 13. Events ⚡ Big Game Data - Volker Janz 13 ! 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.
  • 14. Events ⚡ Big Game Data - Volker Janz 14 ! 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.
  • 15. 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 15
  • 16. Events ⚡ Big Game Data - Volker Janz 16
  • 17. Events ⚡ prog/build soci/message set/change prog/fight soci/invite Big Game Data - Volker Janz 17
  • 18. Events ⚡ 250M Events / Tag 90G Daten / Tag 2700G Daten / Monat Big Game Data - Volker Janz 18
  • 19. Events ⚡ Big Game Data - Volker Janz 19 " Game Server #  Hadoop " Game Server " Game Server " Game Server " Game Server " Game Server " Game Server " Game Server " Game Server   
  • 20. Events ⚡ Big Game Data - Volker Janz 20  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
  • 21. % Event Tracking Big Game Data - Volker Keynote Janz Template 21
  • 22. Event Tracking % Aller Anfang ist schwer Big Game Data - Volker Janz 22
  • 23. Event Tracking % Konsumieren und Schreiben der Events an die Korrekte Stelle im HDFS (Partitionierung) Big Game Data - Volker Janz 23 " 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)
  • 24. Event Tracking % ' Gateway * Queue Twitter Kestrel Big Game Data - Volker Janz 24  Client + Consumer Apache Storm Perl Script REST API mit Dropwizard
  • 25. Event Tracking % Big Game Data - Volker Janz 25 " 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
  • 26. * Kestrel https://github.com/twitter/kestrel Big Game Data - Volker Keynote Janz Template 26
  • 27. Kestrel * Einfache, verteile Message queue Big Game Data - Volker Janz 27
  • 28. Kestrel * Persistent Hält Messages im Speicher für Speed Schreibt in Journal Dateien für Persistenz Big Game Data - Volker Janz 28
  • 29. Kestrel * Zuverlässig Clients können Messages „vorläufig“ lesen Bei Abbruch wird Message „zurückgelegt“ Big Game Data - Volker Janz 29
  • 30. Kestrel * Flexibel memcache Protokoll Einfaches text Protokoll Apache Thrift Big Game Data - Volker Janz 30
  • 31. Kestrel *  Big Game Data - Volker Janz 31 * geordnet * geordnet * locker geordnet
  • 32. Kestrel *  Client 1 Client 2 Big Game Data - Volker Janz 32 *events_queue * events_queue+fanout 
  • 33. 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 33 } }
  • 34. Kestrel * Big Game Data - Volker Janz 34
  • 35. 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 35
  • 36. ⚡ Storm https://github.com/apache/storm Big Game Data - Volker Keynote Janz Template 36
  • 37. Storm ⚡ Apache™ Storm is a distributed real-time computation system for processing fast, large streams of data. Big Game Data - Volker Janz 37
  • 38. Storm ⚡ ❌ ✓ Big Game Data - Volker Janz 38 ⏩ 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“ oder „exactly once“ Verarbeitung von Nachrichten
  • 39. Storm ⚡ Storm verarbeitet Datenströme aus Tupeln Big Game Data - Volker Janz 39 Tupel Tupel Tupel Tupel Datenstrom Ein Tupel ist eine Liste von Werten
  • 40. Storm ⚡ Big Game Data - Volker Janz 40 Spout Quelle von Datenströmen
  • 41. Storm ⚡ Bolt Verarbeitung von Tupeln Big Game Data - Volker Janz 41
  • 42. Storm ⚡  In Datenbank schreiben Big Game Data - Volker Janz 42
  • 43. Storm ⚡  Aus Datenbank lesen Big Game Data - Volker Janz 43
  • 44. Storm ⚡ Optional weitere Tupel / Datenströme erzeugen Big Game Data - Volker Janz 44
  • 45. Storm ⚡ Eine Topologie ist ein gerichteter azyklischer Graph und eine Komposition aus Spouts und Bolts Big Game Data - Volker Janz 45
  • 46. 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 46
  • 47. Storm ⚡ Executor Worker Prozess Worker Node ⚙ Task ⚙ Task ⚙ Task ⚙ Task Big Game Data - Volker Janz 47 image Nimbus ZK
  • 48. 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 48 } } }
  • 49. Storm ⚡ Kestrel Spout https://github.com/nathanmarz/storm-kestrel Big Game Data - Volker Janz 49 public collector } } }
  • 50. 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 50 } collector.ack(tuple); } }
  • 51. Storm ⚡ Big Game Data - Volker Janz 51 public collector } collector } } HDFS Bolt https://github.com/ptgoetz/storm-hdfs
  • 52. 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 52 }
  • 53. λ Lambda Architektur Big Game Data - Volker Keynote Janz Template 53
  • 54. Lambda Architektur λ Abstrakte Architektur für die Realisierung von skalierbaren Echtzeitsystemen Big Game Data - Volker Janz 54
  • 55. Lambda Architektur λ @nathanmarz http://manning.com/marz/ !  Big Game Data - Volker Janz 55
  • 56. Lambda Architektur λ Big Game Data - Volker Janz 56 # Datenquellen Batch Layer Speed Layer Serving Layer Query
  • 57. Lambda Architektur λ Big Game Data - Volker Janz 57 # Datenquellen Query Batch Layer Speed Layer Serving Layer Master Datensatz Batch Views ⟳ Datenstrom Real-Time Views ⚡ Merged View )
  • 58. Lambda Architektur λ Messaging System Query Big Game Data - Volker Janz 58 DB / DFS Batch Processing System Stream Processing System DB Batch Views DB Real- Time Views Application
  • 59. Hadoop 2 / YARN HDFS MapReduce / Spark Big Game Data - Volker Janz Lambda Architektur 59 λ Apache Kafka / Kestrel Query Storm-YARN HOYA Hue / Apache Twill / Apache Slider
  • 60. Hadoop 2 / YARN HDFS MapReduce / Spark Big Game Data - Volker Janz Lambda Architektur 60 λ Apache HDFS Kafka / Kestrel Query Storm-YARN HOYA
  • 61. Lambda Architektur λ Big Game Data - Volker Janz 61 " Game Server ' REST API Perl Script * Kestrel  Hadoop ' REST API * Kestrel LB ⚡ Storm Cluster ⟳ Round Robin Event File
  • 62. Lambda Architektur λ LB ⟳ * Kestrel Big Game Data - Volker Janz 62 " Game Server ' REST API Perl Script ' REST API Event File * Kestrel  Hadoop  HBASE ⚡ Storm Cluster Event Consumer
  • 63. Lambda Architektur λ LB ⟳ * Kestrel Big Game Data - Volker Janz 63 " Game Server ' REST API Perl Script ' REST API Event File * Kestrel  Hadoop  HBASE ⚡ Storm Cluster Event Consumer
  • 64. Lambda Architektur λ LB ⟳ * Kestrel Speed Layer Serving Layer Big Game Data - Volker Janz 64 " Game Server ' REST API Perl Script ' REST API Event File * Kestrel  Hadoop  HBASE ⚡ Storm Cluster Event Consumer Batch Layer Datenquelle
  • 65. * Mark Twain If the only tool you have is a hammer, everything looks like a nail.
  • 66. 2012
  • 68. * Albert Einstein Not everything that can be counted counts. Not everything that counts can be counted.
  • 69. + VIELEN DANK !@prenomenon " de.linkedin.com/in/vjanz/ 3 innogames.com jobs.innogames.com blog.innogames.com Big Game Data - Volker Janz 69
  • 70. + VIELEN DANK JOIN US , !@prenomenon " de.linkedin.com/in/vjanz/ 3 innogames.com jobs.innogames.com blog.innogames.com Big Game Data - Volker Janz 70