当前位置: 首页 > ai >正文

Tez原理

Tez 是一个基于 Hadoop YARN 的可扩展的、高性能的计算框架,主要用于在 Hadoop 集群上执行复杂的、有向无环图(DAG)形式的任务。其原理如下:

计算模型

  • Tez 将计算任务表示为有向无环图(DAG),其中顶点表示任务,边表示任务之间的数据依赖关系。这种模型能够更灵活地描述复杂的计算流程,例如在 ETL(Extract,Transform,Load)作业中,可能有多个数据转换步骤,每个步骤都依赖于前一个步骤的输出,Tez 可以很好地处理这种情况。

执行过程

  • 任务调度:Tez 依赖于 YARN 来进行资源管理和任务调度。当一个 Tez 作业提交时,它会向 YARN 请求资源,YARN 会根据集群的资源情况为 Tez 作业分配容器(Container)。Tez 会将 DAG 中的任务分配到这些容器中执行,根据任务之间的依赖关系,有序地启动各个任务。
  • 数据传输:在任务执行过程中,数据在不同任务之间的传输是通过 Shuffle 和 Sort 机制实现的。例如,在 MapReduce 作业中,Map 任务的输出需要经过 Shuffle 阶段才能被 Reduce 任务获取。Tez 对 Shuffle 过程进行了优化,它可以将数据直接从一个任务的输出缓冲区传输到另一个任务的输入缓冲区,减少了数据在磁盘上的读写,提高了数据传输效率。

优化机制

  • 内存管理:Tez 对内存的使用进行了精细的管理。它会根据任务的需求动态地分配和调整内存,尽量将数据缓存在内存中,以减少磁盘 I/O。例如,对于一些中间结果数据,如果内存空间允许,Tez 会将其存储在内存中,供后续任务直接读取,避免了从磁盘读取数据的开销。
  • 任务融合:Tez 允许将多个小任务融合成一个大任务来执行,减少了任务启动的开销。比如,在一个数据处理流程中,如果有多个连续的小任务,它们之间的数据传输量较小,Tez 可以将这些任务合并成一个任务,在同一个容器中执行,这样可以减少任务调度和数据传输的时间。
http://www.xdnf.cn/news/897.html

相关文章:

  • 稳压二极管详解:原理、作用、应用与选型要点
  • 参加新手训练五十题平台 TUST-ACM实验室
  • python全栈-flask
  • 使用open3d将pcd点云按照颜色等级分块显示并令其随颜色变化播放
  • Java并发编程-线程通讯
  • 排序模型(Learning to Rank)
  • HarmonyOS-ArkUI:关键帧动画 keyFrameAnimateTo
  • 四、不确定性推理方法
  • 【项目日记(三)】
  • Linux-编辑器的使用
  • flutter 专题 六十三 Flutter入门与实战作者:xiangzhihong8Fluter 应用调试
  • 住宅 IP 加持,TikTok 多账号运营不受限
  • 【手机】vivo手机应用声音分离方案
  • 字节扣子空间开启内测!附免费邀请码!
  • STM32的BootLoader 从SD卡更新固件
  • 【Postgresql】Postgresql数据库设置免密码操作 免去每次输入密码登录Postgresql数据库 方便本地开发环境调试
  • 4399后端一面
  • Python爬虫实战:获取高考网专业数据并分析,为志愿填报做参考
  • 图论-Floyd算法
  • vue2使用markdown-it解析markdown文本
  • 前端使用 RESTful API 和 GraphQL
  • 目标跟踪中的聚类算法:DBSCAN Kmeans GMM
  • C++如何处理多线程环境下的异常?如何确保资源在异常情况下也能正确释放
  • 速查手册:TA-Lib 超过150种量化技术指标计算全解 - 8. Statistic Functions(统计函数)
  • linux驱动框架——i2c驱动模块的probe过程
  • 蓝桥杯 16.对局匹配
  • 八、模式识别系统
  • 亿固集团携手广东省民宿协会共启绿色民宿人居新范式
  • 【Linux内核设计与实现】第三章——进程管理03
  • Python accumulate 函数详解