real-time big data v tvojej samoške - pygmalios analytics
TRANSCRIPT
“Real-time big data v tvojej samoške”
Milan NovotaHead of Product
PrieskumKto z vás nakupuje v kamenných
obchodoch?Ráta sa aj bufet.
PrieskumKto z vás tam nakupuje rád?
Fakt
Fyzické nakupovanie je naša každodenná realita,
ktorá častokrát bolí.
Kvíz
Akú časť celosvetových tržieb v maloobchode podľa vás tvoria nákupy cez
internet?
Fakt
Fyzické nakupovanie v mnohých ohľadoch vážne zaostáva
za e-nakupovaním
Problém č.1
Problém č.2
Naša misiaFixnúť tieto problémy.
Naše riešenieSenzory a software.
Pygmalios Engineering
Rado BuranskýScala developer
Kamery RTLS Mobily
Obchod
Dátový tok v reálnom čase
1.Z predajne chodia 10tky JSON správ za sekundu2.Na 2 týždne sa uložia do Kafky3.Spark Streaming číta z Kafky
4.Dáta v pôvodnom tvare ukladá do Cassandry5.Zagregované do Influxu
6.Node.js číta z Influxu cez HTTP API
Zdroje dát
WiFi na mobilochReal-time location system - presná poloha
Kamery (nie video) - počítanie ľudí, pohlavie, vekPOS transakcie
Služby tretích strán (počasie, atď.)
Chceme byť nezávislí od konkrétneho HW
Kamery RTLS Mobily
Obchod
Distribuovaná implementácia kruhového buffera uloženého na magnetický disk
Úžasne veľká priepustnosťSpoľahlivosť
Kamery RTLS Mobily
Obchod
Prekrásny funkcionálny objektový jazyk pre JVMSilné statické typovanieImmutability by default
Bohatá štandardná knižnicaOveľa menej kódu ako v Jave
Sada nástrojov na paralelné a distribuované appky
Futures, ActorsClustering / remoting
Let it crash!
"Without Resilience, Nothing Else Matters" - Jonas Bonér
Batchové aj streamové spracovanie dátĎalšia generácia po Hadoop MapReduce
Bohaté API - Scala, Python, R, JavaStrojové učenie
Interaktívny režimVeľa spôsobov nasadenia
Kamery RTLS Mobily
Obchod
Distribuovaná databázaVysoká dostupnosť
Lineárna škálovateľnosťRýchly zápis
Dátový model ideálny pre immutable časové dátaDenormalizácia je štandard
Kamery RTLS Mobily
Obchod
Databáza pre časové údajeBohaté API
Jednoduchá integrácia s grafovými nástrojmiPriekopnícky spolupracujeme s autormi
Spravili sme vlastný reaktívny driver
Kamery RTLS Mobily
Obchod
Čítanie dát z Influxu cez HTTP APIUživateľské rozhranie
Infraštruktúra
Architektúra
Lambda architektúra
Immutable master datasetDonekonečna pribúdajúce dáta, zdroj všetkej pravdy
Každá query je fcia na všetkými dátami
Batch vrstvaPre každú query pregeneruje view z master datasetu
Speed vrstvaKompenzuje pomalosť batchu
ale môže vniesť nekonzistentnosť
Vďaka Sparku sú algoritmypre batch aj speed vrstvu
naimplementované iba raz
Príklad:
Konverzia nakupujúcich
Priemerná konverzia nakupujúcichPočet odchádzajúcich ľudí / počet tých čo nakúpili
Zdroje dát: 1. info o pohybe ľudí z kamier2. POS transakcie z pokladní
Transformácie
Agregácia do 15-minútových okienCassandra counter dátový typ
Joinproblém
Join nie je ľahký
Spojenie dvoch prúdov dát do jedného
Čo ak niektoré správy prídu o hodinu (deň) neskôr?
Čo ak niektoré prídu viac razy?
Čo ak sa popredbiehajú?
Cassandra ho nepodporuje
Garancia doručenia správ
Garancia doručenia správ
Najviac razsprávy sa strácajú
Aspoň raznič sa nestráca ale môže prísť viackrát
Práve raznedá sa - viď. Byzantínci
Naozaj sa "práve raz" nedá?
Nevadí, sú spôsoby ako sa s tým vysporiadať:
idempotenciatransakcie
Výsledok je ako keby bola každá správa doručená práve raz
Centrálny monitoring a logging
Škálovanie
Škálovanie
Pribúdajú predajne
Naša výhoda je predvídateľnosť
Treba kapacitu vôbec plánovať?
Škálovanie vďaka Akke
Actorom je im jedno, či sú na tej istej mašine
Akka Cluster zabezpečuje odolnú decentralizáciu
NodeGuardian
AvgConvRateActor PeopleCountActorPosTransactionActor SepApiActor
Hierarchia Akka actorov
Škálovanie vďaka Sparku
Master / worker architektúra
Flexibilné pridávanie worker nodov
Škálovanie vďaka Cassandre
Partitioning
Lineárna charakteristika
Škálovanie vďaka Amazon Web Services
EC2 inštancie
s predpripravenými imagemi
DataStax Enterprise
Okamžité spustenie
AWS m3.xlarge
Cassandra
Spark
Akka
Škálovanie vďaka Dockeru
Horizontálne škálovanie vytvorením
nových kontajnerov inštancií aplikácie
Predikcia je náš cieľ
Historické dáta sú nuda
Treba predpovedať budúcnosťPriamo povedať prevádzkarovi čo robiť
Nech odpoveď nehľadá v grafoch a reportoch
"O týždeň v stredu príde 17 žien v strednom veku a nakúpia Alpu. Doobjednaj ďalšie na sklad."
Spark Machine Learning library
Klasifikácia, regresia, clustering, ...Prediktívna analýza pre existujúce metriky
SW riešenie namiesto HW:okoloidúci vs. návštevníci z intenzity WIFI signálu
Technológie nás bavia
Chceme byť tech
Beta verzie cutting-edge technológiiPrispievanie do open sourcuVerejné zdieľanie skúsenostíBudovanie lokálnej komunity
Teraz môžem v práci robiť to,čo som kedysi robil iba po nociach
Povedzte nám, čo vás bavía príďte k nám na Spark workshop
Ďakujeme