SlideShare a Scribd company logo
1 of 26
Processing and Retrieval
of Geotagged
Unmanned Aerial
System Telemetry
Kristopher Kane
2 © Hortonworks Inc. 2011 – 2016. All Rights Reserved
Who am I?
Kristopher Kane – Systems Architect, Hortonworks
What is the purpose of this topic?
 Commercial and military unmanned aerial systems (UAS) require that the decision
making data points be accessible remote
 They produce a lot of telemetry and decisions are made based on the timeliness and
accuracy of that telemetry
 Some UAS carry additional payloads for full motion video and electro optical sensors
 We will cover creating an application that covers this ingesting and searching on UAS
telemetry
3 © Hortonworks Inc. 2011 – 2016. All Rights Reserved
Example Telemetry Types
 Military grade: Key-Length-Value (KLV) – embedded telemetry as a elementary stream
PID inside an MPEG 2 transport stream - See MISB for the open specification
– interesting data points like center of frame lat/lon and video angle – thousands of keys
 Hobby grade 1: MAVLINK – APM (ArduPilot Mega) telemetry that covers battery voltage,
airspeed, temperature, pitch, roll, yaw angles and acceleration, GPS data, etc
– open source
– hundreds of keys
 Hobby grade 2: FrSky receiver telemetry with a subset of what you get from MAVLINK
– closed source but has been reversed engineered
– a few keys
4 © Hortonworks Inc. 2011 – 2016. All Rights Reserved
Telemetry Velocity – What is the problem to be solved?
 Hobbyist level small UAS
– open source hardware, software and protocol spec – ArduPilot Mega
– 150 sensor points
– 3 sets per second equals 450 points per aircraft/sec
– Yesterday, FlightAware recorded 35,662,229 location positions/hour from transponder ground
stations but this is only includes a few sensor points
 Current manned aircraft
– At 0500 local today (28JUN2016), FlightAware was tracking 9,804 aircraft in the air
4,411,800 data points per second
29,412 entries per second
Ingest Architecture
6 © Hortonworks Inc. 2011 – 2016. All Rights Reserved
Ingest Architecture
Ground Control Station
915 MHZ - Serial
Apache Knox
Undertow HTTP API
4G -TCP HTTPS
KafkaStorm
TCP HTTP
possible to embed this in Knox
custom topology entry
Other Consumers
JSON
HBase
spatial missions
Solr
telemetry
Aircraft
7 © Hortonworks Inc. 2011 – 2016. All Rights Reserved
Ingest Architecture - Spatial based load distribution
* Alerts like congested airspace will happen here
 Partition based on geohash prefix as a simple dimension for distribution
 Increase prefix characters as load increases. This works for:
– Kafka broker partitions
– Storm bolts - a couple grouping options here
– Pre-split HBase regions
8 © Hortonworks Inc. 2011 – 2016. All Rights Reserved
Geohash
 Created for a URL shortening service in 2008
 Encodes latitude and longitude into a string – two dimensions into one which is
important for HBase key scanning
 My house is at decimal degrees: 35.45380534178051,-78.8184043765068
 geohash: dnrcwqjk
 More characters = more precision
 Geohash doesn’t follow the base-32 RFC - read about that and don’t lose sleep like I did
9 © Hortonworks Inc. 2011 – 2016. All Rights Reserved
Geohash
http://geohash.gofreerange.com/
10 © Hortonworks Inc. 2011 – 2016. All Rights Reserved
Geohash Decoding
 My house (area) geohash: dnrc
Using base-32:
d (base-32) = 12 (base-10) = 01100 (binary)
n = 20 = 10100
r = 23 = 10111
c = 11 = 01011
Binary representation = 01100-10100-10111-01011
From the geohash Wikipedia article
11 © Hortonworks Inc. 2011 – 2016. All Rights Reserved
Geohash Decoding – House Latitude
01100-10100-10111-01011
Bits alternate longitude (even) and latitude (odd) respectively, left to right.
Latitude = 1011001001 bit min mid max latitude
1 -90.000 0.000 90.000 45.000
0 0.000 45.000 90.000 22.500
1 0.000 22.500 45.000 33.750
1 22.500 33.750 45.000 39.375
0 33.750 39.375 45.000 36.562
0 33.750 36.562 39.375 35.156
1 33.750 35.156 36.562 35.859
0 35.156 35.859 36.562 35.508
0 35.156 35.508 35.859 35.332
1 35.156 35.332 35.508 35.420
12 © Hortonworks Inc. 2011 – 2016. All Rights Reserved
Why Apache Knox?
 Let Knox handle authentication - It will provide the ‘user.name’ query parameter appended to your
parameter set
 KNOX-670 allows for the hosting of simple web applications
 Custom APIs can be added to your topology with only a few lines of XML for simple cases:
<rules>
<rule dir="IN" name="DRONE-TELEMETRY/drone-telemetry/inbound" pattern="*://*:*/**/drone-telemetry/{path=**}?{**}">
<rewrite template="{$serviceUrl[DRONE-TELEMETRY]}/{path=**}?{**}"/>
</rule>
</rules>
<service role="DRONE-TELEMETRY" name="DRONE-TELEMETRY" version="0.0.1">
<routes>
<route path="/drone-telemetry/**"/>
</routes>
</service>
data/services/drone-telemetry/0.0.1/service.xml
data/services/drone-telemetry/0.0.1/rewrite.xml
Egress Architecture
14 © Hortonworks Inc. 2011 – 2016. All Rights Reserved
Egress Architecture - User Query Access
Apache Knox
Undertow
HTTP API
TCP HTTP
User – mobile app or
browser based
HTTPS – Twitter Oauth/LDAP
HBase
spatial missions
Solr
telemetry
15 © Hortonworks Inc. 2011 – 2016. All Rights Reserved
Well Known Text Format
 Both the Solr and HBase examples following use the Well Known Text format to specify
polygons
 This standard requires the points to be in counter clockwise order
 Topologically closed - make the last point the first point
16 © Hortonworks Inc. 2011 – 2016. All Rights Reserved
HBase Queries – General Idea
 Encode two dimensions (latitude and longitude) into one (geohash)
 Use geohashes as row scanning filters
 Use spatial libraries against the latitude and longitude column families for accurate
calculations like distance and points inside geometries
 Rely on external libraries like JTS or Spatial4j
 You have to implement everything yourself
17 © Hortonworks Inc. 2011 – 2016. All Rights Reserved
HBase Queries
 The Undertow API will accept a bounding box set of lat/lon coordinates from our user’s
map
 The web application will format that in WKT standard for the follow on geometry classes
 Ensure you close the polygon with the start point
POLYGON ((-78.818951 35.4535516, -78.818960 35.4535516, -
78.818951 35.4535560, -78.818941 35.4535512, -78.818951
35.4535516))
Geometry query = reader.read(polygon);
WKT
18 © Hortonworks Inc. 2011 – 2016. All Rights Reserved
HBase Query - Show Me Missions In This Polygon (map)
 Get the polygon centroid and compute minimum boundaries by reversing the geohash
into latitude and longitude
 Scan each geohash as a PrefixFilter to get candidate rows
*This code is from Chapter 8 of HBase In Action – I highly
recommend this book.
GeoHash[] minimumBoundingPrefixes(Geometry query)
...
public Set<QueryMatch> query(Geometry query) throws IOException {
GeoHash[] prefixes = minimumBoundingPrefixes(query);
et<QueryMatch> ret = new HashSet<QueryMatch>();
for (GeoHash prefix : prefixes) {
byte[] p = prefix.toBase32().getBytes();
Scan scan = new Scan(p);
Filter filters = new FilterList(new PrefixFilter(p), new PageFilter(500L));
19 © Hortonworks Inc. 2011 – 2016. All Rights Reserved
HBase Query - Show Me Missions In This Polygon (map)
 Check the returned candidate rows by doing a point lookup of the lat/long CFs against
our map provided polygon
*This code is from Chapter 8 of HBase In Action – I highly
recommend this book.
for (Iterator<QueryMatch> iter = ret.iterator(); iter.hasNext(); ) {
QueryMatch candidate = iter.next();
Coordinate coord = new Coordinate(candidate.lon, candidate.lat);
Geometry point = factory.createPoint(coord);
if (!query.contains(point)) {
iter.remove();
exclusionCount++;
}
}
‘query’ is our polygon from the map.
20 © Hortonworks Inc. 2011 – 2016. All Rights Reserved
Solr Query - Show Me Missions In This Polygon (map)
&fq={!field f=geo_location}
Intersects(POLYGON(
(-80.12878 35.85121,
-80.12878 34.50429,
-77.93152 34.50429,
-77.93152 35.85121,
-80.12878 35.85121)))
=*:*&sort=gcs_time%20desc
35.85121, -80.12878
34.50429, -80.12878 34.50429, -77.93152
35.85121, -77.93152
21 © Hortonworks Inc. 2011 – 2016. All Rights Reserved
Solr Query - Show Me Missions In This Polygon (map)
"response":
….
[ { "mission_name":"kris-02",
"gcs_time":1466388208,
"latitude":35.4534768,
"roll":-0.00834990758449,
"user.name":"tom",
"ingest_date":"2016-06-20T02:03:28Z",
"yaw":0.187950670719,
"pitch":-0.0191747546196,
"longitude":-78.8189403},…]}
35.85121, -80.12878
34.50429, -80.12878 34.50429, -77.93152
35.85121, -77.93152
22 © Hortonworks Inc. 2011 – 2016. All Rights Reserved
Solr Query – Point in Polygon breakdown
&select?fl=mission_name,latitude,longitude,gcs_time
&fq={!field f=geo_location}Intersects(POLYGON((-80.12878 35.85121, -80.12878 34.50429, -
77.93152 34.50429, -77.93152 35.85121, -80.12878 35.85121
&q=*:*
&sort=gcs_time desc
<fieldType name="location_rpt"
class="solr.SpatialRecursivePrefixTreeFieldType"
spatialContextFactory="com.spatial4j.core.context.jts.JtsSpatialContextFactory"
geo="true"
distErrPct="0.025"
maxDistErr="0.001"
distanceUnits="kilometers"/>
Polygons require this.
‘geo_location’ is of this type.
Don’t forget to add JTS libs to Solr server!
23 © Hortonworks Inc. 2011 – 2016. All Rights Reserved
HBase Query – Show me current missions
 The HBase table is created with a TTL and the row key is the mission name
 This table expects high velocity but will only store one row per mission
 Data is ‘UPSERT’
 HBase has a cool new feature that allows for no compaction TTL clean up which is
perfect for this table’s purpose: https://issues.apache.org/jira/browse/HBASE-14468
 Simply row scan the table for the mission list
24 © Hortonworks Inc. 2011 – 2016. All Rights Reserved
Solr Query – Show me current missions
 Provides a count list of the facet fields
select?facet.field=mission_name
&facet=on
&fq=ingest_date:[NOW-1MINUTE TO NOW]
&q=*:*
&rows=0
&start=0
http://localhost:5000/solr/mavlink/select?facet.field=mission_name&facet=on&&fq=ingest_date:[NOW-1MINUTE%20TO%20NOW]&indent=on&q=*:*&rows=0&start=0&wt=json
25 © Hortonworks Inc. 2011 – 2016. All Rights Reserved
Solr Query – Distance and temporal filtering with sorting
fq=ingest_date:
[NOW-10SECOND TO NOW]
AND
{!geofilt pt=35.4,-78.81 sfield=latlon d=20}
&q=*:*
&sort=gcs_time desc
Show me:
Mission data points in the last 10 seconds,
within 20 km of my current position
and sorted by most recent ground station time
Want a unique list of missions?
facet.field=mission_name
&facet=on
&rows=0
http://localhost:5000/solr/mavlink/select?fl=mission_name,ingest_date,latitude,longitude,user.name,pitch,yaw,roll,gcs_time&fq=ingest_date:[NOW-
10SECOND%20TO%20NOW]AND{!geofilt%20pt=37.3,-121.92%20sfield=latlon%20d=20}&indent=on&q=*:*&sort=gcs_time%20desc&wt=json
26 © Hortonworks Inc. 2011 – 2016. All Rights Reserved
Thank You

More Related Content

What's hot

Writing app framworks for hadoop on yarn
Writing app framworks for hadoop on yarnWriting app framworks for hadoop on yarn
Writing app framworks for hadoop on yarnDataWorks Summit
 
Maximilian Michels – Google Cloud Dataflow on Top of Apache Flink
Maximilian Michels – Google Cloud Dataflow on Top of Apache FlinkMaximilian Michels – Google Cloud Dataflow on Top of Apache Flink
Maximilian Michels – Google Cloud Dataflow on Top of Apache FlinkFlink Forward
 
Apache flume by Swapnil Dubey
Apache flume by Swapnil DubeyApache flume by Swapnil Dubey
Apache flume by Swapnil DubeySwapnil Dubey
 
Big Data Berlin v8.0 Stream Processing with Apache Apex
Big Data Berlin v8.0 Stream Processing with Apache Apex Big Data Berlin v8.0 Stream Processing with Apache Apex
Big Data Berlin v8.0 Stream Processing with Apache Apex Apache Apex
 
Taking Spark Streaming to the Next Level with Datasets and DataFrames
Taking Spark Streaming to the Next Level with Datasets and DataFramesTaking Spark Streaming to the Next Level with Datasets and DataFrames
Taking Spark Streaming to the Next Level with Datasets and DataFramesDatabricks
 
So You Want to Write a Connector?
So You Want to Write a Connector? So You Want to Write a Connector?
So You Want to Write a Connector? confluent
 
Keynote: Building and Operating A Serverless Streaming Runtime for Apache Bea...
Keynote: Building and Operating A Serverless Streaming Runtime for Apache Bea...Keynote: Building and Operating A Serverless Streaming Runtime for Apache Bea...
Keynote: Building and Operating A Serverless Streaming Runtime for Apache Bea...Flink Forward
 
Functional Comparison and Performance Evaluation of Streaming Frameworks
Functional Comparison and Performance Evaluation of Streaming FrameworksFunctional Comparison and Performance Evaluation of Streaming Frameworks
Functional Comparison and Performance Evaluation of Streaming FrameworksHuafeng Wang
 
DataTorrent Presentation @ Big Data Application Meetup
DataTorrent Presentation @ Big Data Application MeetupDataTorrent Presentation @ Big Data Application Meetup
DataTorrent Presentation @ Big Data Application MeetupThomas Weise
 
Deep dive into stateful stream processing in structured streaming by Tathaga...
Deep dive into stateful stream processing in structured streaming  by Tathaga...Deep dive into stateful stream processing in structured streaming  by Tathaga...
Deep dive into stateful stream processing in structured streaming by Tathaga...Databricks
 
Introduction to Spark Streaming
Introduction to Spark StreamingIntroduction to Spark Streaming
Introduction to Spark Streamingdatamantra
 
Spark Summit EU talk by Ram Sriharsha and Vlad Feinberg
Spark Summit EU talk by Ram Sriharsha and Vlad FeinbergSpark Summit EU talk by Ram Sriharsha and Vlad Feinberg
Spark Summit EU talk by Ram Sriharsha and Vlad FeinbergSpark Summit
 
Patterns of the Lambda Architecture -- 2015 April -- Hadoop Summit, Europe
Patterns of the Lambda Architecture -- 2015 April -- Hadoop Summit, EuropePatterns of the Lambda Architecture -- 2015 April -- Hadoop Summit, Europe
Patterns of the Lambda Architecture -- 2015 April -- Hadoop Summit, EuropeFlip Kromer
 
Arbitrary Stateful Aggregations using Structured Streaming in Apache Spark
Arbitrary Stateful Aggregations using Structured Streaming in Apache SparkArbitrary Stateful Aggregations using Structured Streaming in Apache Spark
Arbitrary Stateful Aggregations using Structured Streaming in Apache SparkDatabricks
 
Hadoop and Big Data Overview
Hadoop and Big Data OverviewHadoop and Big Data Overview
Hadoop and Big Data OverviewPrabhu Thukkaram
 
Apache Big Data 2016: Next Gen Big Data Analytics with Apache Apex
Apache Big Data 2016: Next Gen Big Data Analytics with Apache ApexApache Big Data 2016: Next Gen Big Data Analytics with Apache Apex
Apache Big Data 2016: Next Gen Big Data Analytics with Apache ApexApache Apex
 
Application Timeline Server - Past, Present and Future
Application Timeline Server - Past, Present and FutureApplication Timeline Server - Past, Present and Future
Application Timeline Server - Past, Present and FutureVARUN SAXENA
 
Apache Apex: Stream Processing Architecture and Applications
Apache Apex: Stream Processing Architecture and ApplicationsApache Apex: Stream Processing Architecture and Applications
Apache Apex: Stream Processing Architecture and ApplicationsThomas Weise
 

What's hot (20)

Writing app framworks for hadoop on yarn
Writing app framworks for hadoop on yarnWriting app framworks for hadoop on yarn
Writing app framworks for hadoop on yarn
 
Maximilian Michels – Google Cloud Dataflow on Top of Apache Flink
Maximilian Michels – Google Cloud Dataflow on Top of Apache FlinkMaximilian Michels – Google Cloud Dataflow on Top of Apache Flink
Maximilian Michels – Google Cloud Dataflow on Top of Apache Flink
 
Apache flume by Swapnil Dubey
Apache flume by Swapnil DubeyApache flume by Swapnil Dubey
Apache flume by Swapnil Dubey
 
Big Data Berlin v8.0 Stream Processing with Apache Apex
Big Data Berlin v8.0 Stream Processing with Apache Apex Big Data Berlin v8.0 Stream Processing with Apache Apex
Big Data Berlin v8.0 Stream Processing with Apache Apex
 
Taking Spark Streaming to the Next Level with Datasets and DataFrames
Taking Spark Streaming to the Next Level with Datasets and DataFramesTaking Spark Streaming to the Next Level with Datasets and DataFrames
Taking Spark Streaming to the Next Level with Datasets and DataFrames
 
So You Want to Write a Connector?
So You Want to Write a Connector? So You Want to Write a Connector?
So You Want to Write a Connector?
 
Keynote: Building and Operating A Serverless Streaming Runtime for Apache Bea...
Keynote: Building and Operating A Serverless Streaming Runtime for Apache Bea...Keynote: Building and Operating A Serverless Streaming Runtime for Apache Bea...
Keynote: Building and Operating A Serverless Streaming Runtime for Apache Bea...
 
Functional Comparison and Performance Evaluation of Streaming Frameworks
Functional Comparison and Performance Evaluation of Streaming FrameworksFunctional Comparison and Performance Evaluation of Streaming Frameworks
Functional Comparison and Performance Evaluation of Streaming Frameworks
 
DataTorrent Presentation @ Big Data Application Meetup
DataTorrent Presentation @ Big Data Application MeetupDataTorrent Presentation @ Big Data Application Meetup
DataTorrent Presentation @ Big Data Application Meetup
 
Deep dive into stateful stream processing in structured streaming by Tathaga...
Deep dive into stateful stream processing in structured streaming  by Tathaga...Deep dive into stateful stream processing in structured streaming  by Tathaga...
Deep dive into stateful stream processing in structured streaming by Tathaga...
 
Introduction to Spark Streaming
Introduction to Spark StreamingIntroduction to Spark Streaming
Introduction to Spark Streaming
 
Spark Summit EU talk by Ram Sriharsha and Vlad Feinberg
Spark Summit EU talk by Ram Sriharsha and Vlad FeinbergSpark Summit EU talk by Ram Sriharsha and Vlad Feinberg
Spark Summit EU talk by Ram Sriharsha and Vlad Feinberg
 
Patterns of the Lambda Architecture -- 2015 April -- Hadoop Summit, Europe
Patterns of the Lambda Architecture -- 2015 April -- Hadoop Summit, EuropePatterns of the Lambda Architecture -- 2015 April -- Hadoop Summit, Europe
Patterns of the Lambda Architecture -- 2015 April -- Hadoop Summit, Europe
 
Arbitrary Stateful Aggregations using Structured Streaming in Apache Spark
Arbitrary Stateful Aggregations using Structured Streaming in Apache SparkArbitrary Stateful Aggregations using Structured Streaming in Apache Spark
Arbitrary Stateful Aggregations using Structured Streaming in Apache Spark
 
Hadoop and Big Data Overview
Hadoop and Big Data OverviewHadoop and Big Data Overview
Hadoop and Big Data Overview
 
Stream Processing made simple with Kafka
Stream Processing made simple with KafkaStream Processing made simple with Kafka
Stream Processing made simple with Kafka
 
Apache Big Data 2016: Next Gen Big Data Analytics with Apache Apex
Apache Big Data 2016: Next Gen Big Data Analytics with Apache ApexApache Big Data 2016: Next Gen Big Data Analytics with Apache Apex
Apache Big Data 2016: Next Gen Big Data Analytics with Apache Apex
 
Application Timeline Server - Past, Present and Future
Application Timeline Server - Past, Present and FutureApplication Timeline Server - Past, Present and Future
Application Timeline Server - Past, Present and Future
 
Apache Apex: Stream Processing Architecture and Applications
Apache Apex: Stream Processing Architecture and ApplicationsApache Apex: Stream Processing Architecture and Applications
Apache Apex: Stream Processing Architecture and Applications
 
Spark streaming: Best Practices
Spark streaming: Best PracticesSpark streaming: Best Practices
Spark streaming: Best Practices
 

Viewers also liked

Viewers also liked (7)

Data Aggregation, Curation and analytics for security and situational awareness
Data Aggregation, Curation and analytics for security and situational awarenessData Aggregation, Curation and analytics for security and situational awareness
Data Aggregation, Curation and analytics for security and situational awareness
 
Scalable OCR with NiFi and Tesseract
Scalable OCR with NiFi and TesseractScalable OCR with NiFi and Tesseract
Scalable OCR with NiFi and Tesseract
 
A Data Lake and a Data Lab to Optimize Operations and Safety within a nuclear...
A Data Lake and a Data Lab to Optimize Operations and Safety within a nuclear...A Data Lake and a Data Lab to Optimize Operations and Safety within a nuclear...
A Data Lake and a Data Lab to Optimize Operations and Safety within a nuclear...
 
Apache Hive ACID Project
Apache Hive ACID ProjectApache Hive ACID Project
Apache Hive ACID Project
 
Hive Does ACID
Hive Does ACIDHive Does ACID
Hive Does ACID
 
Building a Data Analytics PaaS for Smart Cities
Building a Data Analytics PaaS for Smart CitiesBuilding a Data Analytics PaaS for Smart Cities
Building a Data Analytics PaaS for Smart Cities
 
Comparison of Transactional Libraries for HBase
Comparison of Transactional Libraries for HBaseComparison of Transactional Libraries for HBase
Comparison of Transactional Libraries for HBase
 

Similar to Processing and Retrieval of Geotagged UAS Telemetry

byteLAKE's Alveo FPGA Solutions
byteLAKE's Alveo FPGA SolutionsbyteLAKE's Alveo FPGA Solutions
byteLAKE's Alveo FPGA SolutionsbyteLAKE
 
Creating an Uber Clone - Part XII - Transcript.pdf
Creating an Uber Clone - Part XII - Transcript.pdfCreating an Uber Clone - Part XII - Transcript.pdf
Creating an Uber Clone - Part XII - Transcript.pdfShaiAlmog1
 
Zd n2010 son-in_4g_mobile_networks (1)
Zd n2010 son-in_4g_mobile_networks (1)Zd n2010 son-in_4g_mobile_networks (1)
Zd n2010 son-in_4g_mobile_networks (1)derejew
 
SFScon 2020 - Alex Bojeri - BLUESLEMON project autonomous UAS for landslides ...
SFScon 2020 - Alex Bojeri - BLUESLEMON project autonomous UAS for landslides ...SFScon 2020 - Alex Bojeri - BLUESLEMON project autonomous UAS for landslides ...
SFScon 2020 - Alex Bojeri - BLUESLEMON project autonomous UAS for landslides ...South Tyrol Free Software Conference
 
Combitronic: Multi-axis Control with Animatics SmartMotors
Combitronic: Multi-axis Control with Animatics SmartMotorsCombitronic: Multi-axis Control with Animatics SmartMotors
Combitronic: Multi-axis Control with Animatics SmartMotorsDesign World
 
apidays LIVE Australia - Strangling the monolith with a reactive GraphQL gate...
apidays LIVE Australia - Strangling the monolith with a reactive GraphQL gate...apidays LIVE Australia - Strangling the monolith with a reactive GraphQL gate...
apidays LIVE Australia - Strangling the monolith with a reactive GraphQL gate...apidays
 
Stateful PCE and Segment Routing
Stateful PCE and Segment RoutingStateful PCE and Segment Routing
Stateful PCE and Segment RoutingAPNIC
 
2007 Tidc India Profiling
2007 Tidc India Profiling2007 Tidc India Profiling
2007 Tidc India Profilingdanrinkes
 
Ground_System_Design_&_Operation
Ground_System_Design_&_OperationGround_System_Design_&_Operation
Ground_System_Design_&_OperationSteven Gemeny
 
Nesic company profile 042020
Nesic company profile 042020Nesic company profile 042020
Nesic company profile 042020Narongsak Onampai
 
Times Series Feature Extraction Methods of Wearable Signal Data for Deep Lear...
Times Series Feature Extraction Methods of Wearable Signal Data for Deep Lear...Times Series Feature Extraction Methods of Wearable Signal Data for Deep Lear...
Times Series Feature Extraction Methods of Wearable Signal Data for Deep Lear...William Nadolski
 
Intelligent Network Services through Active Flow Manipulation
Intelligent Network Services through Active Flow ManipulationIntelligent Network Services through Active Flow Manipulation
Intelligent Network Services through Active Flow ManipulationTal Lavian Ph.D.
 

Similar to Processing and Retrieval of Geotagged UAS Telemetry (20)

Resume
ResumeResume
Resume
 
byteLAKE's Alveo FPGA Solutions
byteLAKE's Alveo FPGA SolutionsbyteLAKE's Alveo FPGA Solutions
byteLAKE's Alveo FPGA Solutions
 
Creating an Uber Clone - Part XII - Transcript.pdf
Creating an Uber Clone - Part XII - Transcript.pdfCreating an Uber Clone - Part XII - Transcript.pdf
Creating an Uber Clone - Part XII - Transcript.pdf
 
Zd n2010 son-in_4g_mobile_networks (1)
Zd n2010 son-in_4g_mobile_networks (1)Zd n2010 son-in_4g_mobile_networks (1)
Zd n2010 son-in_4g_mobile_networks (1)
 
Timer ppt
Timer pptTimer ppt
Timer ppt
 
SFScon 2020 - Alex Bojeri - BLUESLEMON project autonomous UAS for landslides ...
SFScon 2020 - Alex Bojeri - BLUESLEMON project autonomous UAS for landslides ...SFScon 2020 - Alex Bojeri - BLUESLEMON project autonomous UAS for landslides ...
SFScon 2020 - Alex Bojeri - BLUESLEMON project autonomous UAS for landslides ...
 
Combitronic: Multi-axis Control with Animatics SmartMotors
Combitronic: Multi-axis Control with Animatics SmartMotorsCombitronic: Multi-axis Control with Animatics SmartMotors
Combitronic: Multi-axis Control with Animatics SmartMotors
 
apidays LIVE Australia - Strangling the monolith with a reactive GraphQL gate...
apidays LIVE Australia - Strangling the monolith with a reactive GraphQL gate...apidays LIVE Australia - Strangling the monolith with a reactive GraphQL gate...
apidays LIVE Australia - Strangling the monolith with a reactive GraphQL gate...
 
Stateful PCE and Segment Routing
Stateful PCE and Segment RoutingStateful PCE and Segment Routing
Stateful PCE and Segment Routing
 
SmartPark
SmartParkSmartPark
SmartPark
 
2007 Tidc India Profiling
2007 Tidc India Profiling2007 Tidc India Profiling
2007 Tidc India Profiling
 
Ground_System_Design_&_Operation
Ground_System_Design_&_OperationGround_System_Design_&_Operation
Ground_System_Design_&_Operation
 
Nesic company profile 042020
Nesic company profile 042020Nesic company profile 042020
Nesic company profile 042020
 
What's new in Ambari
What's new in AmbariWhat's new in Ambari
What's new in Ambari
 
Ieee 802.11.n
Ieee 802.11.nIeee 802.11.n
Ieee 802.11.n
 
Ieee 802.11.n
Ieee 802.11.nIeee 802.11.n
Ieee 802.11.n
 
Ieee 802.11.n
Ieee 802.11.nIeee 802.11.n
Ieee 802.11.n
 
NFV Open Source projects
NFV Open Source projectsNFV Open Source projects
NFV Open Source projects
 
Times Series Feature Extraction Methods of Wearable Signal Data for Deep Lear...
Times Series Feature Extraction Methods of Wearable Signal Data for Deep Lear...Times Series Feature Extraction Methods of Wearable Signal Data for Deep Lear...
Times Series Feature Extraction Methods of Wearable Signal Data for Deep Lear...
 
Intelligent Network Services through Active Flow Manipulation
Intelligent Network Services through Active Flow ManipulationIntelligent Network Services through Active Flow Manipulation
Intelligent Network Services through Active Flow Manipulation
 

More from DataWorks Summit/Hadoop Summit

Unleashing the Power of Apache Atlas with Apache Ranger
Unleashing the Power of Apache Atlas with Apache RangerUnleashing the Power of Apache Atlas with Apache Ranger
Unleashing the Power of Apache Atlas with Apache RangerDataWorks Summit/Hadoop Summit
 
Enabling Digital Diagnostics with a Data Science Platform
Enabling Digital Diagnostics with a Data Science PlatformEnabling Digital Diagnostics with a Data Science Platform
Enabling Digital Diagnostics with a Data Science PlatformDataWorks Summit/Hadoop Summit
 
Double Your Hadoop Performance with Hortonworks SmartSense
Double Your Hadoop Performance with Hortonworks SmartSenseDouble Your Hadoop Performance with Hortonworks SmartSense
Double Your Hadoop Performance with Hortonworks SmartSenseDataWorks Summit/Hadoop Summit
 
Building a Large-Scale, Adaptive Recommendation Engine with Apache Flink and ...
Building a Large-Scale, Adaptive Recommendation Engine with Apache Flink and ...Building a Large-Scale, Adaptive Recommendation Engine with Apache Flink and ...
Building a Large-Scale, Adaptive Recommendation Engine with Apache Flink and ...DataWorks Summit/Hadoop Summit
 
Real-Time Anomaly Detection using LSTM Auto-Encoders with Deep Learning4J on ...
Real-Time Anomaly Detection using LSTM Auto-Encoders with Deep Learning4J on ...Real-Time Anomaly Detection using LSTM Auto-Encoders with Deep Learning4J on ...
Real-Time Anomaly Detection using LSTM Auto-Encoders with Deep Learning4J on ...DataWorks Summit/Hadoop Summit
 
Mool - Automated Log Analysis using Data Science and ML
Mool - Automated Log Analysis using Data Science and MLMool - Automated Log Analysis using Data Science and ML
Mool - Automated Log Analysis using Data Science and MLDataWorks Summit/Hadoop Summit
 
The Challenge of Driving Business Value from the Analytics of Things (AOT)
The Challenge of Driving Business Value from the Analytics of Things (AOT)The Challenge of Driving Business Value from the Analytics of Things (AOT)
The Challenge of Driving Business Value from the Analytics of Things (AOT)DataWorks Summit/Hadoop Summit
 
From Regulatory Process Verification to Predictive Maintenance and Beyond wit...
From Regulatory Process Verification to Predictive Maintenance and Beyond wit...From Regulatory Process Verification to Predictive Maintenance and Beyond wit...
From Regulatory Process Verification to Predictive Maintenance and Beyond wit...DataWorks Summit/Hadoop Summit
 

More from DataWorks Summit/Hadoop Summit (20)

Running Apache Spark & Apache Zeppelin in Production
Running Apache Spark & Apache Zeppelin in ProductionRunning Apache Spark & Apache Zeppelin in Production
Running Apache Spark & Apache Zeppelin in Production
 
State of Security: Apache Spark & Apache Zeppelin
State of Security: Apache Spark & Apache ZeppelinState of Security: Apache Spark & Apache Zeppelin
State of Security: Apache Spark & Apache Zeppelin
 
Unleashing the Power of Apache Atlas with Apache Ranger
Unleashing the Power of Apache Atlas with Apache RangerUnleashing the Power of Apache Atlas with Apache Ranger
Unleashing the Power of Apache Atlas with Apache Ranger
 
Enabling Digital Diagnostics with a Data Science Platform
Enabling Digital Diagnostics with a Data Science PlatformEnabling Digital Diagnostics with a Data Science Platform
Enabling Digital Diagnostics with a Data Science Platform
 
Revolutionize Text Mining with Spark and Zeppelin
Revolutionize Text Mining with Spark and ZeppelinRevolutionize Text Mining with Spark and Zeppelin
Revolutionize Text Mining with Spark and Zeppelin
 
Double Your Hadoop Performance with Hortonworks SmartSense
Double Your Hadoop Performance with Hortonworks SmartSenseDouble Your Hadoop Performance with Hortonworks SmartSense
Double Your Hadoop Performance with Hortonworks SmartSense
 
Hadoop Crash Course
Hadoop Crash CourseHadoop Crash Course
Hadoop Crash Course
 
Data Science Crash Course
Data Science Crash CourseData Science Crash Course
Data Science Crash Course
 
Apache Spark Crash Course
Apache Spark Crash CourseApache Spark Crash Course
Apache Spark Crash Course
 
Dataflow with Apache NiFi
Dataflow with Apache NiFiDataflow with Apache NiFi
Dataflow with Apache NiFi
 
Schema Registry - Set you Data Free
Schema Registry - Set you Data FreeSchema Registry - Set you Data Free
Schema Registry - Set you Data Free
 
Building a Large-Scale, Adaptive Recommendation Engine with Apache Flink and ...
Building a Large-Scale, Adaptive Recommendation Engine with Apache Flink and ...Building a Large-Scale, Adaptive Recommendation Engine with Apache Flink and ...
Building a Large-Scale, Adaptive Recommendation Engine with Apache Flink and ...
 
Real-Time Anomaly Detection using LSTM Auto-Encoders with Deep Learning4J on ...
Real-Time Anomaly Detection using LSTM Auto-Encoders with Deep Learning4J on ...Real-Time Anomaly Detection using LSTM Auto-Encoders with Deep Learning4J on ...
Real-Time Anomaly Detection using LSTM Auto-Encoders with Deep Learning4J on ...
 
Mool - Automated Log Analysis using Data Science and ML
Mool - Automated Log Analysis using Data Science and MLMool - Automated Log Analysis using Data Science and ML
Mool - Automated Log Analysis using Data Science and ML
 
How Hadoop Makes the Natixis Pack More Efficient
How Hadoop Makes the Natixis Pack More Efficient How Hadoop Makes the Natixis Pack More Efficient
How Hadoop Makes the Natixis Pack More Efficient
 
HBase in Practice
HBase in Practice HBase in Practice
HBase in Practice
 
The Challenge of Driving Business Value from the Analytics of Things (AOT)
The Challenge of Driving Business Value from the Analytics of Things (AOT)The Challenge of Driving Business Value from the Analytics of Things (AOT)
The Challenge of Driving Business Value from the Analytics of Things (AOT)
 
Breaking the 1 Million OPS/SEC Barrier in HOPS Hadoop
Breaking the 1 Million OPS/SEC Barrier in HOPS HadoopBreaking the 1 Million OPS/SEC Barrier in HOPS Hadoop
Breaking the 1 Million OPS/SEC Barrier in HOPS Hadoop
 
From Regulatory Process Verification to Predictive Maintenance and Beyond wit...
From Regulatory Process Verification to Predictive Maintenance and Beyond wit...From Regulatory Process Verification to Predictive Maintenance and Beyond wit...
From Regulatory Process Verification to Predictive Maintenance and Beyond wit...
 
Backup and Disaster Recovery in Hadoop
Backup and Disaster Recovery in Hadoop Backup and Disaster Recovery in Hadoop
Backup and Disaster Recovery in Hadoop
 

Recently uploaded

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate AgentsRyan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate AgentsRyan Mahoney
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 

Recently uploaded (20)

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate AgentsRyan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 

Processing and Retrieval of Geotagged UAS Telemetry

  • 1. Processing and Retrieval of Geotagged Unmanned Aerial System Telemetry Kristopher Kane
  • 2. 2 © Hortonworks Inc. 2011 – 2016. All Rights Reserved Who am I? Kristopher Kane – Systems Architect, Hortonworks What is the purpose of this topic?  Commercial and military unmanned aerial systems (UAS) require that the decision making data points be accessible remote  They produce a lot of telemetry and decisions are made based on the timeliness and accuracy of that telemetry  Some UAS carry additional payloads for full motion video and electro optical sensors  We will cover creating an application that covers this ingesting and searching on UAS telemetry
  • 3. 3 © Hortonworks Inc. 2011 – 2016. All Rights Reserved Example Telemetry Types  Military grade: Key-Length-Value (KLV) – embedded telemetry as a elementary stream PID inside an MPEG 2 transport stream - See MISB for the open specification – interesting data points like center of frame lat/lon and video angle – thousands of keys  Hobby grade 1: MAVLINK – APM (ArduPilot Mega) telemetry that covers battery voltage, airspeed, temperature, pitch, roll, yaw angles and acceleration, GPS data, etc – open source – hundreds of keys  Hobby grade 2: FrSky receiver telemetry with a subset of what you get from MAVLINK – closed source but has been reversed engineered – a few keys
  • 4. 4 © Hortonworks Inc. 2011 – 2016. All Rights Reserved Telemetry Velocity – What is the problem to be solved?  Hobbyist level small UAS – open source hardware, software and protocol spec – ArduPilot Mega – 150 sensor points – 3 sets per second equals 450 points per aircraft/sec – Yesterday, FlightAware recorded 35,662,229 location positions/hour from transponder ground stations but this is only includes a few sensor points  Current manned aircraft – At 0500 local today (28JUN2016), FlightAware was tracking 9,804 aircraft in the air 4,411,800 data points per second 29,412 entries per second
  • 6. 6 © Hortonworks Inc. 2011 – 2016. All Rights Reserved Ingest Architecture Ground Control Station 915 MHZ - Serial Apache Knox Undertow HTTP API 4G -TCP HTTPS KafkaStorm TCP HTTP possible to embed this in Knox custom topology entry Other Consumers JSON HBase spatial missions Solr telemetry Aircraft
  • 7. 7 © Hortonworks Inc. 2011 – 2016. All Rights Reserved Ingest Architecture - Spatial based load distribution * Alerts like congested airspace will happen here  Partition based on geohash prefix as a simple dimension for distribution  Increase prefix characters as load increases. This works for: – Kafka broker partitions – Storm bolts - a couple grouping options here – Pre-split HBase regions
  • 8. 8 © Hortonworks Inc. 2011 – 2016. All Rights Reserved Geohash  Created for a URL shortening service in 2008  Encodes latitude and longitude into a string – two dimensions into one which is important for HBase key scanning  My house is at decimal degrees: 35.45380534178051,-78.8184043765068  geohash: dnrcwqjk  More characters = more precision  Geohash doesn’t follow the base-32 RFC - read about that and don’t lose sleep like I did
  • 9. 9 © Hortonworks Inc. 2011 – 2016. All Rights Reserved Geohash http://geohash.gofreerange.com/
  • 10. 10 © Hortonworks Inc. 2011 – 2016. All Rights Reserved Geohash Decoding  My house (area) geohash: dnrc Using base-32: d (base-32) = 12 (base-10) = 01100 (binary) n = 20 = 10100 r = 23 = 10111 c = 11 = 01011 Binary representation = 01100-10100-10111-01011 From the geohash Wikipedia article
  • 11. 11 © Hortonworks Inc. 2011 – 2016. All Rights Reserved Geohash Decoding – House Latitude 01100-10100-10111-01011 Bits alternate longitude (even) and latitude (odd) respectively, left to right. Latitude = 1011001001 bit min mid max latitude 1 -90.000 0.000 90.000 45.000 0 0.000 45.000 90.000 22.500 1 0.000 22.500 45.000 33.750 1 22.500 33.750 45.000 39.375 0 33.750 39.375 45.000 36.562 0 33.750 36.562 39.375 35.156 1 33.750 35.156 36.562 35.859 0 35.156 35.859 36.562 35.508 0 35.156 35.508 35.859 35.332 1 35.156 35.332 35.508 35.420
  • 12. 12 © Hortonworks Inc. 2011 – 2016. All Rights Reserved Why Apache Knox?  Let Knox handle authentication - It will provide the ‘user.name’ query parameter appended to your parameter set  KNOX-670 allows for the hosting of simple web applications  Custom APIs can be added to your topology with only a few lines of XML for simple cases: <rules> <rule dir="IN" name="DRONE-TELEMETRY/drone-telemetry/inbound" pattern="*://*:*/**/drone-telemetry/{path=**}?{**}"> <rewrite template="{$serviceUrl[DRONE-TELEMETRY]}/{path=**}?{**}"/> </rule> </rules> <service role="DRONE-TELEMETRY" name="DRONE-TELEMETRY" version="0.0.1"> <routes> <route path="/drone-telemetry/**"/> </routes> </service> data/services/drone-telemetry/0.0.1/service.xml data/services/drone-telemetry/0.0.1/rewrite.xml
  • 14. 14 © Hortonworks Inc. 2011 – 2016. All Rights Reserved Egress Architecture - User Query Access Apache Knox Undertow HTTP API TCP HTTP User – mobile app or browser based HTTPS – Twitter Oauth/LDAP HBase spatial missions Solr telemetry
  • 15. 15 © Hortonworks Inc. 2011 – 2016. All Rights Reserved Well Known Text Format  Both the Solr and HBase examples following use the Well Known Text format to specify polygons  This standard requires the points to be in counter clockwise order  Topologically closed - make the last point the first point
  • 16. 16 © Hortonworks Inc. 2011 – 2016. All Rights Reserved HBase Queries – General Idea  Encode two dimensions (latitude and longitude) into one (geohash)  Use geohashes as row scanning filters  Use spatial libraries against the latitude and longitude column families for accurate calculations like distance and points inside geometries  Rely on external libraries like JTS or Spatial4j  You have to implement everything yourself
  • 17. 17 © Hortonworks Inc. 2011 – 2016. All Rights Reserved HBase Queries  The Undertow API will accept a bounding box set of lat/lon coordinates from our user’s map  The web application will format that in WKT standard for the follow on geometry classes  Ensure you close the polygon with the start point POLYGON ((-78.818951 35.4535516, -78.818960 35.4535516, - 78.818951 35.4535560, -78.818941 35.4535512, -78.818951 35.4535516)) Geometry query = reader.read(polygon); WKT
  • 18. 18 © Hortonworks Inc. 2011 – 2016. All Rights Reserved HBase Query - Show Me Missions In This Polygon (map)  Get the polygon centroid and compute minimum boundaries by reversing the geohash into latitude and longitude  Scan each geohash as a PrefixFilter to get candidate rows *This code is from Chapter 8 of HBase In Action – I highly recommend this book. GeoHash[] minimumBoundingPrefixes(Geometry query) ... public Set<QueryMatch> query(Geometry query) throws IOException { GeoHash[] prefixes = minimumBoundingPrefixes(query); et<QueryMatch> ret = new HashSet<QueryMatch>(); for (GeoHash prefix : prefixes) { byte[] p = prefix.toBase32().getBytes(); Scan scan = new Scan(p); Filter filters = new FilterList(new PrefixFilter(p), new PageFilter(500L));
  • 19. 19 © Hortonworks Inc. 2011 – 2016. All Rights Reserved HBase Query - Show Me Missions In This Polygon (map)  Check the returned candidate rows by doing a point lookup of the lat/long CFs against our map provided polygon *This code is from Chapter 8 of HBase In Action – I highly recommend this book. for (Iterator<QueryMatch> iter = ret.iterator(); iter.hasNext(); ) { QueryMatch candidate = iter.next(); Coordinate coord = new Coordinate(candidate.lon, candidate.lat); Geometry point = factory.createPoint(coord); if (!query.contains(point)) { iter.remove(); exclusionCount++; } } ‘query’ is our polygon from the map.
  • 20. 20 © Hortonworks Inc. 2011 – 2016. All Rights Reserved Solr Query - Show Me Missions In This Polygon (map) &fq={!field f=geo_location} Intersects(POLYGON( (-80.12878 35.85121, -80.12878 34.50429, -77.93152 34.50429, -77.93152 35.85121, -80.12878 35.85121))) =*:*&sort=gcs_time%20desc 35.85121, -80.12878 34.50429, -80.12878 34.50429, -77.93152 35.85121, -77.93152
  • 21. 21 © Hortonworks Inc. 2011 – 2016. All Rights Reserved Solr Query - Show Me Missions In This Polygon (map) "response": …. [ { "mission_name":"kris-02", "gcs_time":1466388208, "latitude":35.4534768, "roll":-0.00834990758449, "user.name":"tom", "ingest_date":"2016-06-20T02:03:28Z", "yaw":0.187950670719, "pitch":-0.0191747546196, "longitude":-78.8189403},…]} 35.85121, -80.12878 34.50429, -80.12878 34.50429, -77.93152 35.85121, -77.93152
  • 22. 22 © Hortonworks Inc. 2011 – 2016. All Rights Reserved Solr Query – Point in Polygon breakdown &select?fl=mission_name,latitude,longitude,gcs_time &fq={!field f=geo_location}Intersects(POLYGON((-80.12878 35.85121, -80.12878 34.50429, - 77.93152 34.50429, -77.93152 35.85121, -80.12878 35.85121 &q=*:* &sort=gcs_time desc <fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType" spatialContextFactory="com.spatial4j.core.context.jts.JtsSpatialContextFactory" geo="true" distErrPct="0.025" maxDistErr="0.001" distanceUnits="kilometers"/> Polygons require this. ‘geo_location’ is of this type. Don’t forget to add JTS libs to Solr server!
  • 23. 23 © Hortonworks Inc. 2011 – 2016. All Rights Reserved HBase Query – Show me current missions  The HBase table is created with a TTL and the row key is the mission name  This table expects high velocity but will only store one row per mission  Data is ‘UPSERT’  HBase has a cool new feature that allows for no compaction TTL clean up which is perfect for this table’s purpose: https://issues.apache.org/jira/browse/HBASE-14468  Simply row scan the table for the mission list
  • 24. 24 © Hortonworks Inc. 2011 – 2016. All Rights Reserved Solr Query – Show me current missions  Provides a count list of the facet fields select?facet.field=mission_name &facet=on &fq=ingest_date:[NOW-1MINUTE TO NOW] &q=*:* &rows=0 &start=0 http://localhost:5000/solr/mavlink/select?facet.field=mission_name&facet=on&&fq=ingest_date:[NOW-1MINUTE%20TO%20NOW]&indent=on&q=*:*&rows=0&start=0&wt=json
  • 25. 25 © Hortonworks Inc. 2011 – 2016. All Rights Reserved Solr Query – Distance and temporal filtering with sorting fq=ingest_date: [NOW-10SECOND TO NOW] AND {!geofilt pt=35.4,-78.81 sfield=latlon d=20} &q=*:* &sort=gcs_time desc Show me: Mission data points in the last 10 seconds, within 20 km of my current position and sorted by most recent ground station time Want a unique list of missions? facet.field=mission_name &facet=on &rows=0 http://localhost:5000/solr/mavlink/select?fl=mission_name,ingest_date,latitude,longitude,user.name,pitch,yaw,roll,gcs_time&fq=ingest_date:[NOW- 10SECOND%20TO%20NOW]AND{!geofilt%20pt=37.3,-121.92%20sfield=latlon%20d=20}&indent=on&q=*:*&sort=gcs_time%20desc&wt=json
  • 26. 26 © Hortonworks Inc. 2011 – 2016. All Rights Reserved Thank You