NSWI150 - Virtualizace a Cloud Computing Cloudové technologie Filip Zavoral
Cloud Computing
Cloud Computing Components - exekuční modely Execution Models Virtual MachinesWeb SitesCloud Services Mobile servicesContainersHi-Perf Computing Storage & Data SQL DatabaseKey-Value TablesColumn Store BlobsDocumentDBCaching Data Processing Map/ReduceHadoop ZooReporting Networking Virtual NetworkConnectTraffic Manager Messaging Service BusQueuesTopics / Relays (Multi-)Media Media ServicesStreamingContentDelivery Other Services GIS / MapsSearching / IndexingMarketplace GamingMachine LearningLanguage / Translate Languages / SDK C++.Net Java PHP Python Node.js...
Cloud Computing Components - správa a zpracování dat Execution Models Virtual MachinesWeb SitesCloud Services Mobile servicesContainersHi-Perf Computing Storage & Data SQL DatabaseKey-Value TablesColumn Store BlobsDocumentDBCaching Data Processing Map/ReduceHadoop ZooReporting Networking Virtual NetworkConnectTraffic Manager Messaging Service BusQueuesTopics / Relays (Multi-)Media Media ServicesStreamingContentDelivery Other Services GIS / MapsSearching / IndexingMarketplace GamingMachine LearningLanguage / Translate Languages / SDK C++.Net Java PHP Python Node.js...
Cloud Computing Components - komunikace Execution Models Virtual MachinesWeb SitesCloud Services Mobile servicesContainersHi-Perf Computing Storage & Data SQL DatabaseKey-Value TablesColumn Store BlobsDocumentDBCaching Data Processing Map/ReduceHadoop ZooReporting Networking Virtual NetworkConnectTraffic Manager Messaging Service BusQueuesTopics / Relays (Multi-)Media Media ServicesStreamingContentDelivery Other Services GIS / MapsSearching / IndexingMarketplace GamingMachine LearningLanguage / Translate Languages / SDK C++.Net Java PHP Python Node.js...
Cloud Computing Components Execution Models Virtual MachinesWeb SitesCloud Services Mobile servicesContainersHi-Perf Computing Storage & Data SQL DatabaseKey-Value TablesColumn Store BlobsDocumentDBCaching Data Processing Map/ReduceHadoop ZooReporting Networking Virtual NetworkConnectTraffic Manager Messaging Service BusQueuesTopics / Relays (Multi-)Media Media ServicesStreamingContentDelivery Other Services GIS / MapsSearching / IndexingMarketplace GamingMachine LearningLanguage / Translate Languages / SDK C++.Net Java PHP Python Node.js... Konkrétní technologie Microsoft Azure, Google Cloud Platform, Amazon Web Services, IBM BlueMix, OpenCloud,...,...
1. Exekuční modely správa virtuálních strojů a procesů, deployment
Execution Models Execution models způsoby nasazení a běhu 'kódu' v cloudu úroveň poskytovaných služeb pro provozování vlastních aplikací IaaS, PaaS nemusím se o nic starat vs. můžu cokoliv architektura služeb
Service-oriented Computing Private Storage Server HW Networking Servers Databases Virtualization Runtimes Applications Security & Integration Infrastructure as a Service Infrastructure as a Service Storage Server HW Networking Servers Databases Virtualization Runtimes Applications Security & Integration Managed by vendor You manage Platform as a Service Platform as a Service Storage Server HW Networking Servers Databases Virtualization Runtimes Applications Security & Integration Software as a Service Software as a Service Storage Server HW Networking Servers Databases Virtualization Runtimes Applications Security & Integration HW virtual DC cloud
Virtual Machine Virtual machines vlastní image / gallery další cloudové služby db, networking pay-per-use, pay-per-config memory, processors, disk space administrace web portal scripting console API (REST) běžící VM virtuální disky - OS, data typicky BLOBy využití development / test environment běh aplikací, provoz služeb rozšíření datacentra disaster recovery ... whatever
Virtual Machine IaaS Infrastructure as a Service fault tolerance, monitoring replikace - BLOB aktualizace ne pro vlastní image Grouping load balancing rozložení požadavků availability set rozložení na různé uzly no single point of failure komunikace
Web Sites Web Sites / Web Apps webová aplikace na různých platformách jedno z nejčastějších využití cloudových infrastruktur ideální podmínky pro nasazení v cloudu nepredikovatelné škálovatelnost lze i pomocí virtual machines zbytečně složité nutná vlastní instalace, konfigurace a údržba
Web Sites Web Sites / Web Apps Platform-as-a-Service, PaaS předkonfigurované instalace kompletní framework - OS, db, web server, knihovny,... administrace, aktualizace a údržba komponent vývojář jen nakopíruje html/php/js/... dynamické přidávání instancí, load balancing automatické škálování - dle rozvrhu, používání, nebo dosažením kvót různé úrovně izolace shared / private VM různé frameworky, jazyky a db JAVA,.Net, PHP, Node.js, bflm-SQL Joomla, Drupal, WordPress,... WebJobs běh scriptů / jobů fronty, scheduler připravené prostředí
Cloud Services Cloud Services poskytování škálovatelných SaaS služeb WS - omezený přístup, nelze instalovat cokoliv, nejsou dostupné všechny služby VM - plný přístup, ale nutnost administrace a údržby, samo neškáluje Platform as a Service škálovatelnost, dostupnost, spolehlivost, údržba, různé jazyky a platformy aplikační model s větším počtem rolí web roles / worker roles front-end, GUI, http výpočty, aplikační logika vhodné pro vícevrstvé škálovatelné aplikace
Cloud Services Cloud Services jedna adresa, více web/worker rolí automatický load balancing a availability set vývojové a produkční prostředí (staging area) jednoduchý vyvoj/testování a přechod na novou verzi monitorování nejen (virtuálního) hardware agent uvnitř web/worker role Cloud Services vs. Web Sites administrativní přístup do VM instalace libovolného potřebného software web role / worker role vícevrstvé aplikace - vlastní VM pro aplikační logiku možnost propojení cloudové aplikace s privátními uzly Remote Desktop pro přímý přístup k aplikační VM
Cloud Services - scénáře
Mobile Services Mobile Services cloud back-end "za minutu" Backend-as-a-Service mobilní klient Android, iOS, Windows Datové a app služby back-end logika job scheduler přístup k DB REST API / lib offline support / synchronization Autentizační služby přihlášení účtem jiné služby integrace se sociálními sítěmi Facebook, Google, MS, Twitter,... Notifikace nahrazení aplikací na pozadí push-notifications IM, mail, aktualizace, kalendář,... periodické / hromadné zprávy
Containers Kontejnery sdílení systémových souborů, paměti,... izolace namespace, kontrola prostředků copy-on-write, resource governance,... “komodizace” cloud platforem Dev kód, knihovny, konfigurace, služby, data Ops monitorování, síť, přesouvání kontejnerů, logování, startování/vypínání kontejnerů Docker, Rocket,... Image r/o obraz souborového systému zapouzdřuje metadata síťové porty, připojené “disky” příkaz/script při startu kontejneru = distribuční balíček Kontejner běhová r/w instance image obsahuje běžící procesy izolace často jeden proces commit - lze vytvořit nový image Containers are the hottest thing in cloud right now
Containers - Isolation levels Isolace kontejnerů není dokonalá interference prostředků, nad které nespravuje kernel L3 cache, propustnost fyzické paměti,... kombinace VM a kontejnerů fakticky zjednodušené vytvoření VM a kontejneru v něm kombinace VM a kontejnerů fakticky zjednodušené vytvoření VM a kontejneru v něm
Containers & Microservices Kontejner vs. Virtual Machine menší režie, rychlejší start snadný deployment, škálovatelnost menší stupeň izolace bezpečnost Microservices návrhový vzor dekompozice na malé samostatné služby snadná flexibilita a cílená škálovatelnost efektivní implementace pomocí kontejnerů stateless / stateful př.: protocol gateways, user profiles, shopping carts, inventory processing, queues, caches,...
Microservices-based Apps Stateless service Stateful service State & replication management
Microservice Platforms Platform AppEngine, Service Fabric, Container Engine,... runtime, middleware - základní mikroslužby deployment, upgrades, scaling health monitoring, failure detectors, restarting service discovery, state management, resource management
Container Management Systems & Orchestrace Orchestrace plánování - job scheduling, resource scheduling automatizovaný výběr hostitele - host allocation vyvažování výkonu - load balancing zajištění dostupnosti - high availability health checking & logging, service restarting, automatická replikace služeb procedurální vs. deklarativní popis Azure Service Fabric Azure SQL Database cluster 100s machines s containers databases každá databáze je Service Fabric stateful microservice Cloud Services vs. Service Fabric CS: kód vázaný na instance VM (Web/Worker Role) SF: kód vázaný na SF - abstraktní vrstva rychlejší (re)start, menší režie, hustší hosting, multiplatformnost (Win/Lx), management
Container Management Systems & Orchestrace Google Borg Cluster Management System, vývoj od 2005 100k jobů, 10k uzlů Production / Non-Production jobs - priority alloc - task grouping, jednotka pro alokaci prostředků Borgmaster - 5x replikovaný - Paxos failure detection, relibility, availability Borg-based tools & zoo naming and service discovery application-aware load balancing horizontal and vertical autoscaling rollout tools - deployment of new binaries and configuration data workflow tools - multijob pipelines with interdependencies between the stages monitoring tools - gathering, aggregating and presentation of information about containers, alert triggers Omega redesign a reimplementace, vychází z Borgu a Apache Mesos Paxos-based transaction-oriented store Kubernetes open source (2014) pod - množina kontejnerů alokovaných vždy na stejný uzel rolling updates - postupná aktualizace replik bez přerušení dostupnosti základ pro Google Container Engine
Container Management Systems & Orchestrace Amazon Web Services EC2 Container Service proprietární řešení, těsná integrace s AWS, nebezpečí lock-in Open Stack OpenStack Heat nativní součást OpenStack šablony - textový soubor Terraform open source, vyvíjen nezávisle na OpenStack provider - jednotný systém pro OpenStack, vSphere, Amazon AWS, Azure HPE Cloud Service Automation komerční enterprise řešení, orchestrace je jen z jednou z component grafický designer umožňuje z jednotlivých šablon vytvářet nabídky viditelné v uživatelském portálu
High-Performance Computing Hi-Perf Cloud Computing data-intensive computing neočekávaná / periodická potřeba výkonu investice → provoz cluster – privátní / cloud / kombinovaný celá infrastruktura / rozšíření vlastní job scheduler, cluster manager/engine proprietární vs. externí - prevence lock-in chráněný přenos dat, VPN, IPsec Problémy / omezení privátní a citlivá data závislost na externím sw velká data - přenos
HPC Azure Big Compute Google Cloud Dataflow Amazon AWS HPC
Správa a ovládání Web portal Scripting API / SDK / Libraries REST API - CRUD Add OS Image /services/images image-label uri-of-the-containing-blob image-name Linux|Windows image-description image-family published-date true/false Small/Large/Medium/ExtraLarge language-of-image Add OS Image /services/images image-label uri-of-the-containing-blob image-name Linux|Windows image-description image-family published-date true/false Small/Large/Medium/ExtraLarge language-of-image (PartitionKey='PK',RowKey='RK')?$select=
Správa a ovládání Web portal
Správa a ovládání Scripting Add OS Image /services/images image-label uri-of-the-containing-blob image-name Linux|Windows image-description image-family published-date true/false Small/Large/Medium/ExtraLarge language-of-image Add OS Image /services/images image-label uri-of-the-containing-blob image-name Linux|Windows image-description image-family published-date true/false Small/Large/Medium/ExtraLarge language-of-image
Správa a ovládání API / SDK / Libraries Add OS Image /services/images image-label uri-of-the-containing-blob image-name Linux|Windows image-description image-family published-date true/false Small/Large/Medium/ExtraLarge language-of-image Add OS Image /services/images image-label uri-of-the-containing-blob image-name Linux|Windows image-description image-family published-date true/false Small/Large/Medium/ExtraLarge language-of-image
Správa a ovládání REST API - CRUD Create, Read, Update, Delete Přístup k službám i datům (PartitionKey='PK',RowKey='RK')?$select=
Monitoring Health dashboard komplexní pohled na funkční provoz infrastruktury v cloudu Topologické pohledy monitorování hlavních komponent v cloudu Reporty pohled na aktuální stav, trendy, zátěž (workload) reportovacím nástroj Cognos What-If kapacitní plánování Policy-Based optimalizace na základě monitoringu – kde nejlépe provozovat daný workload Performance Analytics pro správné škálování virtuálních serverů
Typické využití Vývoj aplikací mnohoplatformní vývojové a testovací prostředí, VM Aplikace s velmi proměnlivou zátěží online prodej lístků Paralelní výpočty komplexní modelování Masivní škálovatelnost sociální sítě, multiplayer Vysoká spolehlivost a dostupnost SaaS Krátká nebo nepředvídatelná životnost marketingová kampaň, startup Přetékající aplikace nedostatečná infrastruktura, nevyhovující politiky
Premium P1 Standard S2 [ ] Premium P2 [ ] Standard S1 [ ] Scalability Dimensions Basic [ ] Basic [ ] Basic [ ] Basic [ ] Basic [ ] Scale out/in Scale up/down Basic [ ] Basic [0-100] Vertikální škálovatelnost scale-up / scale-down navýšení odpovídajících vlastností zdroje zátěž je alokována na jednu jednotku Horizontální škálovatelnost scale-out / scale-in více zdrojů stejného typu, rozdělení zátěže potřeba minimalizace závislostí a redukce sdílených zdrojů homogenní bezstavové uzly synchronizace, konzistence Cloud Design Patterns Best Practices scale-out scale up
2. Data management ukládání a zpracování dat
Data Management SQL různé implementace, knihovny - JDBC, ADO.NET,... optimalizace pro cloud PaaS - maintenance, administrace, federation, replikace přístupné pro cloud i externí aplikace typicky distribuované řešení - availability, scalability primární / sekundární replika load balancing cluster index NoSQL databáze Key/Value Tables, Column Stores, Blobs Document stores, Graph databases,...
Data Management NDBI040 - Big Data Management (Irena Holubová)
Tables Key-Value Tables NoSQL - nejde o relační databázi velmi rychlý škálovatelný přístup k velkým (TB) typovaným datům replikace, sharding, často kombinace identifikace Key PartitionKey / RowKey nepodporuje složité dotazy (join) ani třídění podle více klíčů scale-out
Tables - datový model Struktura přístupu Account / Table / Partition / Entity / Property Table množina řádek jednoznačná identifikace: PartitionKey/RowKey PartitionKey - rozložení entit mezi různá replikovaná úložiště RowKey - jednoznačná identifikace v rámci Partition Třídění pouze podle PK/RK Entity množina Properties (atributy) vždy PartitionKey/RowKey a Timestamp PK/RK - uživatelsky definovaný obsah další atributy aplikačně definované bez pevného schématu různé entity mohou mít různé atributy
Tables - škálovatelnost Partitioning operace na jedné partition atomické rozložení dat mezi uzly řízeno aplikací volba PartitionKey/RowKey související entity na jednom uzlu - shodný PK rozvnoměrné rozložení entit mezi partitions - různé PK efektivní dotazy - filtr přes PK Příklady blogovací server témata, příspěvky v tématech PartitionKey: téma RowKey: datum a čas příspěvku další atributy: text, hodnocení verzované úložiště dokumentů PK: jméno souboru RK: verze další atributy: datum, id, poznámka k verzi,... vlastní data typicky na BLOB úložišti Efektivní dotaz: nejaktuálnější příspěvky v tématu Efektivní dotaz: nejaktuálnější příspěvky v tématu
Column stores Sloupcově orientovaná architektura složitější organizace dat než Key/Value řádky – velmi mnoho hodnot (tisíce, i miliony) adresace: column family / row / column → value no schema – různé počty a typy hodnot columns - static, dynamic řádka ≈ data vyhovující předpokládanému dotazu - materializaed view efektivní čtení dat verzování hodnot, timestamps, přístup k starším verzím C-store Cassandra MonetDB HBase... C-store Cassandra MonetDB HBase...
Column stores Sloupcově orientovaná architektura třídění dle row i column - rychlý přístup joiny nepodporovány ruční indexy, runtime, nákladné replikace vlotelná úroveň konzistence per-request strict c. eventual c. kolekce set list map dynamic columns secondary index
Document stores Dokument jednotka ukládání - store / retrieve XML, JSON, BSON, RDF, CSV,...,... event logging, content management, RT analytics,... sharding range-based / hash-based partitioning journaling append-only, write-ahead redo logs Struktura references normalizovaný datový model komplexnější m:n relace náročnější na výpočet embedded document denormalizovaný datový model jednodušší, rychlejší MongoDB RavenDB TerraStore... MongoDB RavenDB TerraStore...
BLOB Binary Large Objects nestrukturovaná velká (TB) binární data sdružené v replikovaných kontejnerech jméno kontejneru jako PartitionKey integrace s filesystemem, persistence virtuání disky VM video, backup - levné Typy blobů Block Blob sekvence bloků (řádově až miliony) optimalizováno pro sekvenční přístup - streamy rychlý zápis (append) a sekvenční čtení Page Blob stránkově orientované náhodný read/write přístup vyšší režie
BLOB BlobContainerAccount / Pages/ Blocks myaccount pic01.jpg Block/Page pic02.jpg images vid1.avivideos RESTful API PutBlob, GetBlob, DeleteBlob, CopyBlob, SnapshotBlob, LeaseBlob
Business Analytics SQL Reporting reporting, business analytics RDL data mining nad SQL / NoSQL rozhodovací stromy, lesy regresní analýza clustering,... různé typy výstupů grafy, sestavy, agragace různé formáty (XML, PDF,...)
RDL example Year\Category Solid 1pt 1pt 1pt 1pt bold 0.25in =Fields!Category.Value ="" + Fields!Category.Value + " = "+Sum(Fields!Sales.Value) Solid 1pt 1pt 1pt 1pt bold Grand Total... formátování "výpočty" data
Hadoop & Map/Reduce Hadoop, Distributed Data Processing BigData, nezpracovatelná rozumně jedním DBMS Map / Reduce paradigma pro paralelizaci a distribuovanost výpočtů implementace: Hadoop, Spark, MR-MPI, Marissa,... Další součásti a související moduly HDFS - distribuovaný FS Pig, PigLatin - parallelization platform, high-level language Hive, HiveQL - data warehouse & querying, data analysis
Map/Reduce magie
map(String key, String value): // key: document name // value: document contents for each word w in value: EmitIntermediate( w, count(w)); map(String key, String value): // key: document name // value: document contents for each word w in value: EmitIntermediate( w, count(w)); Map/Reduce Map/Reduce paradigma pro paralelizaci a distribuovanost map každý uzel nezávisle input → (key, value) reduce (key, list of values[]) → output sjednocení hodnot pro každý klíč zpracování, výsledek mezivýsledky mohou být duplicitní zpracování velmi velkých objemů dat fault tolerance Frekvence slov spočítat četnost slov v mnoha dokumentech map( file, text) → ( word, count) reduce( word, list of counts) → count reduce(String key, List values): // key: a word // values: a list of counts int result = 0; for each v in values: result += v; Emit( result); reduce(String key, List values): // key: a word // values: a list of counts int result = 0; for each v in values: result += v; Emit( result);
Map/Reduce - Frekvence slov Frekvence slov spočítat četnost slov v mnoha dokumentech map( file, text) → ( word, count) reduce( word, list of counts) → count
Map/Reduce - architektura master/slave architektura jobtracker - single master server rozhraní pro klienty fronta jobů, zpracování FIFO, přiřazení jobů tasktrackerům tasktrackers - slave servers, jeden per node v clusteru vykonávají tasky dle jobtrackeru přesuny dat mezi fázemi map a reduce vhodné pro: ne-relační (nestrukturovaná) data velké objemy dat dávkový/offline režim nevhodné pro: malá data - režie nevhodný výpočetní model komunikace a synchronizace mezi uzly nízká latence, interaktivita, transakčnost distributed filesystem
Hadoop Zoo HDFS Hadoop Distributed File System, optimalizován pro Hadoop HBase NoSQL databáze Bigtable-like structured storage system for Hadoop HDFS Pig, PigLatin Hi-level language for data analysis, překlad na map/reduce joby HIVE, HiveQL Data warehousing infrastructure SQL-like jazyk pro dotazy nad HDFS Mahout framework pro strojové učení a data mining Hama distributed (grid) computing framework BSP (Bulk Synchronous Parallel) computing techniques for massive scientific computations Zookeeper high-performance coordination service for distributed applications consensus, naming, synchronization, group membership, leader election, queues, event notifications, configuration, workflow & cluster management, sharding,...
HDFS HDFS Hadoop Distributed File System řádově 10 4 uzlů, 10 6 souborů, PB dat Vlastnosti odolnost proti chybám HW replikace, detekce chyb a zotavení optimalizace pro velké množství levného HW failure is not an exception streamování souborů optimalizace propustnosti, ne přístupové doby orientace na velké soubory velká data jsou uložená v menším množství velkých souborů write-once-read-many jednou zapsaný soubor už není možné měnit ani přidávat data na konec podpora pro append už sice existuje (HDFS-265), ale jen pro speciální případy „Moving computation is cheaper than moving data“ výpočet je efektivnější spustit přímo u dat
HDFS Architektura HDFS NameNode master - správa metadat seznam souborů a adresářů, jejich mapování na bloky, umístění bloků DataNode slave - úložiště bloků, operace zápisu a čtení, neví nic o souborech NameNode může nařídit blok zreplikovat či smazat operace se souborovým systémem zápis: NameNode založí soubor a rozhodne, jaký DataNode použít čtení: NameNode zjistí umístění bloků souboru, klient komunikuje přímo s DataNode replikace atribut souboru - počet požadovaných replik na jednom uzlu vždy jedna replika bloku odolnost proti výpadku disku / uzlu zápis: odložená replikace HCFS - HDFS rozhraní možné jiné implementace FS Azure Blob Storage, CassandraFS, CephFS, CleverSafe Object Store, GlusterFS, GridGain, Lustre, MapR FS, Quantcast FS, Symtantec Veritas Cluster FS,...
Pig Pig nevýhody Map/Reduce příliš low-level nepodporuje složitější data-flow Pig - runtime environment for web-scale data processing transformace na soustavu MapReduce jobů BigData - batch processing PigLatin hi-level language for data analysis data-parallel language operace pro manipulaci s relačními daty imperativní styl programování snadná uživatelská rozšíření
Pig Data Flow & Pig Latin visits = load ‘/data/visits’ as (user, url, time); gVisits = group visits by url; visitCounts = foreach gVisits generate url, count(visits); urlInfo = load ‘/data/urlInfo’ as (url, category, pRank); visitCounts = join visitCounts by url, urlInfo by url; gCategories = group visitCounts by category; topUrls = foreach gCategories generate top(visitCounts,10); store topUrls into ‘/data/topUrls’;
Compilation into Map-Reduce Load Visits Group by url Foreach url generate count Foreach url generate count Load Url Info Join on url Group by category Foreach category generate top10(urls) Foreach category generate top10(urls) Map 1 Reduce 1 Map 2 Reduce 2 Map 3 Reduce 3 Every group or join operation forms a map-reduce boundary
Pig Latin operations loadRead data from file system storeWrite data to file system foreachApply expression to each record and output one or more records filterApply predicate and remove records that do not return true group/cogroupCollect records with the same key from one or more inputs joinJoin two or more inputs based on a key; various join algorithms available orderSort records based on a key distinctRemove duplicate records unionMerge two data sets splitSplit data into 2 or more sets, based on filter conditions streamSend all records through a user provided executable sampleRead a random sample of the data limitLimit the number of records
Pig Latin vs. Map Reduce Users = load ‘users’ as (name, age); Fltrd = filter Users by age >= 18 and age <= 25; Pages = load ‘pages’ as (user, url); Jnd = join Fltrd by name, Pages by user; Grpd = group Jnd by url; Smmd = foreach Grpd generate group, COUNT(Jnd) as clicks; Srtd = order Smmd by clicks desc; Top5 = limit Srtd 5; store Top5 into ‘top5sites’;
Hive, HiveQL Data warehousing infrastructure ETL tools - data extract/transform/load vysokoúrovňové operace nad nízkoúrovňovými daty přístup do souborů HDFS nebo HBase query execution via MapReduce Hive QL SQL-like jazyk pro dotazy nad HDFS rozšiřitelný o vlastní MapReduce mappers a reducers pohodlný, nepříliš výkonný SELECT customer.name, sum(orders.cost) FROM customers INNER JOIN ON (customer.id = orders.customer_id) WHERE customer.zipcode = '63105' GROUP BY customer.id; SELECT customer.name, sum(orders.cost) FROM customers INNER JOIN ON (customer.id = orders.customer_id) WHERE customer.zipcode = '63105' GROUP BY customer.id; Hive
Hadoop Zoo
HBase / Hadoop Architecture
SQL-on-Hadoop Frameworks Apache Hive tradičně součást instalace Hadoop, Hive-QL, nízká výkonnost Cloudera Impala SQL dotazy nad Hadoop daty, vlastní engine, pro rychlé dotazy vlastní formát Presto (Facebook) interaktivní SQL dotazy, specializované operátory, vlastní formát dat Apache Shark port of Hive to run on Spark Spark - multistage, in-mem/distributed mem, cca 10x rychlejší než MR Apache Drill EMC/Pivotal HAWQ BigSQL by IBM Apache Pheonix (for HBase)
3. Komunikace networking, messaging
Cloud Networking Virtual Network propojení vlastní a cloudové sítě Connect, přímé propojení propojení cloudové sítě s lokálními počítačí Traffic manager load balancing, směrování
Virtual Network Virtual Network propojení s vlastní sítí rozšíření vlastní sítě přístup k službám lokální sítě z cloudových modulů přístup k cloudovým službám z lokální sítě propojení několika datacenter geografická škálovatelnost možné dedikované linky nepropojené s veřejným internetem možné dedikované linky nepropojené s veřejným internetem
Přímé propojení Cloud Connect - přímé propojení VPN - nutnost VPN gateway, network admin klientský sw přístup k cloudovým službám z lokálních počítačů bez nutnosti síťování cloudové služby se jeví jako v lokální síti možnost individuálního nastavení
Traffic Manager Traffic Manager load balancing požadavků mezi datacentra pravidla směrování (routing rules) definována vývojáři aplikací Performance (nejbližší), Failover (prioritní), Round Robin (kruhová sýkorka) vhodné zejména pro velké aplikace, geografická škálovatelnost
Cloud Messaging - Service Bus Service Bus publish-subscribe, loosely coupled communication skupinová komunikace 1:N, více příjemců API mimo cloud letecká společnost, zpřístupnění rezervace letenek a oznamování změn Queues, Topics, Relays, Event Hubs
Service Bus - Queues Message Queueing spolehlivý asynchronní jednosměrný kanál mezi rolemi web role přijme soubor s videem uloží ho do blobu, pošle zprávu do MQ nějaký worker role někdy zprávu vyzvedne a provede konverzi formátu části zprávy strukturovaná / nestrukturovaná škálovatelnost - nezávislý počet read/write rolí odesílatelů i příjemců může být více automatický load balancing Vyzvednutí zprávy Receive/Delete jednodušší, možná ztráta při výpadku idempotentní služby Peek/Lock/Complete/Abandon fault tolerance
Service Bus - Topics Topics publish / subscribe sekvence zpráv týkajících se nějakého 'tématu' předplatné (subscription) je definováno jménem a filtrem filtr na základě vlastností zprávy (WHERE klauzule) každé předplatné má svoji virtuální kopii zprávy jedna zpráva může být zpracovávána více příjemci Receive/Delete, Peek/Complete Partitioning Queues / Topics rozložení zátěže na více brokerů - scale-out výběr repliky (fragmentu fronty) náhodně nebo podle klíče
Service Bus - Relays Relays obousměrné propojení (na rozdíl od Queues/Topics) Motivace obě aplikace za firewallem blokované příchozí porty NAT - proměnlivá IP adresa Řešení Service Bus Relay Service obě aplikace se přihlásí registr relay ids
Service Bus - Event Hub Event Hub real-time streaming services vysoká propustnost / s telemetrie, logy,... competing consumers pevný počet partitions (2-32) publisher individuálně / Shared Access Signature partition key / round robin consumer group způsob zpracování event ➟ více consumer groups stream / partition offset checkpointing zpracovaný partition offset pokračování po odhlášení a přihlášení jiného consumera event ingestor partition offset
Caching Caching access to SQL, Tables & Blobs is fast... ... but access to memory is much faster intra-app, inter-app, inter-cloud in-memory key/value store value: any chunk of data possibly structured Memcached ‘free & open source, high-performance, distributed memory object caching system’ Memcached protokol Content Delivery Network mnoho uzlů rozmístěných po celé zemi, galaxii,... první přístup - kopie dat (blob) do uzlu CDN další přístupy - jen k uzlu CDN
4. Další cloudové služby
Multi- & Media Video & Media Services uploadig - blob encoding, konverze formátů indexing, vyhledávací služby protection, encrypted streaming embeded content - subtitles, advertising packaging, streaming - live / on demand scheduling monitoring & analytics
GIS / Maps Geographic Information Systems mapy free / private / special mapové vrstvy vazby na sémantická/relační data hospody, počasí, doprava, firmy,... vyhledávání, spatial indexes, trasy offline / online / cache API, web, mobile
Server-side tenký klient, mobil problém: latence, propustnost multiplayer / community Client-side deployment prostředí, mapy, levely save to cloud + change device multiplayer / social gaming DRM – boj proti Mobile clients save & play everywhere autentizace push-notifications Gaming
>100,000 Azure Virtual Machines Titanfall
Marketplace Marketplace G-Play, MS/Azure Store, AWS Marketplace,... applications/services data - video, mp3, e-books,... publishers pricing updates ranking segmentation, evaluation customers identity subscriptions push updates reviews / ranking publishing / subscription API
Machine Learning Machine Learning aplikace historických dat na konkrétní problém vytvoření modelu použití pro predikci budoucího vývoje nebo trendů BigData, supervised / unsupervised methods search engines, online product recommendations, GPS traffic directions, credit card fraud prevention systems, personal assistants / Cortana
& more... Další cloudové služby searching / indexing text, image, video, similarity search jazykové a překladatelské služby translation API... implemented by औ online collaboration Google Docs, Office 365 Online GDrive, OneDrive, DropBox,...,... GPGPU computing Azure NVidia Tesla K80, M60 Internet of Things technologie pro propojování zařízení, monitorování, sběr dat a analýzu IoT Hub - chráněná obousměrná komunikace s miliony zařízení data streams, real-time data processing statistiky, logy, monitoring micropayments, billing, support for e-commerce ...,...,... Identita a ochrana přístupu ➟
Vlastnosti cloudů Sdílení systému (multitenancy) jeden prostředek (server, data, síť) využívá více uživatelů současně virtualizované zdroje jsou logicky odděleny nelze přistupovat k cizím zdrojům Thin provisioning virtuální alokace prostoru na úložišti dat klientu je zdánlivě vyhrazena požadovaná kapacita ve skutečnosti ji mohou až do doby využití používat jiné systémy různé úrovně záruky dostupnosti Škálovatelnost a elasticita (scalability, elasticity) změna výkonu podle potřeb klienta služby jsou účtovány podle skutečného využití Spolehlivost a dostupnost (reliability) záložní systémy na různých úrovních (servery, infrastruktura, datová centra) software, který za provozu zajistí rychlé nahrazení nefunkční části systému Aktualizovanost (up-to-date) software je automaticky aktualizovaný, uživatel nemusí zasahovat
Druhy cloudů Veřejný cloud (Public cloud) poskytování služeb (IaaS, PaaS, SaaS) třetí stranou - nejčastější typ zajištěna vysoká škálovatelnost a účtování podle využívaných zdrojů Soukromý cloud (Private cloud) infrastruktura poskytující služby pouze jedné organizaci schopnost účtování jednotlivým složkám organizace Komunitní cloud (Community cloud) cloud využívaný komunitou - spolupracující firmy, projekt apod. Hybridní cloud (Hybrid cloud) cloud složený z více různých cloudů, např. několika veřejných a soukromého cloud interoperability - Sky Computing
5. Cloudové platformy
Microsoft Azure
Google Cloud Platform - Compute Engine / App Engine App Engine - PaaS Translate API Prediction API Big Query Compute Engine - IaaS Cloud Datastore Cloud SQL Cloud Endpoints Cloud Storage
Amazon Web Services / Elastic Cloud
Compute Elastic Compute Cloud (EC2) provides scalable virtual private servers using Xen. Elastic MapReduce (EMR) uses a hosted Hadoop framework running on the web-scale infrastructure. Lambda (LAMBDA) provides a compute service that runs code in response to events and automatically manages the compute resources needed to run the code. Networking Route 53 provides a highly available and scalable Domain Name System (DNS) web service. Virtual Private Cloud (VPC) creates a logically isolated set of Amazon EC2 instances which can be connected to an existing network using a VPN connection. AWS Direct Connect provides dedicated network connections into AWS data centers. Elastic Load Balancing (ELB) automatically distributes incoming traffic across multiple Amazon EC2 instances. Storage and content delivery CloudFront, a content delivery network (CDN) for distributing objects to so-called "edge locations" near the requester Simple Storage Service (S3) provides Web Service based storage. Glacier provides a low-cost, long-term storage option (compared to S3). High redundancy and availability, but low-frequent access times. Intended for archiving data. AWS Storage Gateway, an iSCSI block storage virtual appliance with cloud-based backup. Elastic Block Store (EBS) provides persistent block-level storage volumes for EC2. AWS Import/Export, accelerates moving large amounts of data into and out of AWS using portable storage devices for transport. Elastic File System (EFS) a file storage service for EC2 instances. Database DynamoDB provides a scalable, low-latency NoSQL online Database Service backed by SSDs. ElastiCache provides in-memory caching for web applications. This is Amazon's implementation of Memcached and Redis. Relational Database Service (RDS) provides a scalable database server with MySQL, Oracle, SQL Server, and PostgreSQL support. Redshift provides petabyte-scale data warehousing with column-based storage. SimpleDB allows developers to run queries on structured data. It operates in concert with EC2 and S3 to provide "the core functionality of a database". AWS Data Pipeline provides reliable service for data transfer between different AWS compute and storage services. Kinesis streams data in real time with the ability to process thousands of data streams. Deployment CloudFormation provides a file-based interface for provisioning other AWS resources. AWS Elastic Beanstalk provides quick deployment and management of applications in the cloud. AWS OpsWorks provides configuration of EC2 services using Chef. AWS CodeDeploy provides automated code deployment to EC2 instances. Management Identity and Access Management (IAM) is an implicit service, the authentication infrastructure used to authenticate access to the various services. AWS Directory Service a managed service that allows you to connect your AWS resources with an existing on-premises Microsoft Active Directory or to set up a new, stand-alone directory in the AWS Cloud. CloudWatch, provides monitoring for AWS cloud resources and applications, starting with EC2. AWS Management Console, A web-based interface to manage and monitor the Amazon infrastructure suite. CloudHSM - The AWS CloudHSM service helps you meet requirements for data security by using dedicated Hardware Security Module (HSM) appliances within the AWS cloud. AWS Key Management Service (KMS) makes it easy to create and control the keys used to encrypt your data. Application services API Gateway is a service for publishing, maintaining and securing web service APIs. CloudSearch provides basic full-text search and indexing of textual content. DevPay is a billing and account management system. Elastic Transcoder (ETS) provides video transcoding of S3 hosted videos, marketed primarily as a way to convert source files into mobile-ready versions. Flexible Payments Service (FPS) provides an interface for micropayments. Simple Service (SES) provides bulk and transactional sending. Simple Queue Service (SQS) provides a hosted message queue for web applications. Simple Notification Service (SNS) provides a multi-protocol "push" messaging for applications. Simple Workflow (SWF) is a workflow service for building scalable, resilient applications. Cognito a simple user identity and data synchronization service that helps you securely manage and synchronize app data for your users across their mobile devices. AppStream a flexible, low-latency service that lets you stream resource intensive applications and games from the cloud. Analytics Machine Learning a service that makes it easy for developers of all skill levels to use machine learning technology. Kinesis is a fully managed, cloud-based service for real-time data processing over large, distributed data streams. Miscellaneous Historical Pricing provides access to Amazon's historical sales data from its affiliates. Mechanical Turk (Mturk) manages small units of work distributed among many persons. Product Advertising API provides access to Amazon's product data and electronic commerce functionality. Gift Code On Demand (AGCOD) for Corporate Customers enables companies to distribute Amazon gift cards instantly. AWS Partner Network (APN) provides partners with the technical information and sales and marketing support to increase business opportunities through AWS.
IBM CloudFoundry / BlueMix
Open Stack Cloud Lock-in functionality, license, development OpenStack 2010 NASA + Rackspace nyní řízeno OpenStack Foundation > 500 firem, od 2014 open source - public / private cloud API založeno na Amazon EC2 a S3 Compute - Nova Object Storage - Swift Block Storage - Cinder Image Service - Glance Networking - Neuron Identity - Keystone Dashboard - Horizon Orchestration - Heat Workflow - Mistral Telemetry - Ceilometer Database - Trove Map Reduce - Sahara Bare Metal - Ironic Messaging - Zaqar Shared FS - Manila DNS - Designate Search - Searchlight Key Manager - Barbican
Cloud Interoperability - Sky Computing
InterCloud cloud interoperability protokoly, formáty a mechanismy 'cloud roaming' IEEE, CISCO,... As of June 2015, the Intercloud has yet to show real world demonstration of federation and interoperability, and challenges remain regarding security and trust, governance and legal issues, QoS, monitoring, arbitrage, and billing. InterCloud
Perspektivy Cloud Interoperability
6. Návrhové vzory pro cloud computing na samostatných slajdech
to be continued... NSWI151 - Administrace virtualizační infrastruktury Jakub Yaghob praktická administraci moderních virtualizačních řešení plánování, nasazení, zabezpečení a údržba virtualizační infrastruktury VMware vSphere, Microsoft Hyper-V NSWI152 - Vývoj cloudových aplikací Filip Zavoral + Tomáš Herceg, Jiří Vinárek praktický vývoj a nasazení aplikací Windows Azure, Google Cloud Platform,... NDBI040 - Big Data Management Irena Holubová Key/Value tables, Column Store, Graph DB, Distributed DB, Hadoop,... NDBI041 - Pokročilé Big Data Technologie Leo Galamboš efektivní zpracování datových proudů, data warehousing, clustering, analýza,...