Transwarp Inceptor:如何让SQL在Spark 上 ... -...

17
Transwarp Inceptor如何让SQLSpark上运行的更快 星环信息科技(上海)有限公司 www.transwarp.io 从开源迈向商业产品 刘汪根 [email protected]

Transcript of Transwarp Inceptor:如何让SQL在Spark 上 ... -...

Page 1: Transwarp Inceptor:如何让SQL在Spark 上 ... - Meetupfiles.meetup.com/16395762/transwarp-cncc-slides-public.pdf · • Interactive analysis through visualization tools • Stable

Transwarp Inceptor:如何让SQL在Spark上运行的更快

星环信息科技(上海)有限公司

www.transwarp.io

从开源迈向商业产品

刘汪根[email protected]

Page 2: Transwarp Inceptor:如何让SQL在Spark 上 ... - Meetupfiles.meetup.com/16395762/transwarp-cncc-slides-public.pdf · • Interactive analysis through visualization tools • Stable

• 来自于知名外企的创业团队

• 注册资金一千万元的高科技公司

• 成功完成近千万美元级别的A轮融资

• 中国最久的企业级Hadoop核心开发团队

• 比肩硅谷的企业级架构及功能模块

• 数十个国内的落地应用案例

2

星 环 科 技

www.transwarp.io

Page 3: Transwarp Inceptor:如何让SQL在Spark 上 ... - Meetupfiles.meetup.com/16395762/transwarp-cncc-slides-public.pdf · • Interactive analysis through visualization tools • Stable

Spark生态系统的演变 2009年-2012年 @AMP lab of UC Berkeley, Spark作为Mesos的一个测试项目开发,主要由

AMP Lab开发、完善和推广

2013年 Spark成为Apache项目,被大部分人接受。

2013年11月 星环科技推出第一个Spark商业发行版,当时已有多个生产集群案例,包括锦江电商、工商总局等多个客户在生产系统中部署。

2014年7月 Spark Summit作为独立于Hadoop的大会召开,大数据生态系统开始全面转向Spark

– 开源社区准备合作扩大对Spark的支持,将Spark作为标准的计算引擎以替代Map/Reduce.

@2014/7/1

– Cloudera和MapR开始宣布支持Spark,由Databricks提供售后支持服务。Mike Olson,

Cloudera创始人, 承认Impala将只作为交互式SQL引擎,其他所有的Hadoop组件会迁移到Spark上来。@2014/7/3

2014年10月 Strata+Hadoop,Spark的生态系统得到极大发展

– 主流Hadoop发行版厂商都宣布支持Spark,包括Cloudera, MapR, Hortonworks

– Hadoop之上的应用和工具厂商开始转向Spark,包括Platfora, Tableau,Pentaho, 0xdata

– 开始出现多个完全基于Spark的SaaS服务和工具厂商:ClearStory, Adatao, DataRPM等数十家创业公司

– 星环科技基于Spark的交互式SQL引擎(Inceptor)已能够7x24稳定处理数十TB(远大于内存容量)的数据,并且已经有数十个生产系统部署案例,Spark技术已经领先于国外同行。

strata 2014/10

Page 4: Transwarp Inceptor:如何让SQL在Spark 上 ... - Meetupfiles.meetup.com/16395762/transwarp-cncc-slides-public.pdf · • Interactive analysis through visualization tools • Stable

Transwarp Data Hub (TDH) 架构图

Transwarp Proprietary

流处理引擎

Transwarp Stream

NoSQL数据库搜索、图计算

Transwarp Hyperbase

Transwarp Manager

交互式内存分析数据挖掘

Transwarp Inceptor including Apache Spark

资源管理 YARN(内置Transwarp Extension)

优化存储 HDFS2(内置Transwarp Erasure Code)

批处理Pig

批处理框架Map/Reduce2

协作服务Zookeeper

机器学习Mahout

工作流Oozie

日志采集Flume

全文搜索Elastic Search

Apache Projects

数据集成Sqoop

一站式数据存储平台TDH通过内存计算技术、高效索引、执行计划优化和高度容错的技术,使得一个平台能够处理从GB到PB

的数据,并且在每个数量级上,都能比现有技术提供更快的性能;企业客户不再需要混合架构,不需要孤立的多个集群,TDH可以伴随企业客户的数据增长,动态不停机扩容,避免MPP或传统架构数据迁移的棘手问题。

一站式资源管理平台TDH在统一存储上建立资源管理层,提供企业用户统一的计算资源管理、动态资源分配、多部门之间资源配置和动态共享,灵活支持多部门多应用在统一平台上平滑运行。

一站式数据分析平台TDH支持批处理统计分析、交互式SQL分析、在线数据检索、R语言数据挖掘、机器学习、实时流处理、全文搜索和图计算,为企业客户提供广泛的计算支持能力,客户无需切换平台或架构即可完成复杂的任务。

一站式管理平台:

TDH作为企业级解决方案,开发了用户友好的管理界面、提供了系统安装、集群配置,安全访问控制、监控及预警等多方面支持,在可管理性方面优势显著。

>

>

>

>

Page 5: Transwarp Inceptor:如何让SQL在Spark 上 ... - Meetupfiles.meetup.com/16395762/transwarp-cncc-slides-public.pdf · • Interactive analysis through visualization tools • Stable

分布式内存分析引擎Inceptor架构图

Apache Spark基于内存的Map/Reduce计算引擎,即将成为新一代主流计算框架。处理大数据像“光速”一样快,比Hadoop

Map/Reduce快10x倍。

Holodesk跨内存/闪存/磁盘等介质的分布式混合列式存储,常用于缓存数据供Spark高速访问。Holodesk内建内存索引,可提供比开源Spark更高的交互式统计性能;结合使用低成本的内存/SSD混合存储方案,可接近全内存存储的分析性能。

SQL引擎高度优化的高速SQL引擎,可运行在Spark或Map/Reduce

上,可高速处理缓存在Holodesk上的列式数据。兼容ANSI

SQL 1999, HiveQL和PL/SQL语法,支持数据仓库、数据集市等分析系统中常用的复杂分析型语法,方便应用迁移。

统计库并行化的高性能统计算法库,用于对原始数据进行去噪、去缺省/异常值、归一化、统计分布等,是机器学习或数据挖掘的基础工具包。

机器学习库并行化的高性能机器学习算法库,包含分类、聚类、预测、推荐等机器学习算法。可用于构建高精度的推荐引擎或者预测引擎。

R 语言/R Studio强大的主流数据统计和绘图语言R以及Web图形化开发界面RStudio。通过调用Inceptor内置并行算法库,支持对大数据集进行数据挖掘和统计。

丰富的工具支持支持主流可视化和BI/挖掘工具,包括Tableau, IBM Cognos,

SAP BO, Oracle BI, SAS 等 。 支 持 Informatica ,Pentaho/Kettle等ETL工具。

Transwarp HDFS2分布式持久化数据存储

cache

Transwarp Hyperbase分布式实时数据库

cache

Transwarp Holodesk分布式内存列式存储

R – statistical computing

Distributed Execution Engine 分布式执行引擎including Apache Spark

编译器 SQL’99 + PL/SQL COMPILER

优化器 COST BASED OPTIMIZER

代码生成 CODE GENERATOR

Interactive SQL Engine TranswarpStatistics Library

并行统计算法库

TranswarpMachine Learning

Library机器学习算法库

JDBC SHELLODBC

Page 6: Transwarp Inceptor:如何让SQL在Spark 上 ... - Meetupfiles.meetup.com/16395762/transwarp-cncc-slides-public.pdf · • Interactive analysis through visualization tools • Stable

6TRANSWARP © 2014

更完整的SQL支持

ANSI SQL 1999 Impala 2.0 Inceptor 3.4

Basic and Complex Data Types ✓ ✓

WITH-AS SUB-TABLES ⅹ ✓

Nested Sub-query o ✓

Correlated Sub-query ⅹ ✓

Window Aggregation o ✓

GROUP BY CUBE/ROLLUP ⅹ ✓

SEMI-OUTER JOIN、IMPLICIT JOIN、NATURE JOIN 、 CROSS JOIN 、SELF JOIN

o ✓

OPEREATORS including UNION, IN,

EXISTS, NOT EXISTSo ✓

DML for single row

INSERT INTO TABLE VALUES ……

UPDATE TABLE SET ……

DELETE FROM TABLE WHERE ……

ⅹ ✓

PL/SQL Impala 2.0 Inceptor 3.4

Conditional Control Flow

IF … THEN … ELSE …ⅹ ✓

LOOPS:

FOR, WHILE, BREAK/CONTINUEⅹ ✓

Variables

DECLARE VAR_XXXⅹ ✓

Functions definition & calls

CREATE FUNCTIONⅹ ✓

Stored Procedures

Create PROCEDURE ⅹ ✓

SQL99 + PL/SQL is critical for data warehouse workload. It’s

impossible to migrate real-world data analysis workload to

hadoop without these features.

Inceptor SQL is compatible with SQL99 and HiveQL. It

detects different syntax automatically.

Stable & reliable for 7x24 production with many use cases.

o - partial support

Page 7: Transwarp Inceptor:如何让SQL在Spark 上 ... - Meetupfiles.meetup.com/16395762/transwarp-cncc-slides-public.pdf · • Interactive analysis through visualization tools • Stable

7TRANSWARP © 2014

INSERT OVERWRITE TABLE A;

CREATE TABLE A (NAME CHAR(10));

IF v_flag=„TRUE‟ THEN

……

END IF

User

SQL 前端编译器和执行引擎灵活互换

User

User

PL/SQL

SQL’ 99

Hive QL

Syntax Analysis

Semantic Analysis

Optimizers

SparkM/R

②Syntax

auto-detectionUSENGMR=TRUEUSENGMR=FALSE

Result

③free switch

between M/R

& Spark

SQL集

①HiveQL、SQL’99、PL/SQL

Backend

Page 8: Transwarp Inceptor:如何让SQL在Spark 上 ... - Meetupfiles.meetup.com/16395762/transwarp-cncc-slides-public.pdf · • Interactive analysis through visualization tools • Stable

更稳定的性能:Off-heap Columnar Store

TRANSWARP ©

1 W A

2 X B

3 Y C

4 Z D

1 W A

INDEX INDEX INDEX

4 Z D

INDEX INDEX INDEX

Independent Columnar Store (Off-heap memory/SSD cache layer)

3 Y C

INDEX INDEX INDEX

2 X B

INDEX INDEX INDEXGLOBAL

INDEX

Zookeeper Cluster

servant servant servant servant

Executor Executor Executor

Spark

Context

ExecutorSpark

CREATE TABLE t1

TBLPROPERTIES(

"cache"=“RAM”,

“filters”=“hashbucket(360):c1”

) AS

SELECT *

FROM src

DISTRIBUTE BY c1;

Off-HeapColumnar storeSecondary indexTable format/accessSSD as cache

Page 9: Transwarp Inceptor:如何让SQL在Spark 上 ... - Meetupfiles.meetup.com/16395762/transwarp-cncc-slides-public.pdf · • Interactive analysis through visualization tools • Stable

更快的性能:Cost Based Optimizer

9

Table A1000

Records

kurt

mary

john

smith

622523454095243

622550042034568

622544334568763

622534878982324

v_name Card_id

1

2

……

9999999

10000000

No.

Table B1000 records

JOIN ON A.card_id=B.card_id

Cost based optimizer

Table size Immediate result size

Data skewValue distribution

selectivity

Map Join

Lookup Join

Hash Join

Query Plan

Common Join

Co-Group Join

Page 10: Transwarp Inceptor:如何让SQL在Spark 上 ... - Meetupfiles.meetup.com/16395762/transwarp-cncc-slides-public.pdf · • Interactive analysis through visualization tools • Stable

TPC-DS性能测试结果

10TRANSWARP © 2014

图中纵坐标小于1表示Impala性能超过Inceptor,而大于1则表示Inceptor性能更好。对于Impala不能支持的SQL,我们就标记这个性能比为100。

从图中可见,在Impala支持的19个SQL中,只有8个SQL的表现超过Inceptor,另外11个SQL 在Inceptor的表现比Impala更好。

测试细节参考星环性能白皮书

Page 11: Transwarp Inceptor:如何让SQL在Spark 上 ... - Meetupfiles.meetup.com/16395762/transwarp-cncc-slides-public.pdf · • Interactive analysis through visualization tools • Stable

采用SSD固态盘作为缓存层

Use Case SQL statement

Count select count(ss_item_sk) from store_sales;

Find select * from store_sales where ss_item_sk=141031;

Filterselect count(1) from store_sales where ss_customer_sk

like "%634%";

Inner join

select /*+mapjoin(b)*/ count(*) from store_sales a,

store_returns b where a.ss_item_sk = b.sr_item_sk and

a.ss_customer_sk=b.sr_customer_sk and a.

ss_item_sk=141031 ;

Dimension

Stats

select ss_item_sk, count(distinct ss_customer_sk) as

customers from store_sales group by ss_item_sk order

by customers desc limit 10;

Implicit Joinselect count(*) from store_sales a, store_returns b

where a.ss_item_sk = b.sr_item_sk and

a.ss_customer_sk=b.sr_customer_sk;

Sortselect ss_item_sk, ss_sold_date_sk, count(1) as num

from store_sales group by ss_item_sk, ss_sold_date_sk

order by num desc limit 10;

Window

Aggregation

select * from (select *, rank() over (partition by

ss_sold_date_sk, ss_item_sk order by num desc) as r

from

(select ss_sold_date_sk, ss_item_sk, count(1) as num

from store_sales group by ss_sold_date_sk,

ss_item_sk) tmp) tmp2 where r=1 limit 100;

Only 20% performance degradation for SSD comparing to memory

Using SDD as cache layer allows user to process 10x larger data at same price as memory with similar performance.

Page 12: Transwarp Inceptor:如何让SQL在Spark 上 ... - Meetupfiles.meetup.com/16395762/transwarp-cncc-slides-public.pdf · • Interactive analysis through visualization tools • Stable

交互式分析 – 纽约市311服务电话记录分析

DatasetNYC 311 service call records

10GB data size

Steps1. Load dataset into memory

2. Connect tableau to Inceptor

3. Service calls‟ geo

distribution (few calls in

central park)

4. Time distribution (few calls

in weekends)

5. Type distribution (most are

street lights or neighbor

noises)

纽约中央公园

Page 13: Transwarp Inceptor:如何让SQL在Spark 上 ... - Meetupfiles.meetup.com/16395762/transwarp-cncc-slides-public.pdf · • Interactive analysis through visualization tools • Stable

对R语言的完整支持

R package from Transwarp

R Studio

R – SQLInterface

from Transwarp

TablesDistributed

Columnar Store on SSD

Statistics LibraryMachine Learning

Library

FilesHadoop Distributed

File System

R – SparkInterface

from Transwarp

Spark RDDResilient

Distributed Dataset in Memory

Call parallelized algorithmsCall SQL

call sequential

algorithm for

distributed dataset

Page 14: Transwarp Inceptor:如何让SQL在Spark 上 ... - Meetupfiles.meetup.com/16395762/transwarp-cncc-slides-public.pdf · • Interactive analysis through visualization tools • Stable

使用R语言进行商圈分析

DatasetPoS transaction

records within past

three months for all

shops in Shanghai

city

Page 15: Transwarp Inceptor:如何让SQL在Spark 上 ... - Meetupfiles.meetup.com/16395762/transwarp-cncc-slides-public.pdf · • Interactive analysis through visualization tools • Stable

15TRANSWARP © 2014

Summary for Transwarp InceptorTranswarp Inceptor =

Hadoop + Spark + R + SQL

1. 更全的SQL支持• ANSI SQL‟2003, HiveQL

• Partial PL/SQL support

2. 性能更快更稳定• 2x-10x faster than traditional database

• Better TPC-DS performance number than Impala

• Interactive analysis through visualization tools

• Stable for 7x24 production

3. 完整支持R语言• Parallelized machine learning algorithms

• SQL and statistics algorithm for data cleansing

4. 简化运维管理• Web based installation/configuration

• Graph based monitoring

Page 16: Transwarp Inceptor:如何让SQL在Spark 上 ... - Meetupfiles.meetup.com/16395762/transwarp-cncc-slides-public.pdf · • Interactive analysis through visualization tools • Stable

16TRANSWARP © 2014

We are hiring

SQL编译器开发工程师

Spark计算平台开发工程师

New SQL开发工程师

售前POC工程师

测试工程师

WEB管理软件开发人员

大数据挖掘工程师

创业公司员工期权 领先行业薪酬水平

http://www.transwarp.io/company.html#join-us

Page 17: Transwarp Inceptor:如何让SQL在Spark 上 ... - Meetupfiles.meetup.com/16395762/transwarp-cncc-slides-public.pdf · • Interactive analysis through visualization tools • Stable

TRANSWARP ©