蒋步星:轻量级大数据计算引擎

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 大数据的技术本质实际上是高性能。而当前的大数据体系,无论是传统数据库的MPP体系还是HADOOP体系,体系结构都非常复杂,虽然其中有不少开源软件,但应用实施的成本仍然非常高,复杂的框架会消耗大量资源,实际运算性能并不够好,经常要靠加大集群节点数并增强硬件能力来获得期望的性能。

近几年,大数据非常热门,大数据计算的方案也较多,目前,大数据计算机平台有很多,但却越来越沉重,主要是由于这三个方面的原因:

bac028b1ba618344ec9d8ca4624fadb44c09bb69

并不是任何事物都需要沉重的大数据平台,许多还是需要轻量级计算。

轻量级计算需求

  • 大数据的技术本质是高性能

提高性能的需求无处不在

  • 不总是有那么大的数据量

低延迟即时响应业务数据量并不

  • 不总是适合部署大数据平台

即时查询常常有被集成需求 临时性数据处理来不及建 设

  • 大数据平台 不总是可以扩容硬件(内存)

大数据开发难度大

  • 大数据平台对SQL查询关注过多

性能比拼的主要阵地 优化SQL性能几乎无助于降低开 发难度

  • 大量过程计算的开发难度还很大

用SQL很难描述,复杂SQL优化效果不好 仍需大量底 层的编码,经常编写UDF

  • 提高性能本质上是降低开发难度

复杂运算的自动优化靠不住,需要快速编写高性能算 法

举例:漏斗转换器

0079e9a222de99de2c2662a5c4f2ab93ced290dc

集群透明化



让访问集群的时候和单击运算一样,看不见集群。

  • 大数据平台努力实现集群透明化

单机与集群一致 网络存储系统+自动任务分配

透明化提高代码兼容性,降低开发难度

  • 透明化难以获得最优性能

高性能计算方案因场景而异,可能是矛盾的

透明化只能选择最保险的方法,一般是性能较差的那 个,透明化框架对资源消耗严重

透明化与高性能的权衡

  • 数据分布

节点文件系统:可控冗余,内存利用

网络文件系统

  • 任务分配

程序员分配:根据节点能力安排任务,无框架资源消 耗,系统自动分配

轻量级计算的技术特征

  • 目标:过程计算
  • 可集成性
  • 数据源开放性

直接文件计算

  • 注重单机优化

多线程并行

  • 权衡集群透明与高性能

节点文件存储,不用网络文件系统

多个单机运算,不用统一集群框架

集算器 — 技术特征

  • 面向过程计算
  • 无缝应用集成
  • 多样性数据源接口 直接文件计算
  • 单机优化技术 多线程并行
  • 无中心集群结构 自由数据分布和任务分配

集算器 — 敏捷语法体系

某支股票的涨幅交易日

53d9f39c1b6dd7b2562970a405ff7baf6121068c

语法体系更容易描述人的思路

数据模型不限制高效算法实现

f13913c9abe9cc340172b389dcb846d80dd99f17


集算器 — 面向过程计算


完整的循环分支控制

7da86c8dbaa08fec560f0a6759e09db387929037

集算器 — 开发环境

8af337f753c9c61aa012558b9443a8e41f5a843c

集算器 — 应用结构



d3e18dfec02d5447a5d5f208d914956ab30180e7

轻量级计算的技术特征


  • 高效二进制压缩文件、列式存储
  • RDB:Oracle,DB2,MS SQL,MySQL,PG,….
  • TXT/CSV,JSON/XML,EXCEL
  • Hadoop:HDFS,HIVE,HBASE
  • MongoDB,REDIS,…
  • HTTP、ALI-OTS … …
  • 内置接口,即装即用

单机计算技术


e2f9e55a76f0844d63a25c31184ddd0e5d79419d

1、遍历技术

遍历是大数据计算的基础

3ea1dc531f66756c887652e34c00653761068f25

延迟游标

游标概念:

流式读入数据,每次仅计算一小部分

延迟计算 :

在游标上定义运算,返回结果仍然是游标,可再定义运算

不立即计算,最终一次性遍历和计算

b3a8d683bc7f03a5d5a6062e738a99ebded61241

遍历复用

外存计算优化方向是减少访问量

可复用的遍历减少外存访问量

10dd2d8b789d423bf90078771269667515f09acc

一次遍历可返回多个分组结果

聚合理解

从一个集合计算出一个单值或另一个集合都可理解为聚合

高复杂度的排序问题转换为低复杂度的遍历问题

c984edfdd568ecfdcb144b84646783306a2fdddf

有序游标

针对已有序的数据可一次遍历实现大结果集分组运算,减少外存交换。

9fa1e66db6cf29a47f4fcb356cd43df130a0403a

复杂处理需要读出到程序内存中再处理 有序游标有效减少查找和遍历数量。

29b20db1e9483ec11bc284bacd309adbeec718bc

2、连接解决

7d578f5b985c7c2a2387a21abb43df4e6e3eb4ca

区分JOIN

76b5b432587ea154a8d3744882f24cc45bb43eb7

外键指针化

外键需要随机小量频繁访问

内存指针查找大幅提高性能

e081a2b0b03f9de12926082c0354528e4df3a1fa

外键序号化

序号化相当于外存指针化

a5d09ab68cf42938ba7ba03171ea6ece4e671244

不需要再计算Hash值和比较

有序归并

同维表和主子表连接可以先排序后变成有序归并

追加数据的再排序也仍然是低成本的归并计算

1c611cee08ec21ca9ce1977ba016c4114d2426c7

3、存储格式

927ed0428300e1f7eb9136745b08cb53e7478019

压缩二进制

数据类型已存入,无须解析

轻量级压缩

减少硬盘空间

很少占用CPU时间

泛型存储,允许集合数据

可追加

自由列存

自由分配列组

行列存统一 重复值压缩 对上透明访问

过滤优化

只读取与条件相关的列组

1568540108c6e7ffae63cc555ed4f591fd47d082

序号主键

233dc9ea3ab3954e257d2dab2311520b63ffe29e

多层序号式主键

外存指针式外键,高速引用

外存游离记录表示,离散性

天然有序,易于查找

分组针对外键

结果自然对齐有序


主子合一

a3a7b731b0a34b503b49f3e1691be21cf4f31f1c

多层复式表

层次式有序集合 每层均可以有数据结构 同维表与主子表统一 消除对齐式连接


4、使用索引

有序对分查找

有序数据提供对分查找,快速定位

普通定位索引

按键值找到数据

两段式索引提高维护性能

片状索引

连续记录的索引

应用:切片的双向逆序索引

CUBE切片索引的困难

列存索引太大

数据必须实际排序

双向逆序索引

按D1,…,Dn和Dn,…,D1双倍排序

只针对前半部分维度使用片式索引

5、分段并行

ad9296120558a56931c73d6ab0782c926be450e3

文本分段

7ffe5a81d6e00c1010a4e2a853e47c180ad27303

倍增分段

3cdd0c8e35d8a619137632652e2936f7364449bf

73bd84e92453c9fde7d30a092c9324e03ece34b6

分段数足够大,以适应变化的并行数

每段记录数相对平均

数据追加时不必重写所有数据,保持连续性


列存分段

381147e9b0610cb3cece6d1552f994a23665828e

9099849601288e3228e32183a07cb1315d2ec372

有序与对位分段

倍增分段方案解决列存并行困难 各列同步分段

同列连续存储


有序数据的分段点要落在组边界上才能分段并行

504beae32201d6d7d3cfba6a306bbe72121a460f

同维表、主子表需同步分段

9e1d0868e2f3f48cb53e2b94807e454d97c36a93

多路游标

建立多路游标,可继续进行过程计算,会自动并行执行,简化书写难度。

a11542e699596939e4966f1418adf639b9a105ca

集群方案



  • 集群设计原则

确保容错

减少网络传输量

考虑负载均衡

  • 集群计算技术

集群方案 — 无中心设计


  • 服务器集群无中心

集算器没有框架,没有永久的中心主控节点,程序员用代码控制参与计算的节点

  • 无中心不会发生单点失效

所有节点地位都等同,不会发生单点失效,某个节点有故障时整个集群仍然可以运行

  • 计算任务有主控节点

在计算过程中由主控节点临时寻找其它节点参与计算

集群方案 — 负载均衡与容错
  • 具备负载均衡能力

根据每个节点空闲程度(当前正在运行的线程数量)决定是否分配任务, 实现负担和资源的有效平衡

  • 具备容错能力

某个节点失效导致子任务失败,主控程序还会再次将这个子任务分配给

其它有效的节点

集群方案 — 并行逻辑结构


9d47166cfcecd494b77a30db71978da46e4422d3

共享式数据计算分布

36645d895fbce90bb10e020d98fe2948dc9ee842

共享数据源方式:计算分布实现,数据共享读取

d7af3172a6bfa78c6047a05ae9ecf0f610f5eaee

冗余式外存分布

所有任务都需要用到的公共维表复制存储

事务数据分成N个区,根据需要的容错指数循环分区 存储利用率约为1/k(允许k-1个节点失效)

023569f6ed49221bb402b87e961b6ef326cf4109

外存分布 — 数据同步

集算器提供节点之间的同区数据同步功能。

每个节点都是独立的计算机,可以应用内存和外存的计算方法。

677fc0d7ddef3b552e21d9a60913113ef07370db

外存分布 — 动态任务分配

f5fb08740f0e760b540bb4d6cb77b52c8084508b

备胎式内存分布

数据分区分别加载进节点内存

n个节点(每节点一个分区)+k个备份节点

内存利用率n/(n+k)

4c54d4e9940820aa9115f6d14ef6a02f4a40fce4

内存分布 — 静态任务分配

预留备份节点(备胎)不加载任何数据分区

发现有分区在所有可用节点都找不到时,启动找备份节点执行加载该分区

任务直接分配到相应节点,不再动态询问

33d133975963e5963a002b01c6e2c393436fc792

集群维表

大维表分段存入节点机内存

利用内存特性提供随机访问

批量访问+节点过滤降低网络负担

79b3abf91efc311db30dd67179ecc64f954ed9cf

JOIN总结

外键式:小维表、大维表

对齐式:有序归并

避免低效率Hash分段算法

79b3579a61cc564410afe387a86fa5429f960175

集群维表 — 示例 MapReduce->ForkReduce

MapReduce的问题

任务太碎,管理成本过高

难以实现关联运算

Hash Shuffle随意性太强

ForkReduce

批量任务,调度成本低

结合对位分段技术实现关联运算

Shuffle结果有确定分布方案

集群应用 — 异构数据

集算器可以基于同构或异构数据库集群进行结果汇总,为报表输出汇总后的结果集。

00e999b2d3c3fc27892db373b92935d97dd603bd

集群应用 — 异构数据库集群(联合查询)

集算器与报表V5合作提供DQL语言,可基于异构数据库集群进行联合查询,结果汇总后为上层应用提供数据输出服务。

125e75f12572c130e45ffe84106771f4a5b30a24

集群应用 — 协助HADOOP工作

集算器是轻量级、高性能、分布式的计算引擎,解决HADOOP上SQL能力弱、开发难、运算慢的问题,可以极大地缩减大数据平台的搭建周期和实施成本。

60c9c1c9854201ad28e9f3d1f0c828b3d4deac55

集群应用 — 独立工作

集算器作为独立的大数据计算引擎,可自己管理数据,不需要网络文件系统,通过标准的接口为上层应

用提供数据输出服务。

769bfe2dba09b187304986f73f0014e0b8ef56c4

原文发布时间为:2017-11-15

本文作者:蒋步星

本文来自云栖社区合作伙伴“中生代技术”,了解相关信息可以关注“中生代技术”微信公众号

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
6月前
|
人工智能 安全 算法
AI与大数据:智慧城市安全的护航者与变革引擎
AI与大数据:智慧城市安全的护航者与变革引擎
199 1
|
6月前
|
存储 数据采集 大数据
大数据处理与分析技术:驱动智能决策的引擎
本文介绍了大数据处理与分析技术在现代社会中的重要性和应用。从数据采集、存储、处理到分析决策,大数据技术为我们提供了深入洞察和智能决策的能力,推动着各行各业的创新和发展。
244 0
|
12月前
|
存储 分布式计算 Hadoop
【大数据】Hadoop技术解析:大数据处理的核心引擎
【大数据】Hadoop技术解析:大数据处理的核心引擎
767 0
|
25天前
|
分布式计算 大数据 Serverless
云栖实录 | 开源大数据全面升级:Native 核心引擎、Serverless 化、湖仓架构引领云上大数据发展
在2024云栖大会开源大数据专场上,阿里云宣布推出实时计算Flink产品的新一代向量化流计算引擎Flash,该引擎100%兼容Apache Flink标准,性能提升5-10倍,助力企业降本增效。此外,EMR Serverless Spark产品启动商业化,提供全托管Serverless服务,性能提升300%,并支持弹性伸缩与按量付费。七猫免费小说也分享了其在云上数据仓库治理的成功实践。其次 Flink Forward Asia 2024 将于11月在上海举行,欢迎报名参加。
131 1
云栖实录 | 开源大数据全面升级:Native 核心引擎、Serverless 化、湖仓架构引领云上大数据发展
|
19天前
|
存储 数据采集 分布式计算
大数据技术:开启智能时代的新引擎
【10月更文挑战第5天】大数据技术:开启智能时代的新引擎
|
6月前
|
SQL 分布式计算 DataWorks
MaxCompute产品使用合集之DataWorks体验案例绑定如何绑定到正确的maxcomputer引擎上
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
3月前
|
Java Spring 安全
Spring 框架邂逅 OAuth2:解锁现代应用安全认证的秘密武器,你准备好迎接变革了吗?
【8月更文挑战第31天】现代化应用的安全性至关重要,OAuth2 作为实现认证和授权的标准协议之一,被广泛采用。Spring 框架通过 Spring Security 提供了强大的 OAuth2 支持,简化了集成过程。本文将通过问答形式详细介绍如何在 Spring 应用中集成 OAuth2,包括 OAuth2 的基本概念、集成步骤及资源服务器保护方法。首先,需要在项目中添加 `spring-security-oauth2-client` 和 `spring-security-oauth2-resource-server` 依赖。
49 0
|
3月前
|
消息中间件 数据挖掘 Kafka
揭秘大数据时代的极速王者!Flink:颠覆性流处理引擎,让实时数据分析燃爆你的想象力!
【8月更文挑战第29天】Apache Flink 是一个高性能的分布式流处理框架,适用于高吞吐量和低延迟的实时数据处理。它采用统一执行引擎处理有界和无界数据流,具备精确状态管理和灵活窗口操作等特性。Flink 支持毫秒级处理和广泛生态集成,但学习曲线较陡峭,社区相对较小。通过实时日志分析示例,我们展示了如何利用 Flink 从 Kafka 中读取数据并进行词频统计,体现了其强大功能和灵活性。
63 0
|
4月前
|
分布式计算 Apache Spark
|
6月前
|
分布式计算 DataWorks 大数据
MaxCompute操作报错合集之大数据计算的MaxCompute Spark引擎无法读取到表,是什么原因
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
MaxCompute操作报错合集之大数据计算的MaxCompute Spark引擎无法读取到表,是什么原因