Transwarp Inceptor: 如何让 SQL 在 Spark 上运行的更快 从开源迈向商业产品 刘汪根 wayne.liu@transwarp.io 星环信息科技 ( 上海 ) 有限公司 www.transwarp.io
星环科技 来自于知名外企的创业团队 注册资金一千万元的高科技公司 成功完成近千万美元级别的 A 轮融资 中国最久的企业级 Hadoop 核心开发团队 比肩硅谷的企业级架构及功能模块 数十个国内的落地应用案例 www.transwarp.io 2
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 Inceptor including Apache Spark 资源管理 YARN ( 内置 Transwarp Extension) 优化存储 HDFS2 ( 内置 Transwarp Erasure Code) Transwarp Proprietary Transwarp Manager 批处理 Pig NoSQL 数据库搜索 图计算 Transwarp Hyperbase 机器学习 Mahout 工作流 Oozie 批处理框架 Map/Reduce2 数据集成 Sqoop 流处理引擎 Transwarp Stream 日志采集 Flume 全文搜索 Elastic Search 协作服务 Zookeeper Apache Projects > > > > 一站式数据存储平台 TDH 通过内存计算技术 高效索引 执行计划优化和高度容错的技术, 使得一个平台能够处理从 GB 到 PB 的数据, 并且在每个数量级上, 都能比现有技术提供更快的性能 ; 企业客户不再需要混合架构, 不需要孤立的多个集群,TDH 可以伴随企业客户的数据增长, 动态不停机扩容, 避免 MPP 或传统架构数据迁移的棘手问题 一站式资源管理平台 TDH 在统一存储上建立资源管理层, 提供企业用户统一的计算资源管理 动态资源分配 多部门之间资源配置和动态共享, 灵活支持多部门多应用在统一平台上平滑运行 一站式数据分析平台 TDH 支持批处理统计分析 交互式 SQL 分析 在线数据检索 R 语言数据挖掘 机器学习 实时流处理 全文搜索和图计算, 为企业客户提供广泛的计算支持能力, 客户无需切换平台或架构即可完成复杂的任务 一站式管理平台 : TDH 作为企业级解决方案, 开发了用户友好的管理界面 提供了系统安装 集群配置, 安全访问控制 监控及预警等多方面支持, 在可管理性方面优势显著
分布式内存分析引擎 Inceptor 架构图 Apache Spark 基于内存的 Map/Reduce 计算引擎, 即将成为新一代主流计算框架 处理大数据像 光速 一样快, 比 Hadoop Map/Reduce 快 10x 倍 JDBC ODBC Interactive SQL Engine 编译器 SQL 99 + PL/SQL COMPILER 优化器 COST BASED OPTIMIZER 代码生成 CODE GENERATOR cache Transwarp HDFS2 分布式持久化数据存储 SHELL Transwarp Holodesk 分布式内存列式存储 R statistical computing Transwarp Statistics Library 并行统计算法库 Distributed Execution Engine 分布式执行引擎 including Apache Spark Transwarp Machine Learning Library 机器学习算法库 cache Transwarp Hyperbase 分布式实时数据库 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 工具
更完整的 SQL 支持 ANSI SQL 1999 Impala 2.0 Inceptor 3.4 PL/SQL Impala 2.0 Inceptor 3.4 Basic and Complex Data Types WITH-AS SUB-TABLES ⅹ Conditional Control Flow IF THEN ELSE ⅹ Nested Sub-query o LOOPS: FOR, WHILE, BREAK/CONTINUE ⅹ Correlated Sub-query ⅹ Window Aggregation o Variables DECLARE VAR_XXX ⅹ GROUP BY CUBE/ROLLUP ⅹ SEMI-OUTER JOIN IMPLICIT JOIN NATURE JOIN CROSS JOIN SELF JOIN o Functions definition & calls CREATE FUNCTION Stored Procedures Create PROCEDURE ⅹ ⅹ OPEREATORS including UNION, IN, EXISTS, NOT EXISTS DML for single row INSERT INTO TABLE VALUES UPDATE TABLE SET DELETE FROM TABLE WHERE o ⅹ 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. TRANSWARP 2014 o - partial support 6
SQL 前端编译器和执行引擎灵活互换 User User Hive QL INSERT OVERWRITE TABLE A; SQL 99 CREATE TABLE A (NAME CHAR(10)); 2Syntax auto-detection Syntax Analysis Semantic Analysis Backend USENGMR=FALSE USENGMR=TRUE 3free switch M/R Spark between M/R & Spark PL/SQL User IF v_flag= TRUE THEN END IF Optimizers Result SQL 集 1HiveQL SQL 99 PL/SQL TRANSWARP 2014 7
更稳定的性能 :Off-heap Columnar Store 1 W A 2 X B 3 Y C 4 Z D Spark Context Off-Heap Columnar store Secondary index Table format/access SSD as cache Spark Executor Executor Executor Executor Zookeeper Cluster GLOBAL INDEX servant servant servant servant INDEX INDEX INDEX INDEX INDEX INDEX INDEX INDEX INDEX INDEX INDEX INDEX 1 W A 2 X B 3 Y C 4 Z D Independent Columnar Store (Off-heap memory/ssd cache layer) CREATE TABLE t1 TBLPROPERTIES( "cache"= RAM, filters = hashbucket(360):c1 ) AS SELECT * FROM src DISTRIBUTE BY c1; TRANSWARP
更快的性能 :Cost Based Optimizer Table A 1000 Records JOIN ON A.card_id=B.card_id Value distribution Cost based optimizer Data skew Query Plan Map Join Lookup Join No. v_name Card_id 1 kurt 622523454095243 Hash Join 2 mary 622550042034568 Table size Immediate result size Co-Group Join 9999999 10000000 john smith 622544334568763 622534878982324 selectivity Common Join Table B 1000 records 9
TPC-DS 性能测试结果 测试细节参考星环性能白皮书 图中纵坐标小于 1 表示 Impala 性能超过 Inceptor, 而大于 1 则表示 Inceptor 性能更好 对于 Impala 不能支持的 SQL, 我们就标记这个性能比为 100 TRANSWARP 2014 从图中可见, 在 Impala 支持的 19 个 SQL 中, 只有 8 个 SQL 的表现超过 Inceptor, 另外 11 个 SQL 在 Inceptor 的表现比 Impala 更好 10
采用 SSD 固态盘作为缓存层 Only 20% performance degradation for SSD comparing to memory Use Case Count Find Filter Inner join Dimension Stats Implicit Join SQL statement select count(ss_item_sk) from store_sales; select * from store_sales where ss_item_sk=141031; select count(1) from store_sales where ss_customer_sk like "%634%"; 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 ; 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; select 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; Sort select 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; Using SDD as cache layer allows user to process 10x larger data at same price as memory with similar performance.
交互式分析 纽约市 311 服务电话记录分析 Dataset NYC 311 service call records 10GB data size Steps 1. 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 语言的完整支持 Call parallelized algorithms Statistics Library R package from Transwarp R Studio Machine Learning Library Call SQL R SQL Interface from Transwarp call sequential algorithm for distributed dataset R Spark Interface from Transwarp Files Hadoop Distributed File System Tables Distributed Columnar Store on SSD Spark RDD Resilient Distributed Dataset in Memory
使用 R 语言进行商圈分析 Dataset PoS transaction records within past three months for all shops in Shanghai city
Summary for Transwarp Inceptor Transwarp 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 TRANSWARP 2014 15
We are hiring 创业公司员工期权 领先行业薪酬水平 SQL 编译器开发工程师 Spark 计算平台开发工程师 New SQL 开发工程师 售前 POC 工程师 测试工程师 WEB 管理软件开发人员 大数据挖掘工程师 http://www.transwarp.io/company.html#join-us TRANSWARP 2014 16
TRANSWARP