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...
" 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 Zustan...
Events ⚡ 
Big Game Data - Volker Janz 14 
! 
Ein Event ist ein Indikator für ein beobachtbares Geschehen 
bzw. eine Zustan...
Events ⚡ 
Identifikatoren Metadaten Parameter 
version/category/type/game/sprint/market/player/date/user_agent/param1/…/pa...
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 ...
Events ⚡ 
Big Game Data - Volker Janz 20 
 
Spieler verstehen 
und Spiele 
optimieren  
Ad-hoc Analysen 
und 
automatisi...
% 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 -...
Event Tracking % 
' 
Gateway 
* 
Queue 
Twitter Kestrel 
Big Game Data - Volker Janz 24 
 
Client 
+ 
Consumer 
Apache St...
Event Tracking % 
Big Game Data - Volker Janz 25 
" 
Game Server 
' 
REST API 
Perl 
Script 
* 
Kestrel 
 
Hadoop 
' 
RES...
* 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 - Vo...
Kestrel * 
Zuverlässig 
Clients können Messages „vorläufig“ lesen 
Bei Abbruch wird Message „zurückgelegt“ 
Big Game Data ...
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...
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"...
⚡ 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 Ga...
Storm ⚡ 
❌ 
✓ 
Big Game Data - Volker Janz 38 
⏩ 
Schnell 
1.000.000 100 Byte 
Nachrichten pro 
Sekunde pro Node 
. 
Skali...
Storm ⚡ 
Storm verarbeitet Datenströme aus Tupeln 
Big Game Data - Volker Janz 39 
Tupel 
Tupel 
Tupel 
Tupel 
Datenstrom ...
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 -...
Storm ⚡ 
Spouts und Bolts werden als 
individuelle Tasks parallel im Cluster 
ausgeführt, die Verteilung der Tupel 
geschi...
Storm ⚡ 
Executor 
Worker Prozess 
Worker Node 
⚙ 
Task 
⚙ 
Task 
⚙ 
Task 
⚙ 
Task 
Big Game Data - Volker Janz 47 
image ...
Storm ⚡ 
public class RedisSpout extends BaseRichSpout { 
// ... 
@Override 
public void nextTuple() { 
String message = j...
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>...
Storm ⚡ 
Big Game Data - Volker Janz 51 
public 
collector 
} 
collector 
} 
} 
HDFS Bolt https://github.com/ptgoetz/storm...
Storm ⚡ 
public static void main(String[] args) throws Exception { 
TopologyBuilder builder = new TopologyBuilder(); 
buil...
λ Lambda Architektur 
Big Game Data - Volker Keynote Janz Template 
53
Lambda Architektur λ 
Abstrakte Architektur für die 
Realisierung von skalierbaren 
Echtzeitsystemen 
Big Game Data - Volk...
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 
Mas...
Lambda Architektur λ 
Messaging 
System Query 
Big Game Data - Volker Janz 58 
DB / DFS 
Batch 
Processing 
System 
Stream...
Hadoop 2 / YARN 
HDFS MapReduce 
/ Spark 
Big Game Data - Volker Janz 
Lambda Architektur 
59 
λ 
Apache 
Kafka / Kestrel ...
Hadoop 2 / YARN 
HDFS MapReduce 
/ Spark 
Big Game Data - Volker Janz 
Lambda Architektur 
60 
λ 
Apache 
HDFS 
Kafka / Ke...
Lambda Architektur λ 
Big Game Data - Volker Janz 61 
" 
Game Server 
' 
REST API 
Perl 
Script 
* 
Kestrel 
 
Hadoop 
' ...
Lambda Architektur λ 
LB ⟳ 
* 
Kestrel 
Big Game Data - Volker Janz 62 
" 
Game Server 
' 
REST API 
Perl 
Script 
' 
REST...
Lambda Architektur λ 
LB ⟳ 
* 
Kestrel 
Big Game Data - Volker Janz 63 
" 
Game Server 
' 
REST API 
Perl 
Script 
' 
REST...
Lambda Architektur λ 
LB ⟳ 
* 
Kestrel 
Speed 
Layer Serving 
Layer 
Big Game Data - Volker Janz 64 
" 
Game Server 
' 
RE...
* 
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 Gam...
+ VIELEN DANK 
JOIN US , 
!@prenomenon " de.linkedin.com/in/vjanz/ 
3 
innogames.com 
jobs.innogames.com 
blog.innogames.c...
Nächste SlideShare
Wird geladen in …5
×

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

876 Aufrufe

Veröffentlicht am

Event Tracking ist ein bekanntes Problem aus dem Big Data Bereich. Die Präsentation zeigt unsere Lösung bei InnoGames und geht dabei auf Technologien wie Apache Storm und Kestrel näher ein. Zudem wird die Lambda Architektur vorgestellt und mit Beispieltechnologien verständlich und praktisch erklärt.

Veröffentlicht in: Technologie
0 Kommentare
2 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
876
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
21
Aktionen
Geteilt
0
Downloads
11
Kommentare
0
Gefällt mir
2
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

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

  1. 1. Big Game Data Big Game Data - Volker Janz 1 Event Tracking @ InnoGames
  2. 2. Big Game Data - Volker Janz 2
  3. 3. Big Game Data - Volker Janz 3 Volker Janz  Lead Software Developer ! @prenomenon
  4. 4. Big Game Data - Volker Janz 4
  5. 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. 6. " Was ist Big Data? Big Game Data - Volker Keynote Janz Template 6
  7. 7. Was ist Big Data? " Big Game Data - Volker Janz 7
  8. 8. Was ist Big Data? " Volume Big Game Data - Volker Janz 8
  9. 9. Was ist Big Data? " Variety Big Game Data - Volker Janz 9
  10. 10. Was ist Big Data? " Velocity Big Game Data - Volker Janz 10
  11. 11. Was ist Big Data? " Big Game Data - Volker Janz 11
  12. 12. ⚡ Events Big Game Data - Volker Keynote Janz Template 12
  13. 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. 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. 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. 16. Events ⚡ Big Game Data - Volker Janz 16
  17. 17. Events ⚡ prog/build soci/message set/change prog/fight soci/invite Big Game Data - Volker Janz 17
  18. 18. Events ⚡ 250M Events / Tag 90G Daten / Tag 2700G Daten / Monat Big Game Data - Volker Janz 18
  19. 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. 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. 21. % Event Tracking Big Game Data - Volker Keynote Janz Template 21
  22. 22. Event Tracking % Aller Anfang ist schwer Big Game Data - Volker Janz 22
  23. 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. 24. Event Tracking % ' Gateway * Queue Twitter Kestrel Big Game Data - Volker Janz 24  Client + Consumer Apache Storm Perl Script REST API mit Dropwizard
  25. 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. 26. * Kestrel https://github.com/twitter/kestrel Big Game Data - Volker Keynote Janz Template 26
  27. 27. Kestrel * Einfache, verteile Message queue Big Game Data - Volker Janz 27
  28. 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. 29. Kestrel * Zuverlässig Clients können Messages „vorläufig“ lesen Bei Abbruch wird Message „zurückgelegt“ Big Game Data - Volker Janz 29
  30. 30. Kestrel * Flexibel memcache Protokoll Einfaches text Protokoll Apache Thrift Big Game Data - Volker Janz 30
  31. 31. Kestrel *  Big Game Data - Volker Janz 31 * geordnet * geordnet * locker geordnet
  32. 32. Kestrel *  Client 1 Client 2 Big Game Data - Volker Janz 32 *events_queue * events_queue+fanout 
  33. 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. 34. Kestrel * Big Game Data - Volker Janz 34
  35. 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. 36. ⚡ Storm https://github.com/apache/storm Big Game Data - Volker Keynote Janz Template 36
  37. 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. 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. 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. 40. Storm ⚡ Big Game Data - Volker Janz 40 Spout Quelle von Datenströmen
  41. 41. Storm ⚡ Bolt Verarbeitung von Tupeln Big Game Data - Volker Janz 41
  42. 42. Storm ⚡  In Datenbank schreiben Big Game Data - Volker Janz 42
  43. 43. Storm ⚡  Aus Datenbank lesen Big Game Data - Volker Janz 43
  44. 44. Storm ⚡ Optional weitere Tupel / Datenströme erzeugen Big Game Data - Volker Janz 44
  45. 45. Storm ⚡ Eine Topologie ist ein gerichteter azyklischer Graph und eine Komposition aus Spouts und Bolts Big Game Data - Volker Janz 45
  46. 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. 47. Storm ⚡ Executor Worker Prozess Worker Node ⚙ Task ⚙ Task ⚙ Task ⚙ Task Big Game Data - Volker Janz 47 image Nimbus ZK
  48. 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. 49. Storm ⚡ Kestrel Spout https://github.com/nathanmarz/storm-kestrel Big Game Data - Volker Janz 49 public collector } } }
  50. 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. 51. Storm ⚡ Big Game Data - Volker Janz 51 public collector } collector } } HDFS Bolt https://github.com/ptgoetz/storm-hdfs
  52. 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. 53. λ Lambda Architektur Big Game Data - Volker Keynote Janz Template 53
  54. 54. Lambda Architektur λ Abstrakte Architektur für die Realisierung von skalierbaren Echtzeitsystemen Big Game Data - Volker Janz 54
  55. 55. Lambda Architektur λ @nathanmarz http://manning.com/marz/ !  Big Game Data - Volker Janz 55
  56. 56. Lambda Architektur λ Big Game Data - Volker Janz 56 # Datenquellen Batch Layer Speed Layer Serving Layer Query
  57. 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. 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. 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. 60. Hadoop 2 / YARN HDFS MapReduce / Spark Big Game Data - Volker Janz Lambda Architektur 60 λ Apache HDFS Kafka / Kestrel Query Storm-YARN HOYA
  61. 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. 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. 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. 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. 65. * Mark Twain If the only tool you have is a hammer, everything looks like a nail.
  66. 66. 2012
  67. 67. * 2014
  68. 68. * Albert Einstein Not everything that can be counted counts. Not everything that counts can be counted.
  69. 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. 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

×