王涛:基于Cloudera impala的非关系型数据库sql执行引擎
-
Upload
hdhappy001 -
Category
Technology
-
view
634 -
download
4
description
Transcript of 王涛:基于Cloudera impala的非关系型数据库sql执行引擎
基于Cloudera Impala的 联邦SQL执行引擎 SequoiaSQL
王涛 SequoiaDB(巨杉数据库)CTO [email protected]
提纲
Cloudera Impala 简介 1
SequoiaSQL 增强特性 3
使用场景 4
SequoiaDB 简介 2
性能指标 5
CLOUDERA IMPALA 简介
Real Time SQL Query Engine
SQL-On-Hadoop
IBM BigSQL
SQL-H Stinger Presto
•支持HDFS与HBase数据源 •支持Hive的metastore •支持HQL •接口与Hive保持兼容(JDBC)
volume
•C++执行内核 •运行时代码生成(LLVM) •原生的SQL执行引擎
Cloudera Impala 特性
高性能 通用性
兼容性
通用性
高性能
兼容性
•针对交易与分析系统 •支持从毫秒到小时级查询
价值: 提升应用开发效率 减少学习成本 提升运行性能
Impala 架构
SEQUOIADB简介
Document NoSQL Database
SequoiaDB 文档类NoSQL数据库
• JSON数据类型
• 并行执行引擎
• 线性水平扩张
• MPP – 无单点故障
• 在压缩数据上执行SQL
• 保持数据接近CPU/核
应用程序层
调度层
SequoiaDB 架构图
编目分片
... 数据分片 数据分片 数据分片
数据存储层
...
协调节点
调度层
网络层
应用层
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 ) ;
SEQUOIASQL 增强特性
Federation Engine
SequoiaSQL联邦执行引擎
• SequoiaSQL 是基于开源项目开发的SQL执行引擎 – Cloudera Impala
• 不仅仅是“SQL-on-Hadoop” • 支持JDBC • 兼容Hive驱动 • 增强功能
– 加入SequoiaDB与关系型数据库的读写接口
– 将metastore嵌入SequoiaDB – 增加Update/Delete/Merge语句 – 谓词条件下压
Application
SQL
JDBC
SequoiaSQL Engine Federated Database
元存储在Derby或者其他关系型数据库 需要依赖Hive的配置文件
数据默认存储在HDFS
Metastore嵌入SequoiaDB
SequoiaDB
SequoiaDB SequoiaDB SequoiaDB
元存储在SequoiaDB,无需依赖其他数据库
数据默认存储在SequoiaDB,扩展表可映射 HDFS 和 HBASE
Update/Delete/Merge
SequoiaSQL
查询 添加 更改 删除 MERGE
查询 覆盖添加
查询
半结构化 非结构化 结构化
查询谓词下压,利用数据库索引提升性能
查询
关联
索引扫描
T.Price > 1000 数据存储层 HDFS Database
HDFS
SELECT * FROM T, K WHERE T.Price > 1000 AND T.id = K.id
批量扫描
优势: 1.减少网络数据传输 2.利用数据库索引提升性能
SequoiaSQL 应用架构
HDFS 分布式存储引擎
Hive
MapReduce 分布式计算框架
SequoiaDB
Pig
SequoiaSQL
JDBC/API接口
关系型 数据库
SequoiaSQL 系统架构
编目分片
... 数据分片 数据分片 数据分片
数据存储层
...
调度层
网络层
应用层
协调节点
SequoiaSQL
其他 数据源
DB2
Oracle
HDFS
HBase
MySQL
MongoDB etc…
USE CASES NoSQL in Industry
交易流水归档历史查询
面临的挑战 解决方式 最终结果
• 每天需要入库归档超过100GB数据
• 用户需要能够并发、实时、由多个维度访问超过2年的历史数据
• 当前Oracle数据库无法满足实时查询的需求
• 使用MapReduce与Hive作为ETL处理的补充进行数据清洗和转换
• 使用Hive将最终结果并行加载入SequoiaDB
• 使用SequoiaDB,在常用查询字段上建立多个索引保证查询性能
• 使用SequoiaSQL进行实时数据查询
• 可以在线针对2年内的历史数据进行多条件检索
• 高数据压缩比节省数据存储空间
• 利于细分客户群,发现高价值用户,降低客户流失率
• 帮助自营产品、套餐等设计与创新
• 提升客户体验,进行策略管控
交易流水归档历史查询
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
交易流水归档历史查询
HDFS
当日归档数据
业务系统
数据录入
数据录入
SequoiaDB
客户分群 数据分析
Hive
SequoiaSQL 一级分行用户
二级行管理员
营业厅叫号机
移动设备
Web服务
文本数据
手工输入数据
Web服务
报表展现
精准推送
Hadoop Platform
性能指标
Performance Benchmark
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
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个数据分区组
产品路标规划
Roadmap
产品路标规划
• 其他Join方式实现
• 聚合下压
• 排序下压
• ….
2013.12.31 2014.12.31
• 支持嵌套类型
• 支持数组类型
• 添加其他数据源
• …
• 基于成本的性能优化
• ….