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

Post on 12-Jul-2015

196 views 1 download

Transcript of 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

Quintor

Concurrent

connections

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

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

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.

Quintor

Huge amounts of data

to persist

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

Quintor

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.

Quintor

Command Query Responsibility

Segregation

(CQRS)

Quintor

Traditional 3-tier

Quintor

CQRS

Quintor

Event Sourcing

a way of persisting your application's state

by storing the history that determines the

current state of your application

QuintorEvent Sourcing

Quintor

CQRS/ES en Web-scale

Quintor

Hadoop basics

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

Quintor

HDFS

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

Quintor

YARN Architecture

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

Quintor

HBase

Quintor

Processing data

Quintor

MapReduce

Map

Verdeel de data in kleinere brokken

Shuffle

Verzamel de brokken op basis van sleutel

Reduce

Filter de relevante data

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);

}

}

}

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));

}

}

Quintor

Cluster architecture

QuintorBig Willem

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

Quintor

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

Quintor

Parallel processing

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

Quintor

Storm

Quintor

CODE

Quintor

Demo