Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kafka on HDInsight

Kafka on HDInsight

Mein Vortrag am Global Azure Bootcamp 2017 in Linz.

Apache Kafka ist eine verteilte, skalierbare und hochverfügbare Messaging Platform. Mit Kafka kann ein bereites Spektrum von Anwendungsfällen realisiert werden, weshalb es sich über die letzten Jahre als Herzstück vieler unternehmensweiter Datenarchitekturen etablieren konnte. Der Einsatz reicht von einfachen Message Queues bis hin zu echtzeitnahen Stream Processing Lösungen, ohne dabei auf andere schwergewichtige Frameworks od. Technologien des BigData Ökosystem-Dschungels angewiesen zu sein.

Nach einer kurzen Einführung zu den wichtigsten Komponenten von Kafka zeigt die Session in einem Mix aus Vortrag und Demos, wie einfach es ist, Kafka Anwendungen zu entwickeln und diese mit Kafka HDInsight in Azure bereitzustellen. Im Zuge dessen werden mögliche Anknüpfungspunkte zu anderen Azure Services diskutiert. Ebenso erfolgt eine Abgrenzung zu alternativen Umsetzungsmöglichkeiten von Datenstromanalysen in Azure.

https://coding-club-linz.github.io/global-azure-bootcamp-2017/

Sample Code => https://github.com/hpgrahsl/kafka-azure-gab2017

Hans-Peter Grahsl

April 22, 2017
Tweet

More Decks by Hans-Peter Grahsl

Other Decks in Programming

Transcript

  1. Willkommen  beim  #GAB2017!        Ka6a™  HDInsight    

      Hans-­‐Peter  Grahsl     Entwickler  -­‐  Trainer  -­‐  Berater  |  Netconomy  |  FH  CAMPUS  02     @hpgrahsl   22.  April  2017  
  2. Inhalte   •  HDInsight    -­‐  Cluster  Setup  &  KonfiguraJon

      •  Apache  KaKa    -­‐  Konzepte  &  Grundlagen    -­‐  Client  APIs   •  KaKa  @  Azure      -­‐  Cloud  Live  Demos    -­‐  AlternaJven?  à  Confluent  PlaSorm  
  3. Azure  HDInsight   Open-­‐Source  Big  Data  Services   -­‐  ursprünglich

     Apache  Hadoop  (nur  Windows)   -­‐  miXlerweile  umfassendes  Big  Data  Tech  Stack  Angebot  (auch  Linux)        
  4. Azure  HDInsight   Branchenführende  *-­‐as-­‐a-­‐Service  Angebote   (unabhängig  von  Cluster

     Type  und  OS)     -­‐  garanJerte  Verfügbarkeit  (99,9%)  inkl.  24/7  Support   -­‐  Cluster  Provisionierung  auf  Knopfdruck  in  Minuten   -­‐  HA  Node  KonfiguraJonen  &  Geo-­‐ReplikaJon  von  Daten   -­‐  HIPAA,  PCI/DSS,  SOC  &  ISO  Compliance        
  5. Warum  Messaging  &  Stream  Processing  in  der  Cloud?    

    Der  Großteil  an  Daten   ist  nicht  mehr  lokal…   Eventbasierte  Daten   befinden  sich   oimals  bereits  in   der  Cloud   Eventbasierte   Daten  sind  immer   häufiger  global   verteilt   Reduced  TCO   ElasJc  scale-­‐out   Service,     not  infrastructure   “Bring  the  processing  to  the  data,     not  the  data  to  the  processing!”  
  6. Ka6a™  à  „central  nervous  system  for  data“  -­‐-­‐  Jay  Kreps

      “…everything  that  happens  in  a  company—every   customer  interacJon,  every  API  request,  every  database  change—can   be  represented  as  a  real-­‐Gme  stream  that  anything   else  can  tap  into,  process,  or  react  to.”  
  7. Apache  Ka6a™           “…is  used  for

     building  real-­‐Gme   data  pipelines  and  streaming   apps.  It  is  horizontally  scalable,   fault-­‐tolerant,  wicked  fast,  and   runs  in  producJon  in  thousands  of   companies.”  
  8. “I  thought  that  since  Ka6a  was  a  system  opGmized  for

     wriGng  using  a  writer’s  name   would  make  sense.  I  had  taken  a  lot  of  lit  classes  in  college  and  liked  Franz  Ka6a.  Plus   the  name  sounded  cool  for  an  open  source  project…  So  basically  there  is  not  much  of  a   relaGonship.”                  —Jay  Kreps   Warum/Woher  der  Name  -­‐>  Ka6a  <-­‐  ?  
  9. Kerneigenschaden   -­‐  flexible  und  skalierbare  Publish  /  Subscribe  Szenarien

      -­‐  fehlertolerante  Speicherung  von  Datenströmen   -­‐  echtzeitnahe  Verarbeitung  von  Events     für...   -­‐  zuverlässigen  systemübergreifenden  Datenaustausch   -­‐  leichtgewichJge  performante  Datenstromanalysen         Apache  Ka6a™  
  10. Apache  Ka6a™   Consumer   KaKa  Brokers   Zookeeper  

    Broker  &  Topic   Metadata   Message  Out   Producer   Message  In   Consumer  Metadata   &  ParJJon  Offsets  
  11. Apache  Ka6a™   Ka6a            

       Logs     -­‐  zentrale  Datenstruktur  ist  ein  append-­‐only  Log   -­‐  jede  Message  hat  eindeuJge  sequenJelle  Nummer   -­‐  Messages  links  „sind  älter“  als  jene  rechts       0     1   2   3   4   5   6   7   8   9   10   …   älter   neuer   nächste   Message   erste   Message  
  12. Apache  Ka6a™   Topics   -­‐  Messages  werden  in  Topics

     kategorisiert   -­‐  Topics  können  parJJoniert  werden       0     1   2   3   4   5   6   7   8   9   …   0     1   2   3   4   5   6   …   0     1   2   3   4   5   6   7   8   …   ParJJon  0   ParJJon  1   ParJJon  2   Topic  “Azure_Bootcamp”  
  13. Apache  Ka6a™   4  Core  Client  APIs:      

    PRODUCER         CONNECT     CONSUMER     STREAM     C   ?    …   ≈≈≈   ≈≈               ?    …   P    …  ?  
  14. Apache  Ka6a™   Producers   -­‐  erzeugen  und  schreiben  Messages

     in  Topics   -­‐  ParJJonierungsstrategie  entscheidet  über  ZielparJJon   -­‐  Ordnung  /  Reihenfolge  innerhalb  ParJJon  garanJert     0     1   2   3   4   5   6   7   8   9   10   0     1   2   3   4   5   6   7   0     1   2   3   4   5   6   7   8   9   ParJJon  0   ParJJon  1   ParJJon  2   Topic  “Azure_Bootcamp”   Producer   Writes   Messages  
  15. Consumers   -­‐  Lesen  und  verarbeiten  Messages  aus  Topics  

      -­‐  können  1..N  Topics  abonnieren   -­‐  Verarbeitung  innerhalb  ParJJon  in  Einfügereihenfolge   -­‐  persisJeren  Offsets  zuletzt  konsumierter  Messages     Apache  Ka6a™   0     1   2   3   4   5   6   7   8   9   10   0     1   2   3   4   5   6   7   0     1   2   3   4   5   6   7   8   9   ParJJon  0   ParJJon  1   ParJJon  2   Topic  “Azure_Bootcamp”   Consumer     Consumer               Consumer     Consumer   Group  
  16. Apache  Ka6a™   Demo  Producer  /  Consumer  API    

     Java  Producer          Console  Consumer        
  17. Apache  Ka6a™   Connect  API     -­‐  Daten  von

     Quellsystem  à  nach  Ka6a  bringen       Ka6a  Cluster   Connect  API   Source   Connectors   Sources  
  18. Apache  Ka6a™   Connect  API     -­‐  Daten  aus

     Ka6a  à  ins  Zielsystem  bringen       Ka6a  Cluster   Sinks   Connect  API   Sink   Connectors  
  19. Apache  Ka6a™   Connect  API   -­‐  Quell-­‐  und  Zielsysteme

     über  KaKa  verbinden   -­‐  Ka6a  als  zentrale  Daten  Pipeline   -­‐  zuverlässiger  &  skalierbarer  Datenstromabgleich       Ka6a  Cluster   Sources   Sinks   Connect  API   Source   Connectors   Sink   Connectors  
  20. Apache  Ka6a™   Connect  API  CharakterisGken     -­‐  Aktualität

      -­‐  Zuverlässigkeit   -­‐  Durchsatz   -­‐  Formatunabhängigkeit   -­‐  Transformierbarkeit   -­‐  Sicherheit   -­‐  Fehlertoleranz     KEIN  CODE             „Konfigurieren  stau  Programmieren“    
  21. Apache  Ka6a™   Connect  API  seit  Version  0.9+   -­‐ 

    bereits  viele  offizielle  Connectoren  verfügbar   -­‐  einige  weitere  aus  der  Open  Source  Community   -­‐  siehe  Confluent  Website  hXps://www.confluent.io/product/connectors/     Bsp.  aus  Community   MongoDB  Sink  Connector   mein  privates  Open  Source  Project   hXps://github.com/hpgrahsl/kaKa-­‐connect-­‐mongodb    
  22. Apache  Ka6a™   Stream  API  seit  Version  0.10+   -­‐ 

    Datenstromverarbeitung  direkt  mit  KaKa  Library     -­‐  leichtgewichJge  Client  ApplikaJonen   -­‐  ohne  externe,  dedizierte  Streaming  Frameworks   (Storm,  Spark,  Flink,  Samza,  ...)   -­‐  Processor  API  &  Stream  DSL     ≈≈≈   ≈≈               ?    …   …    ?  
  23. Apache  Ka6a™   Datenstrom  Eigenschaden:     -­‐  unbounded  

    -­‐  ordered   -­‐  immutable   -­‐  replayable   weitere  Aspekte  à  Zeit  und  Zustand      
  24. Apache  Ka6a™   Zeit  bei  Datenstromverarbeitung  ?   -­‐  Event

     Time     -­‐  Log-­‐Append  Time     -­‐  Processing  Time     hXps://www.flickr.com/photos/smemon/5281453002/    
  25. Apache  Ka6a™   Zustand  bei  Datenstromverarbeitung  ?   -­‐  stateless

     (z.B.  nur  map  /  filter)   -­‐  local  state  (z.B.  groupBy  &  AggregaJonen  innerhalb  ParJJon)   -­‐  „shared  state“  (z.B.  global  Top  N  parJJonsübergreifend)   stateful:   -­‐  local  (internal)    à  State  Store  RocksDB  +  Ka6a  Topic   -­‐  remote  (external)  à  zumeist  *DB  (NoSQL  od.  RDBMS)    
  26. Apache  Ka6a™   Demo  Stream  API      Producer  

             Streaming  App                  Windowed                  Aggregates         ≈≈≈   ≈≈≈                
  27. Apache  Ka6a™   Demo  Stream  API      Producer  

             Streaming  App                  TopN                  #hashtags,  emojis,...         ≈≈≈   ≈≈≈                                      
  28. Bsp.  für  Anwendungsgebiete     -­‐  General  Purpose  Messaging  

    -­‐  Clickstream  Tracking   -­‐  Central  IoT  DataHub  for   -­‐  OperaJonal  Metrics  Monitoring     -­‐  Log  AggregaJon   -­‐  Stream  Processing   -­‐  Microservices  &  Event  Sourcing   -­‐  External  Commit  Log     Apache  Ka6a™