Transwarp Inceptor:如何让SQL在Spark上运行的更快
星环信息科技(上海)有限公司
www.transwarp.io
从开源迈向商业产品
• 来自于知名外企的创业团队
• 注册资金一千万元的高科技公司
• 成功完成近千万美元级别的A轮融资
• 中国最久的企业级Hadoop核心开发团队
• 比肩硅谷的企业级架构及功能模块
• 数十个国内的落地应用案例
2
星 环 科 技
www.transwarp.io
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
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作为企业级解决方案,开发了用户友好的管理界面、提供了系统安装、集群配置,安全访问控制、监控及预警等多方面支持,在可管理性方面优势显著。
>
>
>
>
分布式内存分析引擎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
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
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
更稳定的性能: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
更快的性能: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
TPC-DS性能测试结果
10TRANSWARP © 2014
图中纵坐标小于1表示Impala性能超过Inceptor,而大于1则表示Inceptor性能更好。对于Impala不能支持的SQL,我们就标记这个性能比为100。
从图中可见,在Impala支持的19个SQL中,只有8个SQL的表现超过Inceptor,另外11个SQL 在Inceptor的表现比Impala更好。
测试细节参考星环性能白皮书
采用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.
交互式分析 – 纽约市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)
纽约中央公园
对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
使用R语言进行商圈分析
DatasetPoS transaction
records within past
three months for all
shops in Shanghai
city
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
16TRANSWARP © 2014
We are hiring
SQL编译器开发工程师
Spark计算平台开发工程师
New SQL开发工程师
售前POC工程师
测试工程师
WEB管理软件开发人员
大数据挖掘工程师
创业公司员工期权 领先行业薪酬水平
http://www.transwarp.io/company.html#join-us
TRANSWARP ©