untersuchung von echtzeitdatenströmen unterschiedlicher
TRANSCRIPT
© WZL/Fraunhofer IPT
Untersuchung von
Echtzeitdatenströmen
unterschiedlicher Mikrocontroller,
gekoppelt mit Sensoren, aus einem
Speed-Layer in einer Lambda-
Architektur
Seminararbeit
Jessica Wiezorek
1.Prüfer: Prof. Dr. rer. nat. Wilhelm Hanrath
2.Prüfer: Henric Breuer
Seite 2© WZL/Fraunhofer IPT
Ausblick7
Darstellung6
Apache Kafka5
Lambda-Architektur als Big Data Architektur4
Aufbau des Sensornetzwerks3
Message Queue Telemetry Transport Protokoll2
Problemstellung1
Agenda
Seite 3© WZL/Fraunhofer IPT
Problemstellung
Name=10-DoF
Time=24355578
a_x=-0,08
a_y=9,96
a_z=0,47
m_x=-32,91
m_y=-42,09
m_z=32,55
g_x=0,04
g_y=0,07
g_z=0,00
temp=26,30
Immer mehr Datensätze pro Sekunde
Daten
– empfangen
– verarbeiten
– darstellen
– analysieren
Seite 4© WZL/Fraunhofer IPT
Aufbau von MQTT
MQTT Broker
Publisher
Publisher
Publisher
Publisher
Subsriber
Subsriber
Subsriber
Subsriber
Messages Messages
Verbindung über TCP
Publisher/Subscriber Pattern
Nachrichten Verwaltung in Topics
• „Senseering-MatS/Ten_DoF“
• „Senseering-MatS/Ultrasonic_top_left“
Seite 5© WZL/Fraunhofer IPT
MQTT Broker
Nachrichten Übertragung mit MQTT
ClientMessage
MessageMessage
Verschiedene Quality of Service
Einfachste Ausreichend
Seite 6© WZL/Fraunhofer IPT
Verbindung per WLAN bzw. LAN
Verschiedene Sensoren senden Nachrichten:
Schematischer Aufbau des Netzwerks
Sensor
Daten
Raspberry Pi als
MQTT-BrokerPublish Subscribe PublishCluster
Python Skript als
Bridge
Name=Temperatur
Time=20765336
Temp=24,80
Name=10-DoF
Time=24355578
a_x=-0,08
a_y=9,96
a_z=0,47
m_x=-32,91
m_y=-42,09
m_z=32,55
temp=26,30
Seite 7© WZL/Fraunhofer IPT
Raspberry Pi
10/100 LAN
Anschluss
Quadcore Prozessor Broadcom
BCM 2837 ARMv8 Architektur
64 Bit – 1,2 GHz
HDMI mit CEC
und 1080p
Micro USB
Port
40 polige GPIO
Anschlussleiste4 x USB
2.0
BCM43143 WiFi - WLAN
(2,4GHz) und Bluetooth Low
Energy (BLE) on Board
1024 MB RAM und integriertem
VRAM Arbeitsspeicher
Seite 8© WZL/Fraunhofer IPT
Mikrocontroller im Sensornetz
LEDs
Platine mit
Sensoren
2 Buttons
Micro
USB Port Mikrofon
Bosch XDK
Micro
USB Port
Arduino MKR1000
GPIO
Anschlussleiste
WiFi-Modul
Seite 9© WZL/Fraunhofer IPT
Big-Data-Architekturen
Hohe Nachrichten Frequenz
Verzögerung bei Speicherung und Darstellung
Verlust von Daten
Aufteilung in Schichten
Seite 10© WZL/Fraunhofer IPT
Aufbau der Lambda-Architektur
Realtime
ViewRealtime
ViewRealtime
View
Batch-Layer
Speed-LayerServing-Layer
Master-
Datenset
Precom-
putation
Realtime
View
Streaming
plattform
Sensor
Daten
Batch
ViewBatch
ViewBatch
ViewBatch
View
Seite 11© WZL/Fraunhofer IPT
Batch-Layer mit Hadoop Distributed File System
Master Knoten
Daten
Knoten
Daten
Knoten
Daten
Knoten
Daten
Knoten
Client
Anfrage an Hadoop
Zuteilung von Daten Knoten
Datenaustausch
Verteiltes Daten System
Seite 12© WZL/Fraunhofer IPT
Speed-Layer
Echtzeit Darstellung von Daten
z.B. mit Apache Strom
Speed-Layer
Seite 13© WZL/Fraunhofer IPT
Serving-Layer
Bearbeitung von Anfragen
Behält die Anfragen und aktualisiert sie
z.B. mit Apache Cassandra
Serving-Layer
Seite 14© WZL/Fraunhofer IPT
Aufbau Apache Kafka
Verteilte Streaming Plattform
Implementierung auf mehreren Servern möglich
Koordinierung von Kafka durch Zookeeper
Publisher/Subscriber Pattern bzw.
Producer/Consumer Pattern
Nachrichten Verwaltung in Topics
Unterteilung von Topics in Partitionen
Broker
Zentrale Verbindung
Seite 15© WZL/Fraunhofer IPT
Software-Schnittstellen zu Apache Kafka
AppApp
App
Consumer
Daten-
bankDaten-
bank
App
Apache Kafka
Cluster
App
Producer
App App App
AppApp
AppApp
Stream
ProcessingConnector Daten-
bankDaten-
bank
Seite 16© WZL/Fraunhofer IPT
Versuchsaufbau
subscribeKafka-Cluster
Raspberry PiRaspberry Pi
Raspberry Pi
Raspberry PiRaspberry Pi
GUI
Seite 17© WZL/Fraunhofer IPT
Aufbau einer graphischen Darstellung von Messdaten
Verbindung zwischen dem Kafka-Cluster und der GUI
Implementierung der GUI selbst
Kafka-Cluster KafkaConsumer
GUI
Daten-
DarstellungDaten-
DarstellungDaten-
DarstellungDaten-
Darstellung
Seite 18© WZL/Fraunhofer IPT
Schnittstelle zwischen Python und Kafka
Open Source
Dokumentation
kafka-python
KafkaConsumer
– Verbindung über IP Adressen
– Subscribe and Unsubscribe Topics
– Iterator
Producer
Seite 19© WZL/Fraunhofer IPT
Consumer mit kafka-python
Consumer
Consumer
Kafka-Cluster
TopicConsumer
Consumer
Topic
Topic
Topic
Ein Consumer pro Topic
Kafka-Cluster
Topic
ConsumerTopic
Topic
Topic
Ein Consumer für alle Topics
Seite 20© WZL/Fraunhofer IPT
Qt
C++ Klassenbibliotheken
Plattformübergreifend
Programmierung von grafischen Oberflächen
Anbindung zu Python z.B. PyQt
PyQt nutzt die C++ Klassen
Für Benutzeroberfläche
Seite 21© WZL/Fraunhofer IPT
Ausblick
Python Bibliothek mit besserer Performance
Webbasierte Anwendung
Streaming-Layer
Serving-Layer
Streaming
plattformSensor
Daten
Real-Time
ViewReal-Time
ViewReal-Time
ViewReal-Time
View
Stream
Process
Kappa-Architektur