warp10: collect, store and manipulate sensor data - breizhcamp - 2016 03-24

85
@FinistSeb @LostInBrittany #BzhCmp #Warp10 Warp 10: Collect, store and manipulate sensor data Horacio Gonzalez Sébastien Lambour

Upload: horacio-gonzalez

Post on 09-Apr-2017

200 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Warp 10: Collect, store and manipulate sensor data

Horacio Gonzalez Sébastien Lambour

Page 2: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Horacio Gonzalez

@LostInBrittany

Cityzen Data

Spaniard lost in Brittany, developer, dreamer and all-around geek

Page 3: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Sébastien Lambour

@FinistSeb

Cityzen Data

Runner, 2 Kids, Geek, Handyman, Polyglot JVM Developer

Page 4: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Warp 10

Page 5: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

IntroductionGeo-Time SeriesTM

Image: Spacetime distorsions

Page 6: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Time Series

Image: Mike Bostock

Page 7: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Time series storage and analysis

Image: Hamza Fessi and ABC Bourse

Not suited for your vanilla SQL RDBMS

One simple example: moving averages...

Page 8: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Geo-Time SeriesTM

Image: AIS Vessel Tracking

Page 9: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Geo-Time Series

Page 10: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Geo-Time Series and the IoT

Image: LinkedIn

Page 11: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

IoT means talking thingHow fast are they talking?

Page 12: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Internet of very introverted Things

Long range transmissions

Page 13: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Internet of introverted Things

Personal Area Network

Page 14: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Internet of shy Things

Local Area NetworkCellular Networks

Page 15: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Lots of shy thing generate a huge lot of data

Image: Universal Studios

Page 16: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Internet of chatty Things

10 000 Hz

670 000 sensors

20 000 metrics

per second

Page 17: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Internet of garrulous Things

Image: Google

Millions of metrics per second

Page 18: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Warp 10 : A software platform for IoT

Warp 10 is a software platform that● Ingests and stores data● Manipulates and analyzes data● Is dedicated to data from sensors, meters, IoT and any real or

virtual probe

Page 19: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Warp 10 General Synoptic

Stockage Architecture

Language, Functions, Algorithms

Application access

VizualisationRealTime

Page 20: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

#collectHow do you get these metrics?

Image: Games Radar

Page 21: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Using our own Sensision agent

Page 22: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Using our own Sensision agent

With queue forwarder

Page 23: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Using plugins for other collecting systems

Page 24: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Or simply pushing data directly

Page 25: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Choosing an input format

Page 26: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

XML? JSON?

139 bytes 108 bytes

Page 27: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Warp 10 GTS Input Format

57 bytes

But size isn't the most important reason

parsing time is way more important

XML or even JSON parsing is slow and costlyWarp 10 GTS input format isn't

Page 28: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

timestamp (us by default)

latitude:longitude (WGS84)

elevation (millimeters)

classname*

labels (key=value)

value* (long, double, boolean or string)* mandatory fields

Warp 10 GTS Input Format

Page 29: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

#storeFrom tiny to huge

Image: Games Radar

Page 30: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Warp 10 on Raspberry Pi B+

1 000 datapoints per second

Page 31: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Warp 10 on Raspberry Pi 2 B

3 000 datapoints per second

Page 32: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Warp 10 on a modern server

120 000 datapoints per second

Page 33: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Warp 10 on a cluster

3 millions of datapoints per second(our current record on input traffic)

Page 34: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

#analyseFrom tiny to huge

Image: Amazon

Page 35: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Many time-series solutions

TSAR

Page 36: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

But they are only stores...

Fetching data is only the tip of the iceberg

Page 37: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Analysing the data

High level analysis must be done elsewhere

Page 38: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Algorithms are resource hungry

Page 39: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Your computer is not a datacenter

Page 40: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Manipulating GTS

To be scalable, analysis must be done in Warp 10 platform, not in user's computer

Page 41: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

A true GTS analysis toolbox○ Hundreds of functions○ Manipulation frameworks○ Analysis workflow

Manipulating GTS

Page 42: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

GTS manipulation

Why not a simple REST API?● One endpoint by function?● How to chain a workflow analysis?

REST API not suitable for complex manipulations

Page 43: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

GTS manipulation

Why not a SQL dialect?● How do you do a simple moving average in SQL?● How do you geo-time fencing in SQL?

SQL is not adapted to (G)TS analysis!

Page 44: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

GTS manipulation language

Our solution: a GTS manipulation language

WarpScript

Page 45: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

A stack based language

Page 46: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

WarpScript

Non-compiled Optimized functions, fast execution

Page 47: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Basic operations

Page 48: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Five frameworks

●●●●●

Page 49: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

More than 500 functions

Page 50: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Time series functions

Page 51: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Time series functions

Page 52: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Geo-Time Series functions

Geo mapping (WKT)

Horizontal & vertical speed

Horizontal & vertical distance

Haversine...

Page 53: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Quantum IDE

Page 54: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Enough teasing...

Page 55: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Fuel prices data

16 297 448 metrics

11 379 fuel stations

42 885 Geo Time Series

Page 56: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Basic analysis

Average diesel fuel prices in France since 2007

Image: LEGO Ideas

Page 57: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

First Fetch Data (SQL vs WarpScript )

Page 58: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

FETCH gives us a GTS list

Page 59: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

FETCH gives us a GTS list

Timestamp (microseconds since epoch)

Page 60: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

FETCH gives us a GTS list

Location (latitude, longitude)

Page 61: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

FETCH gives us a GTS list

Value

Page 62: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Calculate the average

Using Groovy:

Page 63: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Calculate the average with WarpScript

1- Calculate the mean price by station

Page 64: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Calculate the average with WarpScript

BUCKETIZE framework

Put the data of a GTS into regularly spaced buckets

Page 65: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Calculate the average with WarpScript

Page 66: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Calculate the average with WarpScript

2- Reduce to get the global average

Page 67: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Calculate the average with WarpScript

REDUCE framework

Apply a function on a set of GTS tick by tick

Page 68: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Too verbose? Write it differently

Page 69: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Even more concise

Page 70: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Basic analysisMean of the last available

diesel fuel prices in France

Image: LEGO Ideas

Page 71: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Fetching Data (SQL vs WarpScript )

Page 72: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

FETCH gives us a GTS list

Page 73: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Mean of those last prices

align ticks with BUCKETIZE framework

compute the average with REDUCE

Page 74: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Geo-time analysis

Find the cheapest fuel station near here

48.115434, -1.636877

Page 75: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

WKT: Well-known text geometry

Page 76: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

WKT in WarpScript

Page 77: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Geo-filtering points of GTS

Page 78: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Geo-filtering points of GTS

MAPPER framework

Apply a function on values of a GTS that fall into a sliding window

Page 79: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

The stations near my position

Page 80: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

There can only be one

Page 81: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

And this is only the surfacePossibilities are endless

Page 82: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Think differently

Geo-Time Series are everywhere

Page 83: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Warp 10 platform and tools

Page 84: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Everything is on GitHub

https://github.com/cityzendata/

Page 85: Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24

@FinistSeb @LostInBrittany#BzhCmp #Warp10

Thank you !