在Azure批处理上执行任务

时间:2017-11-22 12:06:47

标签: azure azure-storage azure-batch

我是Azure批处理的新手。我必须在池中的节点上执行任务。

我使用的方法是我有想要在节点上运行的代码。我正在制作.class文件的jar的zip并上传到我的Azure存储帐户,然后获取应用程序ID并将其放入ApplicationPackageReference并添加到我的作业任务中。

String applicationId= "TaskPerformApplicationPack";
ApplicationPackageReference reference = new ApplicationPackageReference().withApplicationId(applicationId);
List<ApplicationPackageReference> list = new ArrayList<ApplicationPackageReference>();
list.add(reference);
TaskAddParameter taskToAdd = new TaskAddParameter().withId("mytask2").withApplicationPackageReferences(list);
taskToAdd.withCommandLine(String.format("java -jar task.jar"));


batchClient.taskOperations().createTask(jobId, taskToAdd);

现在,当我运行此操作时,我的任务无法发出错误

  

拒绝访问其中一个指定的Azure Blob

如何使用azure批处理作业任务在节点上运行特定代码?

1 个答案:

答案 0 :(得分:1)

我认为一个好的开始是:( 我已经介绍了大部分有用的链接以及下面的指导文档,他们将详细介绍使用环境级别变量等,我还包含了一些示例链接好吧。)希望下面的材料和样品能为您提供帮助。 :)

另外我建议重新创建你的游泳池,如果它是旧的,这将确保你的节点以最新版本运行。

进一步从文章中添加:还请查看此处:Application Packages with VM configuration

特别是this链接将引导您完成如何在代码中使用它的指南过程:您还需要确保它们已上载并可在批处理中使用水平。

以及类似的示例:(以下是池级pkg示例)

// Create the unbound CloudPool
CloudPool myCloudPool =
    batchClient.PoolOperations.CreatePool(
        poolId: "myPool",
        targetDedicatedComputeNodes: 1,
        virtualMachineSize: "small",
        cloudServiceConfiguration: new CloudServiceConfiguration(osFamily: "4"));

// Specify the application and version to install on the compute nodes
myCloudPool.ApplicationPackageReferences = new List<ApplicationPackageReference>
{
    new ApplicationPackageReference {
        ApplicationId = "litware",
        Version = "1.1" }
};

// Commit the pool so that it's created in the Batch service. As the nodes join
// the pool, the specified application package is installed on each.
await myCloudPool.CommitAsync();

对于任务级别表单,示例上方的链接为:(请确保您已按照正确提及的步骤here进行操作。

CloudTask task =
    new CloudTask(
        "litwaretask001",
        "cmd /c %AZ_BATCH_APP_PACKAGE_LITWARE%\\litware.exe -args -here");

task.ApplicationPackageReferences = new List<ApplicationPackageReference>
{
    new ApplicationPackageReference
    {
        ApplicationId = "litware",
        Version = "1.1"
    }
};

进一步添加:be CloudServiceCOhnfigurationVirtualMachineConfiguration,应用程序包为**a .zip file**,其中包含运行应用程序所需的应用程序二进制文件和支持文件。每个应用程序包代表应用程序的特定版本。来自参考:4

我试了一下并尝试了并且成功了,所以我无法复制上面的错误,似乎你可能会遗漏一些东西。