Save 37% off PRO during our Black Friday Sale! »

Stream Processing mit Azure

Stream Processing mit Azure

Mein Vortrag am Global Azure Bootcamp 2016 in Linz.

Im Big Data Zeitalter stellt neben der bloßen Datenmenge vor allem die Geschwindigkeit von Datenflüssen eine große Herausforderung dar. Anwendungsfälle wie beispielsweise die Betrugsanalyse bei Online-Transaktionen oder die Sensordatenanalyse im Internet-Of-Things Kontext erfordern heutzutage eine nahezu Echtzeit-Verarbeitung der damit verbundenen Datenströme. In einem Mix aus Vortrag und Demos gibt diese Session anhand von unterschiedlichen Stream Processing Lösungen einen Überblick, welche Möglichkeiten Microsoft Azure im Bereich der Datenstromanalyse derzeit bietet. Der Fokus liegt dabei auf Azure Stream Analytics.

https://globalazurebootcampaustria2016.sched.com/event/66pa/stream-processing-mit-azure

Sample Code => https://github.com/hpgrahsl/gab2016streamanalytics

744f1c2c6cbea2ff5104b0ac512936bd?s=128

Hans-Peter Grahsl

April 16, 2016
Tweet

Transcript

  1. Willkommen  beim  #GAB2016!   Stream  Processing   mit  Azure  

      Hans-­‐Peter  Grahsl     Entwickler  &  Berater  |  Netconomy  |  FH  CAMPUS  02     Twi@er:  @hpgrahsl   16.  April  2016  
  2. Inhalte       •  MoBvaBon  /  Einführung   • 

    MicrosoI‘s  Azure  Stream  AnalyGcs  +  Demo   •  Fragen  &  Zusammenfassung  
  3. 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!”  
  4. 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  
  5. 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  
  6. 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        
  7. 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        
  8. Azure  Stream  AnalyGcs   Skalierungskonzept   Bsp.  3  Par==ons*  

                Step Result  1   Step Result  2   Step Result  3   Event  Hub   *ParBBon  ==  geordnete  Sequenz  von  Events  
  9. 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/        
  10. 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        
  11. Azure  Stream  AnalyGcs  

  12. Azure  Stream  AnalyGcs   Inputquellen:          

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

    -­‐  Azure  SQL  DB,  BlobStorage,  EventHub,   -­‐  Table  Storage,  Service  Bus  (Queues  &  Topics),   -­‐  DocumentDB,  Power  BI  
  14. Demo-­‐Anwendung   =>  Tracking  Emojis  in  public  Tweets   =>

     984   =>  773   …  
  15. Azure  Stream  AnalyGcs   Abfrage  Editor        

     
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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/    
  21. 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    
  22. Azure  Stream  AnalyGcs  Demo   =>  Tracking  Emojis  in  public

     Tweets   =>  984   =>  773   …   Azure  SQL  DB   Azure    Table   Storage   Azure  Blob  Storage     Events  ==  Tweets  
  23. Azure  Stream  AnalyGcs  Demo   =>  984   =>  773

      …  
  24. 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)  
  25. Kontakt     Hans-­‐Peter  Grahsl   hanspeter@grahsl.at   +43  650

     217  17  04        @hpgrahsl      hsps://www.xing.com/profile/HansPeter_Grahsl      hans_peter_g