2021SC@SDUSC hadoop源码分析(九)

2021SC@SDUSC

本篇我将对hadoop-tools中的Resource Estimator Service进行分析

Resource Estimator Service

概念:

原因:

对企业集群来说,估算工作资源需求仍然是一个重要且具有挑战性的问题。不断增加的工作负载复杂性放大了这一点,即从传统的批处理作业到交互式查询,再到流式传输和最近的机器学习作业。这导致作业依赖于多个计算框架,如Tez、MapReduce、Spark等。,集群的共享特性进一步加剧了这个问题。当前最先进的解决方案依赖于用户专业知识来估计作业的资源需求(例如:减压器数量或容器内存大小等)。),既繁琐又低效。

集群工作负载中,很大一部分是重复作业,所以该方法就是提出的一个框架不可知的黑盒解决方案,自动对重复作业进行资源需求估计。

目的:

  • 对于定期作业,分析其历史日志并预测其新运行的资源需求。
  • 支持各种类型的作业日志。
  • 扩展到万亿字节的作业日志。

体系架构:

 

Hadoop-resourceestimator主要由三个模块组成:Translator, SkylineStore and Estimator.

1.ResourceSkyline用于描述作业在其生命周期内的资源利用率。更具体地说,它使用RLESparseResourceAllocation来记录容器分配信息。RecurrenceId用于标识循环管道的特定运行。管道可以由多个作业组成,每个作业都有一个资源麒麟以表征其资源利用。

2.Translator 分析作业日志,提取他们的 ResourceSkylines 并且存储到SkylineStore.SingleLineParser解析日志流中的一行,并提取 ResourceSkyline.由于作业日志可能有各种格式,因此需要不同的单线分析器实现方式,日志分析器启动单线分析器基于用户配置。目前Hadoop-resourceestimator提供了两种实现单线分析器:NativeSingleLineParser支持优化的本机格式,并且RMSingleLineParser解析Hadoop系统中生成的YARN ResourceManager logs。

3.SkylineStore作为Hadoop-resourceestimator的存储层,由两部分组成。HistorySkylineStore由提取翻译者存储ResourceSkylines。它支持四个操作:添加历史、删除历史、更新历史和获取历史。添加历史记录追加 new ResourceSkylines ,而更新历史记录会删除所有 ResourceSkylines,并重新插入新的 ResourceSkylinesPredictionSkylineStore存储预测的RLESparseResourceAllocation由估计器生成。它支持两个操作:添加估计和获取估计。

4.Estimator根据循环管道的历史运行预测其资源需求,将预测存储到the SkylineStore 并对YARN (YARN-5326)进行循环资源预留。Solver阅读所有历史ResourceSkylines并预测其新的资源需求RLESparseResourceAllocation。目前Hadoop-resourceestimator提供了LPSOLVER进行预测(线性规划模型的细节可以在论文中找到)。还有一个基本解算器将预测的资源需求转化为ReservationSubmissionRequest它被不同的求解器实现用来在纱上进行循环资源预留。

5.ResourceEstimationServiceHadoop-resourceestimator包装成一个微服务,可以很容易地部署在集群中。它提供了一组REST APIs,允许用户解析指定的作业日志,查询pipeline的历史ResourceSkylines,查询管道的预测资源需求,并运行 SOLVER如果预测不存在,删除ResourceSkylines in the SkylineStore.

userge

这里让$HADOOP_ROOT表示Hadoop安装目录。如果你自己构建Hadoop,$HADOOP_ROOT存在Hadoop-dist/target/Hadoop-$ VERSION。资源估计器服务的位置,$ ResourceEstimatorServiceHome,是$ HADOOP _ ROOT/share/HADOOP/tools/resource estimator。它包含3个文件夹:容器,主配置文件和数据。请注意,用户可以使用默认配置的资源估算器服务。

  • 容器包含资源估算器服务的运行脚本。

  • 主配置文件:包含资源估算器服务的配置文件。

  • 数据包含用于运行资源估算器服务示例的示例日志。

启动估算器

首先,复制配置文件(位于$ resourcestimatservicehome/conf/)到$HADOOP_ROOT/etc/hadoop。

启动估算器的脚本是起始估计量。

$ CD $ resourcestimatservicehome $ bin/start-estimator . sh

启动web服务器,用户可以通过REST APIs使用资源估算服务。

运行估算器

资源估计器服务的URI是http://0.0.0.0,默认服务端口为9998(在中配置$ resourcestimaltervicehome/conf/resource estimator-config . XML).在…里$ resourcestimatservicehome/data,有一个示例日志文件resourceEstimatorService.txt其中包含两次运行的tpch_q12查询作业的日志。

  • 解析作业日志:POST http://URI:port/resource estimator/translator/LOG _ FILE _ DIRECTORY

发送POST http://0 . 0 . 0 . 0:9998/resource estimator/translator/data/resource estimator service . txt。底层估计器将从日志文件中提取资源线,并将它们存储在作业历史数据库中。

  • 查询作业的历史history ResourceSkylines:GET http://URI:port/resource estimator/skylinestore/history/{ pipeline id }/{ runId }

发送GET http://0 . 0 . 0 . 0:9998/resource estimator/sky linestore/history/*/*,底层估计器将返回历史上所有的记录。您应该能够看到两次运行tpch_q12的history ResourceSkylines:tpch_q12_0和tpch_q12_1。请注意,两者都有pipelineId和runId字段支持通配符操作。

  • 预测作业的资源天际线需求:GET http://URI:port/resource estimator/estimator/{ pipeline id }

发送http://0 . 0 . 0 . 0:9998/resource estimator/estimator/tpch _ q12,底层估算器将根据作业的历史资源线预测新运行的作业资源需求,并将预测的资源需求存储到作业估算天际线存储。

  • 查询作业的估计资源天际线:GET http://URI:port/resource estimator/skylinestore/estimation/{ pipeline id }

发送http://0 . 0 . 0 . 0:9998/resource estimator/sky linestore/estimation/tpch _ q12,底层估计器将返回tpch_q12作业的历史资源需求估计。请注意,对于jobEstimation SkylineStore,它不支持通配符操作。

  • 删除作业的历史资源skyline:DELETE http://URI:port/resource estimator/skylinestore/history/{ pipelineId }/{ runId }

发送http://0 . 0 . 0 . 0:9998/resource estimator/sky linestore/history/tpch _ q12/tpch _ q12 _ 0,底层估计器将删除tpch_q12_0的ResourceSkyline记录。重新发送GET http://0 . 0 . 0 . 0:9998/resource estimator/sky linestore/history/*/*,基础估计器将只返回tpch_q12_1的ResourceSkyline。

运行估算器:

停止估算器的脚本是停止估计量。

$ CD $ resourcestimatorservicehome $ bin/stop-estimator . sh

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值