20210124

大数据 | 大数据基础--系统之大数据批处理框架--Hyracks

亲爱的读者朋友大家晚上好,上次我们介绍了一个大数据批处理框架Spark,这次我们来介绍另一个框架Hyracks~

还是先来简单回顾下批处理框架的任务以及一些特征:

  • 批处理操作大容量静态数据集,并在计算过程完成后返回结果。
  • 批处理模式中使用的数据集通常符合下列特征:
    • 有界:批处理数据集代表数据的有限集合。
    • 持久:数据通常始终存储在某种类型的持久存储位置中。
    • 大量:批处理操作通常是处理极为海量数据集的唯一方法。
  • 批处理适合
    • 需要访问全套记录才能完成的计算工作
    • 对历史数据进行分析
  • 批处理不适合
    • 对处理时间要求较高的场合

Hyracks简介

  • 是由UCI在2013年发布的
  • 并行数据计算平台,用于在使用share-nothing的大型集群对大量数据执行数据处理任务
  • Hyracks开发的原因
    • 数据总量成倍增长
      • 社交网络(Facebook:5亿活跃用户,每天超过 5000万状态更新)
      • 网络:几万亿的链接
    • 数据类型并不总是统一的
      • 半结构化数据
      • 结构化数据
      • 不同的数据模型(如数组等)
    • 非传统的数据处理
      • 需要使用用户的逻辑来处理数据

Spark与其它平台的对比

  • 并行数据库
    • 可扩展的数据模型
    • 容错机制
  • Hadoop
    • 更灵活的计算模型
    • 通用的运行时处理模型
    • 更好(透明)的支持调度

大数据的批处理任务的抽象

需要解决的问题

  • 操作的数据形式和结构是什么?
  • 应用程序可以对于数据做何种操作?

需要考虑的问题

  • 适用的场景/数据是什么?
  • 面向的软硬件环境是什么?
  • 支撑应用程序之间的界面在哪里?

Hyracks的数据对象

  • 在N个站点分区的记录
  • 存储有模式的记录,而不仅仅时是key-value

数据对象上的操作

1611500386772

大数据的批处理框架的API

需要解决的问题

  • 程序员如何基于框架编写应用程序?

需要考虑的问题

  • 面向什么样的程序员?
  • 开发的效率?
  • 程序的易读性?
  • 程序的美感?
  • 是否符合传统开发的习惯?

Hyracks使用场景

在设计时考虑了三种可能的用途

  • 以高级数据语言为编译目标
    • 直接编译为原生Hyracks工程
    • 编译Hadoop工程并使用兼容层运行
  • 从现有的Hadoop客户端运行Hadoop工程
  • 运行原生的Hyracks工程
1611500568694

Hyracks操作

  • 接受ByteBuffer对象的统一的push-style迭代器接口
  • 操作可以被连接在同一个线程或是不同的线程中运行
  • 直接调用/改写底层操作

大数据的批处理系统的系统架构

需要解决的问题

  • 系统有哪些模块?
  • 模块之间如何交互?

需要考虑的问题

  • 有效配合硬件
  • 扩展性高
  • 效率高
  • 弹性好
  • 开发容易
  • 维护方便
  • 升级简单

Hyracks的结构

1611500722478

大数据的批处理系统的基本数据操作

需要解决的问题

  • 包括哪些基本数据操作?
  • 并行还是串行实现?
  • 高效实现算法?

需要考虑的问题

  • 有效支撑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

1611501202768

大数据的批处理系统中的流程调度

需要解决的问题

  • 执行过程中如何执行操作?

需要考虑的问题

  • 可扩展性高
  • 效率高

并行执行的一个例子

1611501317212

大数据的批处理系统中的事务处理

需要解决的问题

  • 如何保证执行的正确性

需要考虑的问题

  • 结点出错怎么办?
  • 分布式系统出现读脏写脏怎么办?

Hyracks容错

  • Hadoop/MR 方法: 保存部分结果永久存储;失败后,重做所有的工作 来重建丢失的数据
  • 每个进程保留以前的结果,直到不再需要(过程是并行执行的,每个进程的结果其实是结果的一个部分)

大数据的批处理系统中的数据存储机制

需要解决的问题

  • 何时存储数据?
  • 数据存储成什么形式?

需要考虑的问题

  • 高(时间/存储)效率
  • 内存满足要求

总结

计划介绍的批处理框架Spark&Hyracks已经分析完了,下次介绍实时计算框架storm、spark streaming等,敬请期待~