42
Large-scale, interactive ad-hoc queries over different datastores with Apache Drill Michael Hausenblas, Chief Data Engineer, MapR Technologies JAX London, 2013-10-29

Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Embed Size (px)

DESCRIPTION

Presented at JAX London 2013 Apache Drill is a distributed system for interactive ad-hoc query and analysis of large-scale datasets. It is the Open Source version of Google’s Dremel technology. Apache Drill is designed to scale to thousands of servers and able to process Petabytes of data in seconds, enabling SQL-on-Hadoop and supporting a variety of data sources.

Citation preview

Page 1: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Large-scale, interactivead-hoc queries over

different datastores with Apache Drill

Michael Hausenblas, Chief Data Engineer, MapR TechnologiesJAX London, 2013-10-29

Page 2: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Which workloads do you encounter in your environment?

http://w

ww

.flickr.com/photos/kevinom

ara/2866648330/ licensed under CC BY-NC-N

D 2.0

Page 3: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Batch processing

… for recurring tasks such as large-scale data mining, ETL offloading/data-warehousing for the batch layer in Lambda architecture

Apache Pig Cascalog

Page 4: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

OLTP

… user-facing eCommerce transactions, real-time messaging at scale (FB), time-series processing, etc. for the serving layer in Lambda architecture

Page 5: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Stream processing

… in order to handle stream sources such as social media feeds or sensor data (mobile phones, RFID, weather stations, etc.) for the speed layer in Lambda architecture

Page 6: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Search/Information Retrieval

… retrieval of items from unstructured documents (plain text, etc.), semi-structured data formats (JSON, etc.), as well as data stores (MongoDB, CouchDB, etc.)

Page 7: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

http://www.flickr.com/photos/9479603@N02/4144121838/ licensed under CC BY-NC-ND 2.0

But what about interactivead-hoc query at scale?

Page 8: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Impala

Interactive Query (?)

low-latency

Page 9: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Use Case: Marketing Campaign

• Jane, a marketing analyst• Determine target segments• Data from different sources

Page 10: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Use Case: Logistics

• Supplier tracking and performance• Queries– Shipments from supplier ‘ACM’ in last 24h– Shipments in region ‘US’ not from ‘ACM’

SUPPLIER_ID NAME REGION

ACM ACME Corp US

GAL GotALot Inc US

BAP Bits and Pieces Ltd Europe

ZUP Zu Pli Asia

{ "shipment": 100123, "supplier": "ACM", “timestamp": "2013-02-01", "description": ”first delivery today”},{ "shipment": 100124, "supplier": "BAP", "timestamp": "2013-02-02", "description": "hope you enjoy it”}…

Page 11: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Use Case: Crime Detection

• Online purchases• Fraud, bilking, etc.• Batch-generated overview• Modes– Explorative– Alerts

Page 12: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Requirements

• Support for different data sources• Support for different query interfaces• Low-latency/real-time• Ad-hoc queries• Scalable, reliable

Page 13: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

And now for something completely different …

Page 14: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Google’s Dremel

http://research.google.com/pubs/pub36632.html

Sergey Melnik, Andrey Gubarev, Jing Jing Long, Geoffrey Romer, Shiva Shivakumar, Matt Tolton, Theo Vassilakis, Proc. of the 36th Int'l Conf on Very Large Data Bases (2010), pp. 330-339

Dremel is a scalable, interactive ad-hoc query system for analysis of read-only nested data. By combining multi-level execution trees and columnar data layout, it is capable of running aggregation queries over trillion-row tables in seconds. The system scales to thousands of CPUs and petabytes of data, and has thousands of users at Google.…

““Dremel is a scalable, interactive ad-hoc query system for analysis of read-only nested data. By combining multi-level execution trees and columnar data layout, it is capable of running aggregation queries over trillion-row tables in seconds. The system scales to thousands of CPUs and petabytes of data, and has thousands of users at Google.…

Page 15: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Google’s Dremel

multi-level execution trees

columnar data layout

Page 16: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Google’s Dremel

nested data + schema column-striped representation

map nested data to tables

Page 17: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Google’s Dremel

experiments:datasets & query performance

Page 18: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Back to Apache Drill …

Page 19: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Apache Drill–key facts

• Inspired by Google’s Dremel• Standard SQL 2003 support• Plug-able data sources• Nested data is a first-class citizen• Schema is optional• Community driven, open, 100’s involved

Page 20: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

High-level Architecture

Page 21: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Principled Query Execution

• Source query—what we want to do (analyst friendly)

• Logical Plan— what we want to do (language agnostic, computer friendly)

• Physical Plan—how we want to do it (the best way we can tell)

• Execution Plan—where we want to do it

Page 22: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Principled Query Execution

Source Query Parser

Logical Plan Optimizer

Physical Plan Execution

SQL 2003 DrQLMongoQLDSL

scanner APITopologyCFetc.

query: [ { @id: "log", op: "sequence", do: [ { op: "scan", source: “logs” }, { op: "filter", condition: "x > 3” },

parser API

Page 23: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Wire-level Architecture

• Each node: Drillbit - maximize data locality• Co-ordination, query planning, execution, etc, are distributed• Any node can act as endpoint for a query—foreman

Storage Process

Drillbit

node

Storage Process

Drillbit

node

Storage Process

Drillbit

node

Storage Process

Drillbit

node

Page 24: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Wire-level Architecture

• Curator/Zookeeper for ephemeral cluster membership info• Distributed cache (Hazelcast) for metadata, locality

information, etc.

Curator/Zk

Distributed Cache

Storage Process

Drillbit

node

Storage Process

Drillbit

node

Storage Process

Drillbit

node

Storage Process

Drillbit

node

Distributed Cache Distributed Cache Distributed Cache

Page 25: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Wire-level Architecture

• Originating Drillbit acts as foreman: manages query execution, scheduling, locality information, etc.

• Streaming data communication avoiding SerDe

Curator/Zk

Distributed Cache

Storage Process

Drillbit

node

Storage Process

Drillbit

node

Storage Process

Drillbit

node

Storage Process

Drillbit

node

Distributed Cache Distributed Cache Distributed Cache

Page 26: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Wire-level ArchitectureForeman turns into root of the multi-level execution tree, leafs activate their storage engine interface.

node

node node

Curator/Zk

Page 27: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

On the shoulders of giants …• Jackson for JSON SerDe for metadata• Typesafe HOCON for configuration and module management• Netty4 as core RPC engine, protobuf for communication• Vanilla Java, Larray and Netty ByteBuf for off-heap large data structures• Hazelcast for distributed cache• Netflix Curator on top of Zookeeper for service registry• Optiq for SQL parsing and cost optimization• Parquet (http://parquet.io)/ ORC • Janino for expression compilation • ASM for ByteCode manipulation• Yammer Metrics for metrics• Guava extensively• Carrot HPC for primitive collections

Page 28: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Key features

• Full SQL – ANSI SQL 2003• Nested Data as first class citizen• Optional Schema• Extensibility Points …

Page 29: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Extensibility Points

• Source query parser API• Custom operators, UDF logical plan• Serving tree, CF, topology physical plan/optimizer• Data sources &formats scanner API

Source Query Parser

Logical Plan Optimizer

Physical Plan Execution

Page 30: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

User Interfaces

• API—DrillClient – Encapsulates endpoint discovery– Supports logical and physical plan submission,

query cancellation, query status– Supports streaming return results

• JDBC driver, converting JDBC into DrillClient communication.

• REST proxy for DrillClient

Page 31: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

User Interfaces

Page 32: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

LET’S GET OUR HANDS DIRTY…

Page 33: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Demo

• Install

• Preparation

$ wget http://people.apache.org/~jacques/apache-drill-1.0.0-m1.rc3/apache-drill-1.0.0-m1-binary-release.tar.gz$ tar -zxf apache-drill-1.0.0-m1-binary-release.tar.gz

$ export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_11.jdk/Contents/Home$ export DRILL_LOG_DIR=$PWD$ ./bin/drillbit.sh start

Page 34: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Demo: submitting physical plan in a 3-node cluster

Test 1: Scan JSON doc

$ bin/submit_plan -f sample-data/physical_json_scan_test1.json -t physical -zk 127.0.0.1:2181

Test 2: Scan Parquet doc

$ bin/submit_plan -f sample-data/parquet_scan_union_screen_physical.json -t physical -zk 127.0.0.1:2181

Page 35: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Demo: SQL on single node

$ ./bin/sqlline -u jdbc:drill:schema=parquet-local

0: jdbc:drill:schema=parquet-local> SELECT _MAP['N_REGIONKEY'] as regionKey, _MAP['N_NAME'] as name FROM "sample-data/nation.parquet" WHERE cast(_MAP['N_NAME'] as varchar) < 'M';

Page 36: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Demo: DIY

https://github.com/mhausenblas/apache-drill-sandbox/

Page 38: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

BE A PART OF IT!

Page 39: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Status

• Heavy development by multiple organizations (MapR, Pentaho, Microsoft, Thoughtworks, XingCloud, etc.)

• Currently more than 100k LOC

• M1 Alpha available viahttp://www.apache.org/dyn/closer.cgi/incubator/drill/drill-1.0.0-m1-incubating/

Page 40: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Kudos to …• Julian Hyde, Pentaho • Lisen Mu, XingCloud• Tim Chen, Microsoft• Chris Merrick, RJMetrics • David Alves, UT Austin• Sree Vaadi, SSS• Srihari Srinivasan,

ThoughtWorks• Alexandre Beche, CERN• Jason Altekruse, MapR

http://incubator.apache.org/drill/team.html

• Ben Becker, MapR• Jacques Nadeau, MapR• Ted Dunning, MapR• Keys Botzum, MapR• Jason Frantz• Ellen Friedman• Chris Wensel, Concurrent• Gera Shegalov, Oracle• Ryan Rawson, Ohm Data

Page 41: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Contributing

Contributions appreciated—not only code drops …

• Test data & test queries• Use case scenarios (textual/SQL queries)• Documentation

Page 42: Large scale, interactive ad-hoc queries over different datastores with Apache Drill - Michael Hausenblas (MapR technologies)

Engage!

• Follow @ApacheDrill on Twitter

• Sign up at mailing lists (user | dev) http://incubator.apache.org/drill/mailing-lists.html

• Standing G+ hangouts every Tuesday at 5pm GMThttp://j.mp/apache-drill-hangouts

• Keep an eye on http://drill-user.org/