【研发类-框架和库Skills】azure-compute-batch-java 技能

【研发类-框架和库Skills】azure-compute-batch-java 技能
Azure Batch SDK for Java。运行大规模并行和HPC批处理作业包括池、作业、任务和计算节点。技能概述azure-compute-batch-java 技能提供了Azure Batch SDK for Java的完整使用指南。Azure Batch是一项托管服务用于在Azure中运行大规模并行和高性能计算HPC批处理作业。该技能帮助开发者管理池、作业、任务和计算节点实现高效的批处理计算。下载地址agentic-awesome-skills/skills/azure-compute-batch-java at main · sickn33/agentic-awesome-skills · GitHub主要功能池管理: 创建、调整、删除和管理计算节点池作业管理: 创建、监控和终止批处理作业任务管理: 创建、监控和管理计算任务节点操作: 管理计算节点包括重启和远程登录作业调度: 创建和管理定期运行的作业计划自动缩放: 根据工作负载动态调整池大小触发条件在以下情况下应该调用此技能:需要运行大规模并行批处理作业实现高性能计算HPC工作负载管理Azure Batch池和计算节点创建和调度批处理任务需要动态缩放计算资源核心概念概念描述Pool运行任务的计算节点集合Job任务的逻辑分组Task计算单元命令/脚本Node执行任务的虚拟机Job Schedule定期作业创建安装方法dependencygroupIdcom.azure/groupIdartifactIdazure-compute-batch/artifactIdversion1.0.0-beta.5/version/dependency使用示例示例1: 创建客户端import com.azure.compute.batch.BatchClient;import com.azure.compute.batch.BatchClientBuilder;import com.azure.identity.DefaultAzureCredentialBuilder;// 使用Microsoft Entra ID推荐BatchClient batchClient new BatchClientBuilder().credential(new DefaultAzureCredentialBuilder().build()).endpoint(System.getenv(AZURE_BATCH_ENDPOINT)).buildClient();// 使用共享密钥凭据import com.azure.core.credential.AzureNamedKeyCredential;String accountName System.getenv(AZURE_BATCH_ACCOUNT);String accountKey System.getenv(AZURE_BATCH_ACCESS_KEY);AzureNamedKeyCredential sharedKeyCreds new AzureNamedKeyCredential(accountName, accountKey);BatchClient batchClient new BatchClientBuilder().credential(sharedKeyCreds).endpoint(System.getenv(AZURE_BATCH_ENDPOINT)).buildClient();示例2: 创建池import com.azure.compute.batch.models.*;batchClient.createPool(new BatchPoolCreateParameters(myPoolId, STANDARD_DC2s_V2).setVirtualMachineConfiguration(new VirtualMachineConfiguration(new BatchVmImageReference().setPublisher(Canonical).setOffer(UbuntuServer).setSku(22_04-lts).setVersion(latest),batch.node.ubuntu 22.04)).setTargetDedicatedNodes(2).setTargetLowPriorityNodes(0),null);示例3: 创建作业和任务// 创建作业batchClient.createJob(new BatchJobCreateParameters(myJobId, new BatchPoolInfo().setPoolId(myPoolId)).setPriority(100).setConstraints(new BatchJobConstraints().setMaxWallClockTime(Duration.ofHours(24)).setMaxTaskRetryCount(3)),null);// 创建单个任务BatchTaskCreateParameters task new BatchTaskCreateParameters(task1, echo Hello World);batchClient.createTask(myJobId, task);// 创建多个任务ListBatchTaskCreateParameters taskList Arrays.asList(new BatchTaskCreateParameters(task1, echo Task 1),new BatchTaskCreateParameters(task2, echo Task 2),new BatchTaskCreateParameters(task3, echo Task 3));BatchTaskGroup taskGroup new BatchTaskGroup(taskList);BatchCreateTaskCollectionResult result batchClient.createTaskCollection(myJobId, taskGroup);示例4: 监控任务// 获取任务计数BatchTaskCountsResult counts batchClient.getJobTaskCounts(myJobId);System.out.println(Active: counts.getTaskCounts().getActive());System.out.println(Running: counts.getTaskCounts().getRunning());System.out.println(Completed: counts.getTaskCounts().getCompleted());// 获取任务输出import com.azure.core.util.BinaryData;import java.nio.charset.StandardCharsets;BinaryData stdout batchClient.getTaskFile(myJobId, task1, stdout.txt);System.out.println(new String(stdout.toBytes(), StandardCharsets.UTF_8));示例5: 自动缩放BatchPoolEnableAutoScaleParameters autoScaleParams new BatchPoolEnableAutoScaleParameters().setAutoScaleEvaluationInterval(Duration.ofMinutes(5)).setAutoScaleFormula($TargetDedicatedNodes min(10, $PendingTasks.GetSample(TimeInterval_Minute * 5)););batchClient.enablePoolAutoScale(myPoolId, autoScaleParams);最佳实践使用Entra ID: 优先于共享密钥进行身份验证使用管理SDK管理池: azure-resourcemanager-batch支持托管标识批量创建任务: 使用createTaskCollection或createTasks创建多个任务正确处理LRO: 池调整大小、删除操作是长时间运行的监控任务计数: 使用getJobTaskCounts跟踪进度设置约束: 配置maxWallClockTime和maxTaskRetryCount使用低优先级节点: 为容错工作负载节省成本启用自动缩放: 根据工作负载动态调整池大小环境变量AZURE_BATCH_ENDPOINThttps://account.region.batch.azure.com AZURE_BATCH_ACCOUNTaccount-name AZURE_BATCH_ACCESS_KEYaccount-key相关资源Maven包: Maven Central: com.azure:azure-compute-batchGitHub: azure-sdk-for-java/sdk/batch/azure-compute-batch at main · Azure/azure-sdk-for-java · GitHubAPI文档: com.azure.compute.batch Package | Microsoft Learn产品文档: https://learn.microsoft.com/azure/batch/REST API: https://learn.microsoft.com/rest/api/batchservice/示例: https://github.com/azure/azure-batch-samples限制说明仅当任务明确符合上述范围时使用此技能不要将输出视为环境特定验证、测试或专家审查的替代品如果缺少所需的输入、权限、安全边界或成功标准请停止并寻求澄清