Slide 1

Slide 1 text

Willkommen  beim  #GAB2016!   Stream  Processing   mit  Azure     Hans-­‐Peter  Grahsl     Entwickler  &  Berater  |  Netconomy  |  FH  CAMPUS  02     Twi@er:  @hpgrahsl   16.  April  2016  

Slide 2

Slide 2 text

Inhalte       •  MoBvaBon  /  Einführung   •  MicrosoI‘s  Azure  Stream  AnalyGcs  +  Demo   •  Fragen  &  Zusammenfassung  

Slide 3

Slide 3 text

Warum  Datenstromanalyse  in  der  Cloud?     Ein  Großteil  der  Daten   ist  nicht  mehr  lokal   Eventbasierte  Daten   befinden  sich   oImals  bereits  in   der  Cloud   Eventbasierte   Daten  sind  immer   häufiger  global   verteilt   Reduced  TCO   ElasBc  scale-­‐out   Service,     not  infrastructure   “Bring  the  processing  to  the  data,     not  the  data  to  the  processing!”  

Slide 4

Slide 4 text

Datenstromanalyse  in  der  Cloud   Storage     adapters   Stream     processing   Cloud  gateways   (web  APIs)   ApplicaBons   Search  and  query   Data  analyBcs  (Excel)   Web/thick  client     dashboards   Devices  to  take  acBon   KaNa  /   RabbitMQ  /   Ac,veMQ   …   Web  and  Social   Devices   Sensors  

Slide 5

Slide 5 text

Azure  Stream  AnalyGcs     “…is  a  fully  managed,  cost  effecBve   real-­‐Bme  event  processing  engine   that  helps  to  unlock  deep  insights   from  data.”   Echtzeitnahe   Verarbeitung   Rasche  /  Einfache   Entwicklung   Zuverlässigkeit   &  Skalierbarkeit  

Slide 6

Slide 6 text

Azure  Stream  AnalyGcs   CharakterisGken   -­‐  sehr  kurze  Einarbeitungszeit  durch  T-­‐SQL  Syntax   -­‐  nahtlose  IntegraBon  zu  Azure  Event  Hubs   -­‐  KombinaBon  von  Streams  und  staBschen  Daten   -­‐  horizontale  Skalierung   -­‐  niedrige  Latenz  unter  hoher  Last   -­‐  garanBerte  Verfügbarkeit  (99.9%)   -­‐  defacto  kein  administraBver  Aufwand        

Slide 7

Slide 7 text

Azure  Stream  AnalyGcs   Skalierungskonzept   -­‐  durch  mehrere  sog.  Streaming  Units  (SU)    à  kombiniertes  Maß  an  CPU,  RAM  und  I/O       -­‐  per  default  1  SU/Job   -­‐  1  SU  bietet  Durchsatz  bis  ~1MB/Sek.     -­‐  im  Standard  Account  gesamt  max.  50  SUs     à  Einsatz  mehrerer  SUs  abhängig  von   entwickelter  Abfrage  sowie  ParBBonskonfiguraBon   der  involvierten  Datenquellen        

Slide 8

Slide 8 text

Azure  Stream  AnalyGcs   Skalierungskonzept   Bsp.  3  Par==ons*               Step Result  1   Step Result  2   Step Result  3   Event  Hub   *ParBBon  ==  geordnete  Sequenz  von  Events  

Slide 9

Slide 9 text

Azure  Stream  AnalyGcs   Skalierungskonzept   à  hochgradig  paralleler  Job  sofern:   •  #Input  ParBBonen  ==  #Output  ParBBonen   •  parBBonierte  Abfrage:  ParGGon  By  ParGGonId   •  falls  mehrstufige  Abfrage  alle  mit  gleicher  ParBBonierung     pro  ParBBonsabfrage  sind  bis  zu  6  SUs  verwendbar   alle  nicht  parBBonierten  Abfrageschrise  gemeinsam  max.  6  SUs   hsps://azure.microsoI.com/en-­‐us/documentaBon/arBcles/stream-­‐analyBcs-­‐scale-­‐jobs/        

Slide 10

Slide 10 text

Azure  Stream  AnalyGcs   5  Schri@e:     1)  Stream  AnalyBcs  Job  erzeugen     2)  Inputquelle(n)  definieren     3)  Abfrage  mit  T-­‐SQL  Syntax  entwickeln     4)  Outputquelle(n)  definieren     5)  Job  starten  &  überwachen        

Slide 11

Slide 11 text

Azure  Stream  AnalyGcs  

Slide 12

Slide 12 text

Azure  Stream  AnalyGcs   Inputquellen:           -­‐  Data  Streams    =>  EventHub,  IoT  Hub,  BlobStorage   -­‐  Reference  Data    =>  BlobStorage   -­‐  Formate:  JSON,  CSV,  Avro   -­‐  Encoding:  UTF-­‐8    

Slide 13

Slide 13 text

Azure  Stream  AnalyGcs   Outputquellen:           -­‐  Azure  SQL  DB,  BlobStorage,  EventHub,   -­‐  Table  Storage,  Service  Bus  (Queues  &  Topics),   -­‐  DocumentDB,  Power  BI  

Slide 14

Slide 14 text

Demo-­‐Anwendung   =>  Tracking  Emojis  in  public  Tweets   =>  984   =>  773   …  

Slide 15

Slide 15 text

Azure  Stream  AnalyGcs   Abfrage  Editor          

Slide 16

Slide 16 text

Azure  Stream  AnalyGcs   Abfrage  Sprache   -­‐  Subset  von  standard  T-­‐SQL  Syntax           hsps://msdn.microsoI.com/en-­‐us/library/azure/dn835030.aspx   DML Statements •  SELECT •  FROM •  WHERE •  GROUP BY •  HAVING •  CASE •  JOIN •  UNION Aggregate Functions •  SUM •  COUNT •  AVG •  MIN •  MAX Array Functions … Analytic Functions … Date and Time Functions •  DATENAME •  DATEPART •  DAY •  MONTH •  YEAR •  DATETIMEFROMPARTS •  DATEDIFF •  DATADD String Functions •  LEN •  CONCAT •  CHARINDEX •  SUBSTRING •  PATINDEX Scaling Functions •  WITH •  PARTITION BY

Slide 17

Slide 17 text

Azure  Stream  AnalyGcs   Abfrage  Sprache   -­‐  Windowing  Erweiterungen     Hopping  Windows  (HW)   -­‐  wiederholend   -­‐  Überlappung  möglich   -­‐  Versatz  um  fixe  Zeitspanne           hsps://msdn.microsoI.com/en-­‐us/library/azure/dn835041.aspx   1 5 4 2 6 8 6 A 20-second Hopping Window with a 10 second “Hop” 4 2 6 8 6 5 3 6 1 1 5 4 2 6 8 6 5 3 6 1 5 3

Slide 18

Slide 18 text

Azure  Stream  AnalyGcs   Abfrage  Sprache   -­‐  Windowing  Erweiterungen     Tumbling  Windows  (TW)   -­‐  wiederholend   -­‐  nicht  überlappend           hsps://msdn.microsoI.com/en-­‐us/library/azure/dn835055.aspx       1 5 4 2 6 8 6 5 Time    (secs)   1 5 4 2 6 8 6 A 20-second Tumbling Window 3 6 1 5 3 6 1

Slide 19

Slide 19 text

Azure  Stream  AnalyGcs   Abfrage  Sprache   -­‐  Windowing  Erweiterungen     Sliding  Windows  (SW)   -­‐  „konBnuierliche“  Verschiebung   -­‐  Outputs  nur  bei  Änderungen   der  Daten  im  Window   à  „Delta-­‐Triggering“   -­‐  mind.  1  Event  /  SW         hsps://msdn.microsoI.com/en-­‐us/library/azure/dn835051.aspx   1 5 A 20-second Sliding Window 1 8 8 5 1 9 5 1 9

Slide 20

Slide 20 text

Azure  Stream  AnalyGcs   Zeitversatz  Regeln?   à  „Late  arrival“  (Events  treffen  verspätet  ein)   a)  Zeitstempel  werden  ggf.  automaBsch  korrigiert   b)  od.  Events  verworfen     à  „Out  of  order“  (Events  treffen  nicht  chronologisch  ein)   a)  Events  werden  ggf.  neu-­‐/umsorBert   b)  od.  Events  verworfen       hsps://www.flickr.com/photos/smemon/5281453002/    

Slide 21

Slide 21 text

Azure  Stream  AnalyGcs   Abfrage  Sprache   -­‐  GROUP  BYs  bzw.  JOINs  für  Datenströme  brauchen    zwingend  Angabe  von  Zeitpunkt  bzw.  Zeitspanne      GROUP BY [fieldname], [Hopping|Tumbling|Sliding]Window(...) JOIN ... ON ... AND DATEDIFF(...) BETWEEN 0 AND N       -­‐  WITH  für  „mehrstufige“  Abfragen  bzw.    zur  Erzeugung  von  temp.  Result  Sets    WITH temp1 AS (SELECT ... FROM input), WITH temp2 AS ( SELECT ... FROM temp1) [,...] SELECT ... FROM temp2    

Slide 22

Slide 22 text

Azure  Stream  AnalyGcs  Demo   =>  Tracking  Emojis  in  public  Tweets   =>  984   =>  773   …   Azure  SQL  DB   Azure    Table   Storage   Azure  Blob  Storage     Events  ==  Tweets  

Slide 23

Slide 23 text

Azure  Stream  AnalyGcs  Demo   =>  984   =>  773   …  

Slide 24

Slide 24 text

Azure  Stream  AnalyGcs   Kurzresumée   ++  sehr  zugänglich  für  Einsteiger   ++  ausdrucksstarke  T-­‐SQL  Query-­‐Language   ++  flexibles  Windowing  Konzept  für  div.  Analyseaufgaben   +  viele  Azure  I/O  Quellen  out-­‐of-­‐the-­‐box  (Event  Hub/BlobStorage,SqlDB,...)   +  nahtlose  Anbindung  an  weitere  Services  z.B.  Azure  ML   ~  Skalierbarkeit:  Überlegungen  /  KonfiguraBon  von  Beginn  an  nöBg   -­‐  leider  (noch?)  keine  User  Defined  FuncBons  (abgesehen  von  Azure  ML)  

Slide 25

Slide 25 text

Kontakt     Hans-­‐Peter  Grahsl   [email protected]   +43  650  217  17  04        @hpgrahsl      hsps://www.xing.com/profile/HansPeter_Grahsl      hans_peter_g