big game data - event tracking mit storm, kestrel und der lambda architektur - data2day 2014

70
Big Game Data - Volker Janz Big Game Data 1 Event Tracking @ InnoGames

Upload: volker-janz

Post on 17-Jul-2015

10.449 views

Category:

Data & Analytics


3 download

TRANSCRIPT

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

Big Game Data - Volker Janz

Big Game Data

1

Event Tracking @ InnoGames

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

Big Game Data - Volker Janz 2

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

Big Game Data - Volker Janz 3

@prenomenon!

Lead Software DeveloperšŸ’¼

Volker Janz

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

Big Game Data - Volker Janz 4

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

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

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

Big Game Data - Volker Janz 6

" Was ist Big Data?

Keynote Template

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

Big Game Data - Volker Janz 7

Was ist Big Data? "

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

Big Game Data - Volker Janz 8

Was ist Big Data? "

VolumeVarietyVelocity

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

Big Game Data - Volker Janz 9

āš” Events

Keynote Template

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

Big Game Data - Volker Janz 10

Events āš”

!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.

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

Big Game Data - Volker Janz 11

Events āš”

!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.

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

Big Game Data - Volker Janz 12

Events āš”

0.1.0/prog/build/foe/2.0.1/de/4711/2014-10-01T13:37.000Z/ua/kaserne/10/20/15

Identifikatoren Metadaten Parameter

version/category/type/game/sprint/market/player/date/user_agent/param1/ā€¦/paramN

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

Big Game Data - Volker Janz 13

Events āš”

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

Big Game Data - Volker Janz 14

Events āš”

prog/build

prog/fight

set/change

soci/invite

soci/message

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

Big Game Data - Volker Janz 15

Events āš”

280M100G3000G

Events / Tag

Daten / Tag

Daten / Monat

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

Big Game Data - Volker Janz16

Events āš”

" Hadoop

$ GameServer

$ GameServer

$ GameServer

šŸ“ˆ

šŸ‘¤

šŸ’»

Game Backend Tracking

Drag Your Image Here

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

Big Game Data - Volker Janz 17

% Event Tracking

Keynote Template

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

Big Game Data - Volker Janz 18

Event Tracking %

Aller Anfang ist schwer

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

Big Game Data - Volker Janz 19

Event Tracking %

$ 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

Konsumieren und Schreiben der Events an die Korrekte

Stelle im HDFS (Partitionierung)

Verteilte Speicherung (HDFS) und Verarbeitung

(MapReduce, Spark)

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

Big Game Data - Volker Janz 20

'Gateway

(Queue

šŸ’»Client

)Consumer

Twitter Kestrel

Apache Storm

Perl Script

REST API mit Dropwizard

Event Tracking %

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

Big Game Data - Volker Janz 21

Event Tracking %

$ 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

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

Big Game Data - Volker Janz 22

( Kestrel

Keynote Template

https://github.com/twitter/kestrel

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

Big Game Data - Volker Janz 23

Kestrel (

Einfache, verteile Message queue

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

Big Game Data - Volker Janz 24

Kestrel (

Persistent HƤlt Messages im Speicher fĆ¼r Speed

Schreibt in Journal Dateien fĆ¼r Persistenz

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

Big Game Data - Volker Janz 25

Kestrel (

ZuverlƤssig Clients kƶnnen Messages ā€žvorlƤufigā€œ lesen Bei Abbruch wird Message ā€žzurĆ¼ckgelegtā€œ

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

Big Game Data - Volker Janz 26

Kestrel (

Flexibel memcache Protokoll

Einfaches text Protokoll Apache Thrift

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

Big Game Data - Volker Janz 27

šŸ’»

Kestrel (

(geordnet

(geordnet

(locker geordnet

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

Big Game Data - Volker Janz 28

šŸ’»

Kestrel (

(events_queue

(events_queue+fanoutšŸ’»

Client 1

Client 2

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

Big Game Data - Volker Janz 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 }}

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

Big Game Data - Volker Janz 30

Kestrel (

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

Big Game Data - Volker Janz 31

āš” Storm

Keynote Template

https://github.com/apache/storm

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

Big Game Data - Volker Janz 32

Storm āš”

Apacheā„¢ Storm is a distributed real-time computation system for processing fast, large

streams of data.

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

Big Game Data - Volker Janz 33

Storm āš”

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

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

Big Game Data - Volker Janz 34

Storm āš”

Tupel

Tupel

Tupel

Tupel

Datenstrom

Storm verarbeitet Datenstrƶme aus Tupeln

Ein Tupel ist eine Liste von Werten

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

Big Game Data - Volker Janz 35

Storm āš”

Spout

Quelle von DatenstrƶmenKestrel Spout https://github.com/nathanmarz/storm-kestrel

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

Big Game Data - Volker Janz 36

Storm āš”

Verarbeitung von Tupeln

Bolt

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

Big Game Data - Volker Janz 37

Storm āš”

In Datenbank schreiben

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

Big Game Data - Volker Janz 38

Storm āš”

Aus Datenbank lesen

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

Big Game Data - Volker Janz 39

Storm āš”

Optional weitere Tupel / Datenstrƶme erzeugen

HDFS Bolt https://github.com/ptgoetz/storm-hdfs

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

Big Game Data - Volker Janz 40

Storm āš”

Eine Topologie ist ein gerichteter azyklischer Graph und eine

Komposition aus Spouts und Bolts

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

Big Game Data - Volker Janz 41

Ī» Lambda Architektur

Keynote Template

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

Big Game Data - Volker Janz 42

Lambda Architektur Ī»

Abstrakte Architektur fĆ¼r die Realisierung von skalierbaren

Echtzeitsystemen

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

Big Game Data - Volker Janz 43

Lambda Architektur Ī»

@nathanmarz http://manning.com/marz/

!

šŸ“•

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

Big Game Data - Volker Janz 44

Lambda Architektur Ī»

" Datenquellen

Batch Layer

Speed Layer

Serving Layer Query

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

Big Game Data - Volker Janz 45

Lambda Architektur Ī»

" Datenquellen

Query

Batch Layer

Speed Layer

Serving Layer

Master Datensatz

Batch ViewsāŸ³

Datenstrom Real-Time Viewsāš”

Merged View&

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

Big Game Data - Volker Janz 46

Lambda Architektur Ī»

Messaging System Query

DB / DFSBatch

Processing System

Stream Processing System

DB Batch Views

DB Real-Time Views

Application

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

Big Game Data - Volker Janz

Hadoop 2 / YARN

Lambda Architektur

47

Ī»

Kestrel Query

HDFS MapReduce / Spark

Storm-YARN

HOYAHue /

Apache Twill / Apache

Slider

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

Big Game Data - Volker Janz

Hadoop 2 / YARN

Lambda Architektur

48

Ī»

Query

HDFS MapReduce / Spark

Storm-YARN HOYA

HDFS

Apache Mesos

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

Big Game Data - Volker Janz

Lambda Architektur

49

Ī»

select c.name, hb.tweets.countfrom hive.ods.`customers` cjoin hbase.user.`socialdata` hbon c.customerId = convert_from(hb.rowkey, UTF-8);

http://incubator.apache.org/drill/

Customer in Hadoop / Hive

Tweets in HBase

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

Big Game Data - Volker Janz 50

$ Game Server

'REST API

Perl Script

(Kestrel

Hadoop

'REST API

(Kestrel

LBāš”

Storm Cluster

Event File

Lambda Architektur Ī»

āŸ³Round Robin

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

Big Game Data - Volker Janz 51

$ Game Server

'REST API

Perl Script

'REST API

LB āŸ³

Event File

(Kestrel

(Kestrel

Hadoop

HBASE

āš”

Storm Cluster

Event Consumer

Lambda Architektur Ī»

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

Big Game Data - Volker Janz 52

$ Game Server

'REST API

Perl Script

'REST API

LB

Event File

(Kestrel

(Kestrel

Hadoop

HBASE

āš”

Storm Cluster

Event Consumer

Lambda Architektur Ī»

āŸ³

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

Big Game Data - Volker Janz

āŸ³

53

$ Game Server

'REST API

Perl Script

'REST API

LB

Event File

(Kestrel

(Kestrel

Hadoop

HBASE

āš”

Storm Cluster

Event ConsumerBatch Layer

Speed Layer Serving

Layer

Datenquelle

Lambda Architektur Ī»

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

'Mark Twain

If the only tool you have is a hammer, everything

looks like a nail.

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

2012

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

'

2014

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

Big Game Data - Volker Janz 57

! @prenomenon " 0

VIELEN DANK(

de.linkedin.com/in/vjanz/innogames.com jobs.innogames.com blog.innogames.com

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

Backup Folien

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

Big Game Data - Volker Janz 59

šŸš€Spieler verstehen

und Spiele optimieren šŸ“ˆ

Ad-hoc Analysen und

automatisiere Reports

šŸ“±Mobile

Plattformen differenzieren

Drag Your Image Here

Events āš”

'Datenbereitstellung

fĆ¼r andere Systeme (BI)

āš”Echtzeitanalysen

und Aktionen

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

Big Game Data - Volker Janz60

Events āš”

šŸ’»Client

" Hadoop

$ GameServer

šŸ’»Client

$ GameServer

šŸ’»Client

$ GameServer

šŸ“ˆ

šŸ‘¤

šŸ’»

Client Side Tracking

Game Backend Tracking

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

Big Game Data - Volker Janz 61

Storm āš”

Spouts und Bolts werden als individuelle Tasks parallel im Cluster ausgefĆ¼hrt, die Verteilung der Tupel geschieht durch Stream Grouping

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

Big Game Data - Volker Janz 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)); } }

}

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

Big Game Data - Volker Janz 63

Storm āš”

public

collector } }

}

Kestrel Spout https://github.com/nathanmarz/storm-kestrel

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

Big Game Data - Volker Janz 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)); }

collector.ack(tuple); }

}

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

Big Game Data - Volker Janz 65

Storm āš”

public

collector }

collector }

}

HDFS Bolt https://github.com/ptgoetz/storm-hdfs

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

Big Game Data - Volker Janz 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();}

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

Big Game Data - Volker Janz 67

Storm āš”

Worker NodeWorker Prozess

Executor

āš™

Taskāš™

Task

āš™

Taskāš™

Task

image

Nimbus

ZK

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

Big Game Data - Volker Janz 68

Storm āš”

Alternativen?

) http://odysseus.informatik.uni-oldenburg.de/

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

Big Game Data - Volker Janz 69

Kestrel (

) watch -t -d -n,1 'echo "DUMP_STATS" | nc localhost 22133'

*SET <queue-name> <flags (ignored)> <expiration> <# bytes> echo -e "SET game_events 0 0 16\n0.1.0/prog/build\n" | nc localhost 22133

+GET <queue-name>[options] echo "GET game_events" | nc localhost 22133

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

'Albert Einstein

Not everything that can be counted counts. Not everything that

counts can be counted.