20210124
大数据 | 大数据基础--系统之大数据批处理框架--Hyracks
亲爱的读者朋友大家晚上好,上次我们介绍了一个大数据批处理框架Spark,这次我们来介绍另一个框架Hyracks~
还是先来简单回顾下批处理框架的任务以及一些特征:
- 批处理操作大容量静态数据集,并在计算过程完成后返回结果。
- 批处理模式中使用的数据集通常符合下列特征:
- 有界:批处理数据集代表数据的有限集合。
- 持久:数据通常始终存储在某种类型的持久存储位置中。
- 大量:批处理操作通常是处理极为海量数据集的唯一方法。
- 批处理适合
- 需要访问全套记录才能完成的计算工作
- 对历史数据进行分析
- 批处理不适合
- 对处理时间要求较高的场合
Hyracks简介
- 是由UCI在2013年发布的
- 并行数据计算平台,用于在使用share-nothing的大型集群对大量数据执行数据处理任务
- Hyracks开发的原因
- 数据总量成倍增长
- 社交网络(Facebook:5亿活跃用户,每天超过 5000万状态更新)
- 网络:几万亿的链接
- 数据类型并不总是统一的
- 半结构化数据
- 结构化数据
- 不同的数据模型(如数组等)
- 非传统的数据处理
- 需要使用用户的逻辑来处理数据
- 数据总量成倍增长
Spark与其它平台的对比
- 并行数据库
- 可扩展的数据模型
- 容错机制
- Hadoop
- 更灵活的计算模型
- 通用的运行时处理模型
- 更好(透明)的支持调度
大数据的批处理任务的抽象
需要解决的问题
- 操作的数据形式和结构是什么?
- 应用程序可以对于数据做何种操作?
需要考虑的问题
- 适用的场景/数据是什么?
- 面向的软硬件环境是什么?
- 支撑应用程序之间的界面在哪里?
Hyracks的数据对象
- 在N个站点分区的记录
- 存储有模式的记录,而不仅仅时是key-value
数据对象上的操作

大数据的批处理框架的API
需要解决的问题
- 程序员如何基于框架编写应用程序?
需要考虑的问题
- 面向什么样的程序员?
- 开发的效率?
- 程序的易读性?
- 程序的美感?
- 是否符合传统开发的习惯?
Hyracks使用场景
在设计时考虑了三种可能的用途
- 以高级数据语言为编译目标
- 直接编译为原生Hyracks工程
- 编译Hadoop工程并使用兼容层运行
- 从现有的Hadoop客户端运行Hadoop工程
- 运行原生的Hyracks工程

Hyracks操作
- 接受ByteBuffer对象的统一的push-style迭代器接口
- 操作可以被连接在同一个线程或是不同的线程中运行
- 直接调用/改写底层操作
大数据的批处理系统的系统架构
需要解决的问题
- 系统有哪些模块?
- 模块之间如何交互?
需要考虑的问题
- 有效配合硬件
- 扩展性高
- 效率高
- 弹性好
- 开发容易
- 维护方便
- 升级简单
Hyracks的结构

大数据的批处理系统的基本数据操作
需要解决的问题
- 包括哪些基本数据操作?
- 并行还是串行实现?
- 高效实现算法?
需要考虑的问题
- 有效支撑API
- 容易理解
- 扩展性高
- 效率高
Hyracks操作/连接设计
- 对抽象数据类型的集合的操作
- 实例化期间提供数据模型操作
- 如:
- 排序操作接受一系列比较操作
- 基于散列的分组操作接受一系列散列方法和比较操作
- 散列分区的连接接受散列方法
操作库
• File reader/writers • Mappers • Sorters • Joiners (各种类型) • Aggregators
连接库
• N:M 哈希划分 • N:M 哈希划分合并 (输入有序) • N:M 分区划分(使用分区向量) • N:M 复制 • 1:1
Hyracks数据移动
- 修复用以传输数据的内存块
- 用于迭代序列化数据的游标
- 普通的操作(比较/散列/映射)可以直接在框架中规定数据上执行
- 目的:最小化垃圾回收次数以及最小化数据副本
- 有趣的是:执行约60分钟的请求,总的GC时间约为1.8秒。
大数据的批处理系统中的流程生成
需要解决的问题
- 基本数据操作和用户自定义逻辑的步骤划分
- 基本数据操作和用户自定义逻辑的执行顺序
需要考虑的问题
- 可用性高
- 效率高
- 容易理解
- 容易支持调试工具
Hyracks中的Jobs
- Job是Hyracks客户端提交的操作单位
- Job是operator(操作)和connector(连接)的有向无环数据流
- operator使用/产生数据块
- connector在operator之间再分配/传递数据
实现MapReduce

大数据的批处理系统中的流程调度
需要解决的问题
- 执行过程中如何执行操作?
需要考虑的问题
- 可扩展性高
- 效率高
并行执行的一个例子

大数据的批处理系统中的事务处理
需要解决的问题
- 如何保证执行的正确性
需要考虑的问题
- 结点出错怎么办?
- 分布式系统出现读脏写脏怎么办?
Hyracks容错
- Hadoop/MR 方法: 保存部分结果永久存储;失败后,重做所有的工作 来重建丢失的数据
- 每个进程保留以前的结果,直到不再需要(过程是并行执行的,每个进程的结果其实是结果的一个部分)
大数据的批处理系统中的数据存储机制
需要解决的问题
- 何时存储数据?
- 数据存储成什么形式?
需要考虑的问题
- 高(时间/存储)效率
- 内存满足要求
略
总结
计划介绍的批处理框架Spark&Hyracks已经分析完了,下次介绍实时计算框架storm、spark streaming等,敬请期待~