1. 正文

1.1. 任务描述文件

前文提到过,HTCondor是通过condor_submit命令将提交任务的,这个命令需要提供一个任务描述文件。这个任务描述文件详细描述了任务运行的需求情况,如下所示:

universe = vanilla
requirements = (Arch == "INTEL" || Arch == "X86_64") && (OpSys == "WINDOWS") && (Machine == "charlee-PC" || Machine == "DESKTOP-OVHV440")
executable = D:\Work\HTC\Work\bin\TaskProgram.exe
should_transfer_files = YES
when_to_transfer_output = on_exit
notification = complete
skip_filechecks = true arguments = 0
initialdir = D:\Work\HTC\Work\0
transfer_input_files = input.txt
transfer_output_files = output.dat
output = $(CLUSTER)_$(PROCESS).out
log = $(CLUSTER)_$(PROCESS).log
error = $(CLUSTER)_$(PROCESS).error
queue arguments = 1
initialdir = D:\Work\HTC\Work\1
transfer_input_files = input.txt
transfer_output_files = output.dat
output = $(CLUSTER)_$(PROCESS).out
log = $(CLUSTER)_$(PROCESS).log
error = $(CLUSTER)_$(PROCESS).error
queue ... arguments = 15
initialdir = D:\Work\HTC\Work\15
transfer_input_files = input.txt
transfer_output_files = output.dat
output = $(CLUSTER)_$(PROCESS).out
log = $(CLUSTER)_$(PROCESS).log
error = $(CLUSTER)_$(PROCESS).error
queue

universe参数表示HTCondor的运行环境,默认为vanilla。vanilla提供的功能会少一些,但是使用也会较为方便。如果要使用一些高级的功能,可以使用standard环境,standard环境提供了断点和迁移的功能,不过需要一些额外的重链接操作生成特定的可执行程序。

requirements参数表示该一系列任务的需求。HTCondor采取了一种ClassAds匹配策略,每台计算机会一直在Pool中广播关于自己资源的Ad,通过这个参数,可以匹配该任务是否与该计算机适配。这里设置的意思是选择X86的Windows机器,且机器名称为"charlee-PC"或"DESKTOP-OVHV440"。使用"name == "slot1@USER-EHN3KRBP1V"的形式,甚至可以指定到某一核来运行。

executable也就是上一篇中实现的可执行程序。

should_transfer_files表示使用文件传输机制。文件传输机制也就是任务程序需要的数据,跟随任务程序一起发送到任务机中运行。如果不使用文件传输机制,就需要如NFS或AFS这样的共享文件系统。

when_to_transfer_output = on_exit表示当任务程序完成之后,会有输出的文件一起传送回本机。

接下来arguments开头queue结尾的代码描述了16组任务的详细描述。initialdir是初始化目录,也就是上一节中创建的每个分任务的目录。

transfer_input_files表示传送到任务机的文件。这个参数可以设置成具体的文件,目录,设置是可执行程序依赖的dll。注意发送到任务机后这些文件与执行任务文件在同一个目录中。

when_to_transfer_output表示发送回本机的文件。当任务程序运行完成后,会生成处理好的数据,可以通过这个参数将文件传送回本机。

output表示任务程序的输出文件,可以截获任务程序的stdout流。

log表示集群执行任务程序的状态,一般是HTCondor框架自动生成。

error表示任务程序的错误文件,可以截获任务程序的stderr流。

1.2. 提交任务

在命令提示符窗口中输入condor_submit指令:

可以看到成功提交后,返回了一个任务ID号。可以通过condor_q指令查看当前的任务队列状态:

ST这一列的I代表idle,也就是闲置的。这时由于任务刚提交上去,还来不及匹配任务机器或者没有更新状态,多刷新几次,可以看到这一栏会编程R,也就是Run,表示运行状态:

继续输入condor_status,查看当前计算机资源的情况。这时的状态刷新会更慢些,也可以多输入几次:

State表示资源占用情况,Claimed表示已占用,Claimed表示未占用。Activity表示当前的活动状态,Idle就是闲置,Busy表示繁忙。

通过以上指令,可以查看当前任务是否正常。等待直到condor_q中的任务队列为空,就说明当前所有的任务已经完成了。

1.3. 返回结果

根据任务描述文件,任务程序会返回一个输出数据output.dat已经相关的日志信息.log、.out、.error。任务完成后会回传到各自的初始化目录中:

.out是任务程序的stdout流,可以用来输出信息;.error是任务程序的stderr流,可以用来输出错误信息。在任务程序中输出信息和日志是必要的,可以第一事件排查是哪一段代码出问题。如果连这两个文件都没有,可以考虑是否是HTCondor的环境配置问题,或者任务描述文件是否出错。

.log是HTCondor的输出日志,可以用来参考。output.dat就是任务程序的输出数据了,当然这个数据因任务程序而异,任务程序输出什么,任务描述文件就返回对应的数据,当然也可以什么都不用返回。

在HTCondor任务程序计算的过程中,会把任务程序传送到对应的任务机器,也就是任务机器HTCondor安装目录的execute目录中,运行时会看到任务程序,以及传送过来的数据等:

当然,在运行完成后,这个execute目录就会自动清空。

至此,一个简单的分布式计算流程就算完成了。实际的运用当然没这么简单,但是总体的思路都是这样的:

拆分任务——提交任务——监视任务——任务完成——合并结果。

2. 相关

代码和数据地址

上一篇

目录

下一篇

高通量计算框架HTCondor(五)——分布计算的更多相关文章

  1. 高通量计算框架HTCondor(一)——概述

    目录 1. 正文 2. 目录 3. 参考 4. 相关 1. 正文 HTCondor是威斯康星大学麦迪逊分校构建的分布式计算软件和相关技术,用来处理高通量计算(High Throughput Compu ...

  2. 高通量计算框架HTCondor(四)——案例准备

    目录 1. 正文 1.1. 任务划分 1.2. 任务程序 2. 相关 1. 正文 1.1. 任务划分 使用高通量计算第一步就是要针对密集运算任务做任务划分.将一个海量的.耗时的.耗资源的任务划分成合适 ...

  3. 高通量计算框架HTCondor(六)——拾遗

    目录 1. 正文 1.1. 一些问题 1.2. 使用建议 2. 相关 1. 正文 1.1. 一些问题 如果真正要将HTCondor高通量计算产品化还需要很多工作要做,HTCondor并没有GUI界面, ...

  4. 高通量计算框架HTCondor(二)——环境配置

    目录 1. 概述 2. 安装 3. 结果 4. 相关 1. 概述 HTCondor是开源跨平台的分布式计算框架,在其官网上直接提供了源代码和Windows.Linux以及MacOS的安装包.因为平台限 ...

  5. 高通量计算框架HTCondor(三)——使用命令

    目录 1. 目录 2. 进程 3. 命令 3.1. condor_q 3.2. condor_status 3.3. conodr_submit 3.4. conodr_rm 4. 相关 1. 目录 ...

  6. Vue.js-----轻量高效的MVVM框架(五、计算属性)

    #基础例子 <div id="dr01"> <h4>#基础例子</h4> <div> num01={{num01}}, num02= ...

  7. (第4篇)hadoop之魂--mapreduce计算框架,让收集的数据产生价值

    摘要: 通过前面的学习,大家已经了解了HDFS文件系统.有了数据,下一步就要分析计算这些数据,产生价值.接下来我们介绍Mapreduce计算框架,学习数据是怎样被利用的. 博主福利 给大家赠送一套ha ...

  8. 译 - 高可用的mesos计算框架设计

    原文地址 http://mesos.apache.org/documentation/latest/high-availability-framework-guide/ 阅读建议:有写过或者看过Mes ...

  9. 实时计算框架:Flink集群搭建与运行机制

    一.Flink概述 1.基础简介 Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算.Flink被设计在所有常见的集群环境中运行,以内存执行速度和任意规模来执行计算.主要特性包 ...

随机推荐

  1. html2canvas生成图片报错处理办法

    详见大佬博客链接: link.(https://www.jianshu.com/p/22bd5b98e38a) 需要注意的是要生成的网页中带的网络图片地址(如放在阿里云服务器图库的图片)经常有跨域报错 ...

  2. FreeSql配合仓储实现软删除

    该篇内容由个人博客点击跳转同步更新!转载请注明出处! 前段时间使用FreeSql作为ORM,写了一个简单的CMS,在这里总结一下其中的使用心得. 仓储配合全局过滤器 1. 统一的删除标志 如:数据库字 ...

  3. Python4_数据库相关操作

    ====================================================== 参考链接: PyCharm IDE 链接sqlite.建表.添加.查询数据:https:/ ...

  4. 关于SAM和广义SAM

    关于SAM和广义SAM 不是教程 某些思考先记下来 SAM 终于学会了这个东西诶...... 一部分重要性质 确定一个重要事情,S构造出的SAM的一个重要性质是当且仅当对于S的任意一个后缀,可以从1号 ...

  5. 【题解】CF1056F Write the Contest(三分+贪心+DP)

    [题解]CF1056F Write the Contest(三分+贪心+DP) 最优化问题的三个解决方法都套在一个题里了,真牛逼 最优解应该是怎样的,一定存在一种最优解是先完成了耗时长的任务再干别的( ...

  6. 我终于懂得如何使用matplotlib进行画图

    一 前言 本篇文章带大家快速入门如何使用matplotlib画出精美数学的图片:看完本篇文章你将获得熟悉并简单使用matplotlib工具,会画基本得折现图,散点图,sin,cos图,一张画布画出多图 ...

  7. 基于 Blazui 的 Markdown 编辑器 Blazui.Markdown 尝鲜

    想做一个文档平台用来存放和展示 Blazui 的文档,然后基于 Markdown 写文档,但缺一个好用的 Blazor Markdown 编辑器,所以就顺便写一个了,功能上基本抄的 https://p ...

  8. 从头学pytorch(十六):VGG NET

    VGG AlexNet在Lenet的基础上增加了几个卷积层,改变了卷积核大小,每一层输出通道数目等,并且取得了很好的效果.但是并没有提出一个简单有效的思路. VGG做到了这一点,提出了可以通过重复使⽤ ...

  9. C#事件(Event): 发布符合 .NET Framework Guidelines 的事件

    本文翻译整理自:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/events/how-to-publish-event ...

  10. Celery 收下这捆芹菜!

    目录 Celery简介 Celery构成 Task Broker Worker Backend Celery使用 安装 基本使用 异步任务: delay 延迟任务: apply_async 周期任务: ...