The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

36
Quintor The future of webscale RENE BOERE CTO JOHAN TILLEMA CEO CHRIS QUACH JAVA SPECIALIST

Transcript of The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Page 1: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

The future of webscale

RENE BOERE

CTO

JOHAN

TILLEMA

CEO

CHRIS QUACH

JAVA

SPECIALIST

Page 2: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

Concurrent

connections

Page 3: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

Load balancing

Requests

verspreiden over

meerdere

servers/nodes/data

centers.

Op basis van:

- Round Robin

- Geo locatie

- Least connection

HAProxy

Nginx

Amazon

ELB

HAProxy beschikt

over de meeste

mogelijkheden (SSL

support in

onwikkeling)

Nginx erg geschikt

voor high load en

biedt SSL support

Amazon ELB, goede

keuze bij gebruik van

AWS

Page 4: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

Caching

Ontlasten van

backend systemen

en versnellen van

applicatie.

Is een goede

aanvulling op

nagenoeg elke

applicatie

Memcached

Redis

Memcached erg

eenvoudig in gebruik en

beheer.

Redis bevat meer

datatypes en complexe

methodes die het

bruikbaar maken voor

meedere doeleinden.

Top 10 lijsten,

publish/subscribe etc.

Vb:

Twitter bewaart

timelines alleen in

Redis

Page 5: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

Content delivery network

Verlagen van

netwerk latency bij

het serveren van

Statische content

(HTML/CSS/foto's/

video's)

Veel CDN

aanbieders

beschikbaar:

Amazon

Cloudfront

Microsoft

Azure

Gebruikt servers

verspreid over

groot gebied zodat

klanten met hoge

availability en

snelheid diensten

kunnen gebruiken.

Page 6: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

Huge amounts of data

to persist

Page 7: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

No SQL

Gedistribueerde

database gebaseerd op

HDFS. Gebaseerd op

BIGTABLE.

Gedistribueerde

database over

gelijkwaardige nodes.

CQL3 interface heeft veel

overeenkomsten met

“SQL”

JDBC driver beschikbaar

Meerwaarde bij

miljarden records en

minimaal 5 nodes.

Zeer geschikt voor

datasets die veel

wijzigen. Volledig in

memory.

In-memory database

met disk persistence

Cassandra

HBase

Redis

Page 8: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

Page 9: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

Sharding

Horizontaal partitioneren

van database,

verschillende rijen in

verschillende databases

met zelfde schema.

Noodzakelijk wanneer

een database node niet

meer toereikend is.

WebscaleSQL/Gizzard

Custom sharding

Backend met sharding

features bv MongoDB,

Hbase.

WebscaleSQL is

gebasseerd op MySQL.

Sharding vindt vaak

plaats op basis van

geografische locatie.

Bestaande relationeel

model blijft bruikbaar.

Page 10: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

Command Query Responsibility

Segregation

(CQRS)

Page 11: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

Traditional 3-tier

Page 12: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

CQRS

Page 13: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

Event Sourcing

a way of persisting your application's state

by storing the history that determines the

current state of your application

Page 14: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

QuintorEvent Sourcing

Page 15: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

CQRS/ES en Web-scale

Page 16: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

Hadoop basics

Page 17: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

HDFS

• Namenode: HDFS master. Bewaart complete directory tree van het file system. Bepaalt waar blokken data worden opgeslagen en gerepliceerd. Slaat zelf geen inhoudelijke data op (alleen verwijzingen)

• Datanode: Slaat data op in het hadoop filesystem. Wordt gestuurd door de namenode welke data hij op moet slaan.

• Clients: vragen aan de Namenode locatie van de data, en brengen/halen de data naar/van de Datanode

Page 18: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

HDFS

Page 19: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

YARN / Map Reduce Architecture

• Resource manager: Het proces dat de resources in het cluster verdeeld over de diverse nodes

• Node Manager: Het proces dat de status van de node monitored (CPU, memory, disk, netwerk) en dit communiceert met de resource manager

• Application Master: Per map reduce job is er 1 Application master die het werk verdeeld over de diverse nodes, en dit afstemt met de resource manager

Page 20: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

YARN Architecture

Page 21: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

HBase

• HMaster:– Coördinatie

– monitoring van het cluster

– verdeelt regions

– load balacing en failover

• HRegionServer– opslag van region

– distributie van regions

– verwerken van lees-/schrijfacties

– communicatie met clients

Page 22: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

HBase

Page 23: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

Processing data

Page 24: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

MapReduce

Map

Verdeel de data in kleinere brokken

Shuffle

Verzamel de brokken op basis van sleutel

Reduce

Filter de relevante data

Page 25: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

public class Map extends MapReduceBase

implements Mapper<LongWritable, Text, Text, IntWritable> {

private final static IntWritable one = new IntWritable(1);

private Text word = new Text();

public void map(LongWritable key, Text value,

OutputCollector<Text, IntWritable> output, Reporter reporter)

throws IOException {

String line = value.toString();

StringTokenizer tokenizer = new StringTokenizer(line);

while (tokenizer.hasMoreTokens()) {

word.set(tokenizer.nextToken());

output.collect(word, one);

}

}

}

Page 26: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

public class Reduce extends MapReduceBase

implements Reducer<Text, IntWritable, Text, IntWritable> {

public void reduce(Text key, Iterator<IntWritable> values,

OutputCollector<Text, IntWritable> output, Reporter reporter)

throws IOException {

int sum = 0;

while (values.hasNext()) {

sum += values.next().get();

}

output.collect(key, new IntWritable(sum));

}

}

Page 27: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

Cluster architecture

Page 28: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

QuintorBig Willem

Page 29: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

Ambari

• Provisioning van Hadoop Services op kale linux machines

• Prerequisited

– FQDN

– DNS en reverse DNS

– NTP

– SSL public key van Ambari in authorized_keys

Page 30: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

Page 31: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

Summercamp hadoop cluster

Hadoop1DRPC Server

Ganglia Monitor

Ganglia Server

HCat

Nagios Server

NameNode

NimbusOozie Client

Storm REST API Server

Storm UI Server

Tez Client

YARN Client

ZooKeeper Server

Hadoop10App Timeline Server

Ganglia Monitor

HDFS Client

History Server

ResourceManager

SNameNodeZooKeeper Server

Hadoop2DataNode

Falcon Client

Ganglia Monitor

HBase Client

RegionServer

HCat

HDFS Client

Hive Client

MapReduce2 Client

NodeManager

Oozie Client

Pig

Sqoop

Supervisor

Tez Client

YARN Client

ZooKeeper Client

HadoopXXDataNode (HDFS)

Ganglia Monitor

RegionServer (HBase)

NodeManager (Map reduce)

Supervisor (Storm)

Ambari

Page 32: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

Parallel processing

Page 33: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

Storm

• Nimbus: daemon voor de master node (vergelijkbaar met de application manager in MapReduce)

• Supervisor: daemon voor de worker node. Luistert naar taken dat is toegewezen aan zijn machine door de master node (nimbus). De supervisor start processen om deze taken uit te voeren.

• Zookeeper: bewaart de state van de communicatie tussen de nimbus en de supervisor(s), zodat deze alleen de processen uitvoeren, en dus stateless blijven

Page 34: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

Storm

Page 35: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

CODE

Page 36: The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Quintor

Demo