王涛:基于Cloudera impala的非关系型数据库sql执行引擎

27
基于Cloudera Impala联邦SQL执行引擎 SequoiaSQL 王涛 SequoiaDB(巨杉数据库)CTO [email protected]

description

BDTC 2013 Beijing China

Transcript of 王涛:基于Cloudera impala的非关系型数据库sql执行引擎

Page 1: 王涛:基于Cloudera impala的非关系型数据库sql执行引擎

基于Cloudera Impala的 联邦SQL执行引擎 SequoiaSQL

王涛 SequoiaDB(巨杉数据库)CTO [email protected]

Page 2: 王涛:基于Cloudera impala的非关系型数据库sql执行引擎

提纲

Cloudera Impala 简介 1

SequoiaSQL 增强特性 3

使用场景 4

SequoiaDB 简介 2

性能指标 5

Page 3: 王涛:基于Cloudera impala的非关系型数据库sql执行引擎

CLOUDERA IMPALA 简介

Real Time SQL Query Engine

Page 4: 王涛:基于Cloudera impala的非关系型数据库sql执行引擎

SQL-On-Hadoop

IBM BigSQL

SQL-H Stinger Presto

Page 5: 王涛:基于Cloudera impala的非关系型数据库sql执行引擎

•支持HDFS与HBase数据源 •支持Hive的metastore •支持HQL •接口与Hive保持兼容(JDBC)

volume

•C++执行内核 •运行时代码生成(LLVM) •原生的SQL执行引擎

Cloudera Impala 特性

高性能 通用性

兼容性

通用性

高性能

兼容性

•针对交易与分析系统 •支持从毫秒到小时级查询

价值: 提升应用开发效率 减少学习成本 提升运行性能

Page 6: 王涛:基于Cloudera impala的非关系型数据库sql执行引擎

Impala 架构

Page 7: 王涛:基于Cloudera impala的非关系型数据库sql执行引擎

SEQUOIADB简介

Document NoSQL Database

Page 8: 王涛:基于Cloudera impala的非关系型数据库sql执行引擎

SequoiaDB 文档类NoSQL数据库

• JSON数据类型

• 并行执行引擎

• 线性水平扩张

• MPP – 无单点故障

• 在压缩数据上执行SQL

• 保持数据接近CPU/核

应用程序层

调度层

Page 9: 王涛:基于Cloudera impala的非关系型数据库sql执行引擎

SequoiaDB 架构图

编目分片

... 数据分片 数据分片 数据分片

数据存储层

...

协调节点

调度层

网络层

应用层

Page 10: 王涛:基于Cloudera impala的非关系型数据库sql执行引擎

JSON格式与查询 需要更多的时间被行业用户接受

{ name: “Tim”, age: 30, phone: [ 12345, 67890 ] }

CREATE TABLE EMP ( NAME CHAR(10), AGE INTEGER, PHONE1 INTEGER, PHONE2 INTEGER ) ; INSERT INTO EMP VALUES ( “Tim”, 30, 12345, 67890 ) ;

Page 11: 王涛:基于Cloudera impala的非关系型数据库sql执行引擎

SEQUOIASQL 增强特性

Federation Engine

Page 12: 王涛:基于Cloudera impala的非关系型数据库sql执行引擎

SequoiaSQL联邦执行引擎

• SequoiaSQL 是基于开源项目开发的SQL执行引擎 – Cloudera Impala

• 不仅仅是“SQL-on-Hadoop” • 支持JDBC • 兼容Hive驱动 • 增强功能

– 加入SequoiaDB与关系型数据库的读写接口

– 将metastore嵌入SequoiaDB – 增加Update/Delete/Merge语句 – 谓词条件下压

Application

SQL

JDBC

SequoiaSQL Engine Federated Database

Page 13: 王涛:基于Cloudera impala的非关系型数据库sql执行引擎

元存储在Derby或者其他关系型数据库 需要依赖Hive的配置文件

数据默认存储在HDFS

Metastore嵌入SequoiaDB

SequoiaDB

SequoiaDB SequoiaDB SequoiaDB

元存储在SequoiaDB,无需依赖其他数据库

数据默认存储在SequoiaDB,扩展表可映射 HDFS 和 HBASE

Page 14: 王涛:基于Cloudera impala的非关系型数据库sql执行引擎

Update/Delete/Merge

SequoiaSQL

查询 添加 更改 删除 MERGE

查询 覆盖添加

查询

半结构化 非结构化 结构化

Page 15: 王涛:基于Cloudera impala的非关系型数据库sql执行引擎

查询谓词下压,利用数据库索引提升性能

查询

关联

索引扫描

T.Price > 1000 数据存储层 HDFS Database

HDFS

SELECT * FROM T, K WHERE T.Price > 1000 AND T.id = K.id

批量扫描

优势: 1.减少网络数据传输 2.利用数据库索引提升性能

Page 16: 王涛:基于Cloudera impala的非关系型数据库sql执行引擎

SequoiaSQL 应用架构

HDFS 分布式存储引擎

Hive

MapReduce 分布式计算框架

SequoiaDB

Pig

SequoiaSQL

JDBC/API接口

关系型 数据库

Page 17: 王涛:基于Cloudera impala的非关系型数据库sql执行引擎

SequoiaSQL 系统架构

编目分片

... 数据分片 数据分片 数据分片

数据存储层

...

调度层

网络层

应用层

协调节点

SequoiaSQL

其他 数据源

DB2

Oracle

HDFS

HBase

MySQL

MongoDB etc…

Page 18: 王涛:基于Cloudera impala的非关系型数据库sql执行引擎

USE CASES NoSQL in Industry

Page 19: 王涛:基于Cloudera impala的非关系型数据库sql执行引擎

交易流水归档历史查询

面临的挑战 解决方式 最终结果

• 每天需要入库归档超过100GB数据

• 用户需要能够并发、实时、由多个维度访问超过2年的历史数据

• 当前Oracle数据库无法满足实时查询的需求

• 使用MapReduce与Hive作为ETL处理的补充进行数据清洗和转换

• 使用Hive将最终结果并行加载入SequoiaDB

• 使用SequoiaDB,在常用查询字段上建立多个索引保证查询性能

• 使用SequoiaSQL进行实时数据查询

• 可以在线针对2年内的历史数据进行多条件检索

• 高数据压缩比节省数据存储空间

• 利于细分客户群,发现高价值用户,降低客户流失率

• 帮助自营产品、套餐等设计与创新

• 提升客户体验,进行策略管控

Page 20: 王涛:基于Cloudera impala的非关系型数据库sql执行引擎

交易流水归档历史查询

Legacy Systems

Other Sources

New Systems

Text Data

Manual Input

IBM UDB ESE

Oracle 10G

Hive

HDFS

SequoiaSQL

SequoiaDB

ODS & IDS

SAS

SPSS

Web App

R

End Users

Management

Cube Analysts

Data Mart Users

Web App Users

TCPIP

TCPIP

TCPIP

TCPIP

TCPIP

TCPIP

TCPIP

TCPIP

Page 21: 王涛:基于Cloudera impala的非关系型数据库sql执行引擎

交易流水归档历史查询

HDFS

当日归档数据

业务系统

数据录入

数据录入

SequoiaDB

客户分群 数据分析

Hive

SequoiaSQL 一级分行用户

二级行管理员

营业厅叫号机

移动设备

Web服务

文本数据

手工输入数据

Web服务

报表展现

精准推送

Hadoop Platform

Page 22: 王涛:基于Cloudera impala的非关系型数据库sql执行引擎

性能指标

Performance Benchmark

Page 23: 王涛:基于Cloudera impala的非关系型数据库sql执行引擎

SQL1: select ac_nm,appg_date,cst_id,dep_acno,tran_type,tran_amount from sdbmassdata.local_sdb_ch_bank limit 10; SQL2: select count(cst_id) from sdbmassdata.local_sdb_ch_bank;

SQL3: select * from sdbmassdata.local_sdb_ch_bank order by tran_amount limit 10 ; SQL4: select max(tran_amount) from sdbmassdata.local_sdb_ch_bank group by ac_nm,appg_date,cst_id,dep_acno,tran_amount,tran_type limit 10;

SQL5: SELECT cttb.appg_mode ,cttb.appg_date ,cttb.tran_code …<300+字段> ,dhit.cst_tp_code ,dhit.ssn_avg_bal ,dhit.dpstm_term FROM sdbmassdata.local_ctis_txn_tif_bas_f cttb LEFT OUTER JOIN sdbmassdata.local_dep_hist_inf_tmp dhit ON ( cttb.ACT_NO = dhit.DEP_ACNO AND dhit.STAT_DT = '2012-02-01' ) LEFT OUTER JOIN sdbmassdata.local_BANCS_CUSM_F bcf ON (dhit.CST_ID = bcf.CI03_CUST_ACCT_NO) limit 1;

表名 记录数

local_sdb_ch_bank 20,000,000

local_bancs_cusm_f 70,602

local_ctis_txn_tif_bas_f

22,869,263

local_dep_hist_inf_tmp

313,721

Page 24: 王涛:基于Cloudera impala的非关系型数据库sql执行引擎

SequoiaSQL Hive性能对比

0

100

200

300

400

500

600

700

SQL 1 SQL 2 SQL 3 SQL 4 SQL 5

SequoiaSQL

Hive

SequoiaSQL Hive

SQL 1 0.49 96.903

SQL 2 22.28 147.087

SQL 3 316.26 600.164

SQL 4 38.18 231.108

SQL 5 20.69 578.676

环境: 3台物理机 每台7个数据分区组

Page 25: 王涛:基于Cloudera impala的非关系型数据库sql执行引擎

产品路标规划

Roadmap

Page 26: 王涛:基于Cloudera impala的非关系型数据库sql执行引擎

产品路标规划

• 其他Join方式实现

• 聚合下压

• 排序下压

• ….

2013.12.31 2014.12.31

• 支持嵌套类型

• 支持数组类型

• 添加其他数据源

• …

• 基于成本的性能优化

• ….