ESProc高性能计算引擎介绍

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

遍历技术 遍历复用
外存计算优化方向是减少访问量 可复用的遍历减少外存访问量
A 1 =file(“data.txt”).cursor() 2 =channel().groups(;count(1)) 3 >A1.push(A2) 4 =A1.sortx(key) 5 =A2.result().#1 6 =A4.skip((A5-1)\2).fetch@x(2-A5%2).avg(key) 配置同步计算 绑定 排序,遍历过程中处理绑定计算 取出绑定计算的结果,即总记录数 取出中位数记录并计算中位数
单机与集群一致 网络存储系统+自动任务分配 透明化提高代码兼容性,降低开发难度
透明化难以获得最优性能
高性能计算方案因场景而异,可能是矛盾的
透明化只能选择最保险的方法,一般是性能较差的那个 透明化框架对资源消耗严重
透明化
1 2 3
现状分析
轻量级大数据计算引擎
高性能计算技术 应用案例
目录
Contents
集算器
创新大数据计算引擎
高性能计算专家(HPC)
ESProc高性能计算引擎介绍
高性能计算理念
软件改变不了硬件的计算性能
但软件可以设计一些高效(低复杂度)算法,降低计算规模,从而提升计算性能
这类方案通常需要定制化,因地制宜,看菜吃饭 集算器使用了诸多高效算法:
✓ 分组计算 ✓ 关联计算 ✓ 查找定位 ✓ 遍历技术 ✓ 游标与管道 ✓ 并行计算 ✓ ……
集算器 — 开发环境
执行、调试执行、单步执行 设置断点
网格结果所 见即所得, 易于调试; 方便引用中 间结果
语法简单,符合自然思维,比其他高级开发语言更简单 系统信息输出,异常随时查看
集算器 — 应用结构
应用程序
数据计算层
集算器JDBC 集算器脚本(DFX)
集算器IDE
数据存储层
(RDB、NoSQL、TXT、CSV、JSON、Hadoop)
A 1 2 3 =股价表.sort(交易日) =0 =A1.max(A2=if(收盘价>收盘价[1],A2+1,0))
集算脚本
SQL
语法体系更容易描述人的思路 数据模型不限制高效算法实现
思考:按照自然思维怎么做?
集算器 — 面向过程计算
完整的循环分支控制
天然分步、层次清晰、直接引用单元格名无需定义变量
from (select sum(涨跌标志) over(order by 交易日) 不涨日数 from (select 交易日, case when 收盘价>lag(收盘价) over(order by 交易日 ) then 0 else 1 end 涨跌标志 from 股价表) ) group by 不涨日数)
大数据平台对SQL查询关注过多
性能比拼的主要阵地 优化SQL性能几乎无助于降低开发难度
大量过程计算的开发难度还很大
用SQL很难描述,复杂SQL优化效果不好
仍需大量底层的编码,经常编写UDF
提高性能本质上是降低开发难度
复杂运算的自动优化靠不住,需要快速编写高性能算法
难度大
集群透明化
大数据平台努力实现集群透明化
1 2 3
现状分析
轻量级大数据计算引擎
高性能计算技术 应用案例
目录
Contents
4
高性能计算技术
遍历技术
连接解决
存储格式
使用索引
分段并行
集群方案
遍历技术
遍历是大数据计算的基础
延迟游标
有序游标
聚合理解
遍历复用
遍历技术 延迟游标
游标概念
流式读入数据,每次仅计算一小部分
延迟计算
在游标上定义运算,返回结果仍然是游标,可再定义运算
Fra Baidu bibliotek
国产飞腾芯片上运行的润乾集算器可以超越Intel芯片上分布式数据库的性能
1 2 3
现状分析
轻量级大数据计算引擎
高性能计算技术 应用案例
目录
Contents
4
沉重的大数据计算
1 集群
单机性能不被关注, 依靠集群规模
2 内存
避开外存计算困难, 指望巨大内存
3 框架
框架体系庞大复杂, 试图包罗万象
大数据计算开发难度大
4
集算器 — 技术特征
面向过程计算
无缝应用集成
多样性数据源接口
单机优化技术
直接文件计算
多线程并行 自由数据分布和任务分配
无中心集群结构
集算器 — 敏捷语法体系
某支股票最长连续涨了多少交易日
1 select max(连续日数) 2 from (select count(*) 连续日数 3 4 5 6 7 8
一次遍历可返回多个分组结果
遍历技术 聚合理解
从一个集合计算出一个单值或另一个集合都可理解为聚合 高复杂度的排序问题转换为低复杂度的遍历问题
A 1 2 3 =file(“data.txt”).cursor@t() =A1.groups(;top(10,amount)) =A1.groups(area;top(10,amount)) 金额在前10名的订单 每个地区金额在前10名的订单
集算器性能表现
Intel X86芯片 测试用例
SPL读文件计算
连接后并集 连接后交集 多对多连接遍历 有序分组遍历 多步过程计算 大分组 大表关联分组 批量键值查询
69 100
*数据规模:100亿行;集群数量:4
测试结果(时间单位:秒)
国产飞腾芯片
数据库中SQL计算
>1小时 >1小时 >1小时 >1小时
SPL读数据库计算
3.8 3.9 103 647
SPL读文件计算
93 102
SPL读数据库计算
268 2037
272 39
111 15
848 155
566 >1小时
>1小时 2573
>1小时 >1小时
377 56
178 15
>1小时 2493
2106 >1小时
【注】SPL是润乾集算器采用的程序设计语言;SQL是关系数据库采用的程序设计语言
hardware software
高效算法举例 – 分组计算
结果集小 分 组 计 算 结果集大
不能全内存 能够全内存
无需磁盘交互生成临时缓存 · 可并行
针对分组
字段有序
针对分组 字段无序
无需磁盘交互生成临时缓存 · 可并行
需要磁盘交互生成临时缓存 · 无法并行
了解了计算和数据特征,就可以选用适合的算法,从而获得高性能
不立即计算,最终一次性遍历和计算
A B
1 =file(“data.txt”).cursor@t() 2 =A1.select(product==“1”) 3 =A2.derive(quantity*price:amount) 4 =A3.sum(amount)
/创建游标 /过滤 /计算列 /实际计算
相关文档
最新文档