Upload
nljug
View
196
Download
1
Embed Size (px)
Citation preview
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