在 Azure 批处理上执行任务
Perform a task on Azure batch
我是 Azure 批处理的新手。我必须在池中的节点上执行任务。
我使用的方法是在节点上有我想要 运行 的代码。我正在压缩 .class 文件的 jar 并上传到我的 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);
现在当我 运行 这个时,我的任务失败并给出一个错误
access for one of the specified Azure Blob(s) is denied
我如何 运行 使用 Azure 批处理作业任务在节点上的特定代码?
我认为一个好的起点是:(我已经涵盖了大部分有用的 links 以及下面的指导文档,他们将详细说明环境级别变量的使用等,我也包含了一些示例 links。) 希望 material 和下面的示例对您有所帮助。 :)
另外我建议重新创建你的池,如果它是旧的,这将确保你拥有最新版本的节点 运行ning。
- Azure batch learning path:
- Samples & demo link or look here
- Detailed walk through depending on what you are using i.e.
CloudServiceConfiguration
or VirtualMachineConfiguration
link.
从文章中进一步补充:也可以在这里查看:
特别是 this link 将带您完成如何在代码中使用它的指导过程:无论是资源文件还是包,您都需要确保它们已上传并可在批处理级别使用。
连同示例如下:(以下是池级别 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();
对于上面 link 的任务级别表格,示例是:(确保您已正确执行 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"
}
};
进一步补充:无论是 CloudServiceCOhnfiguration
还是 VirtualMachineConfiguration
,应用程序包 **a .zip file**
包含您的任务所需的应用程序二进制文件和支持文件 运行 应用程序。每个应用程序包代表一个特定版本的应用程序。来自参考:4
我尝试了一下并成功了,所以我无法重现上面的错误,看来您可能遗漏了什么。
我是 Azure 批处理的新手。我必须在池中的节点上执行任务。
我使用的方法是在节点上有我想要 运行 的代码。我正在压缩 .class 文件的 jar 并上传到我的 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);
现在当我 运行 这个时,我的任务失败并给出一个错误
access for one of the specified Azure Blob(s) is denied
我如何 运行 使用 Azure 批处理作业任务在节点上的特定代码?
我认为一个好的起点是:(我已经涵盖了大部分有用的 links 以及下面的指导文档,他们将详细说明环境级别变量的使用等,我也包含了一些示例 links。) 希望 material 和下面的示例对您有所帮助。 :)
另外我建议重新创建你的池,如果它是旧的,这将确保你拥有最新版本的节点 运行ning。
- Azure batch learning path:
- Samples & demo link or look here
- Detailed walk through depending on what you are using i.e.
CloudServiceConfiguration
orVirtualMachineConfiguration
link.
从文章中进一步补充:也可以在这里查看:
特别是 this link 将带您完成如何在代码中使用它的指导过程:无论是资源文件还是包,您都需要确保它们已上传并可在批处理级别使用。
连同示例如下:(以下是池级别 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();
对于上面 link 的任务级别表格,示例是:(确保您已正确执行 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"
}
};
进一步补充:无论是 CloudServiceCOhnfiguration
还是 VirtualMachineConfiguration
,应用程序包 **a .zip file**
包含您的任务所需的应用程序二进制文件和支持文件 运行 应用程序。每个应用程序包代表一个特定版本的应用程序。来自参考:4
我尝试了一下并成功了,所以我无法重现上面的错误,看来您可能遗漏了什么。