流单元(SU)表示分配给运行Azure 流分析作业的计算资源。 SU 数越大,分配给作业的 CPU 和内存资源越多。
自动缩放功能会根据您定义的规则动态调整 SU。 可以在Azure门户中或使用本地计算机上的流分析持续集成和持续交付(CI/CD)工具为流分析作业配置自动缩放设置。
本文介绍如何使用流分析 CI/CD 工具为流分析作业配置自动缩放设置。 若要了解有关Azure门户中自动缩放作业的详细信息,请参阅自动缩放流单元(预览版)。
流分析 CI/CD 工具可让您指定最大流单元数,并配置一组规则来对您的作业进行自动缩放。 然后,它确定是添加 SU(以处理负载增加)还是减少 SU 数(计算资源处于空闲状态时)。
下面是自动缩放设置的示例:
- 如果最大 SU 数量设置为 12,则当该作业在过去 2 分钟内的平均 SU 使用率超过 75% 时,增加 SU 数量。
先决条件
若要完成本文中的步骤,需要:
- 本地计算机上的流分析项目。 按照 本指南 创建一个。
- Azure 中正在运行的流分析作业。
配置自动缩放设置
方案 1:配置本地流分析项目的设置
如果本地计算机上有一个正在运行的流分析项目,请执行以下步骤来配置自动缩放设置:
在Visual Studio Code中打开流分析项目。
在 终端 面板中运行以下命令以安装流分析 CI/CD 工具:
npm install -g azure-streamanalytics-cicd以下是
azure-streamanalytics-cicd支持的命令列表:命令 Description build为Visual Studio Code中的流分析项目生成标准Azure 资源管理器模板(ARM 模板)。 localrun在 Visual Studio Code 中本地运行流分析项目 test在 Visual Studio Code 中测试流分析项目。 addtestcase在Visual Studio Code中添加流分析项目的测试用例。 autoscale为自动缩放设置生成 ARM 模板文件。 help显示有关特定命令的详细信息。 生成项目:
azure-streamanalytics-cicd build --v2 --project ./asaproj.json --outputPath ./Deploy如果成功生成项目,将在 “部署 ”文件夹下创建两个 JSON 文件。 一个是 ARM 模板文件,另一个是参数文件。
Note
强烈建议你对更新的 ARM 模板架构使用
--v2此选项。 更新后的架构的参数较少,但保留与以前的版本相同的功能。将来将弃用旧的 ARM 模板。 之后,只有通过创建的
build --v2模板才会收到更新或 bug 修复。配置自动缩放设置。 使用
azure-streamanalytics-cicd autoscale命令添加参数键和值。参数键 价值 示例 capacity最大 SU 数(1/3、2/3、1,最多 66 个 SU V2) 2metrics用于自动缩放规则的指标 ProcessCPUUsagePercentageResourceUtilizationtargetJobName项目名称 ClickStream-FilteroutputPathARM 模板的输出路径 ./Deploy下面是一个示例:
azure-streamanalytics-cicd autoscale --capacity 2 --metrics ProcessCPUUsagePercentage ResourceUtilization --targetJobName ClickStream-Filter --outputPath ./Deploy如果成功配置自动缩放设置,则会在 “部署 ”文件夹下创建两个 JSON 文件。 一个是 ARM 模板文件,另一个是参数文件。
下表列出了可用于定义自动缩放规则的指标:
Metric REST API 中的名称 单位 Aggregation 尺寸 时间粒度 DS 导出 失败的函数请求
失败的函数请求数AMLCalloutFailedRequests计数 总计(总和) LogicalName、PartitionId、ProcessorInstance、NodeNamePT1M 是的 函数事件数
函数事件AMLCalloutInputEvents计数 总计(总和) LogicalName、PartitionId、ProcessorInstance、NodeNamePT1M 是的 函数请求数
函数请求AMLCalloutRequests计数 总计(总和) LogicalName、PartitionId、ProcessorInstance、NodeNamePT1M 是的 数据转换错误
数据转换错误ConversionErrors计数 总计(总和) LogicalName、PartitionId、ProcessorInstance、NodeNamePT1M 是的 输入数据反序列化错误
输入反序列化错误DeserializationError计数 总计(总和) LogicalName、PartitionId、ProcessorInstance、NodeNamePT1M 是的 无序事件
失序事件DroppedOrAdjustedEvents计数 总计(总和) LogicalName、PartitionId、ProcessorInstance、NodeNamePT1M 是的 早期输入事件
早期输入事件EarlyInputEvents计数 总计(总和) LogicalName、PartitionId、ProcessorInstance、NodeNamePT1M 是的 运行时错误
运行时错误Errors计数 总计(总和) LogicalName、PartitionId、ProcessorInstance、NodeNamePT1M 是的 输入事件字节数
输入事件字节InputEventBytes字节 总计(总和) LogicalName、PartitionId、ProcessorInstance、NodeNamePT1M 是的 输入事件数
输入事件InputEvents计数 总计(总和) LogicalName、PartitionId、ProcessorInstance、NodeNamePT1M 是的 积压的输入事件
积压的输入事件InputEventsSourcesBacklogged计数 平均值、最大值、最小值 LogicalName、PartitionId、ProcessorInstance、NodeNamePT1M 是的 收到的输入源数
收到的输入源数InputEventsSourcesPerSecond计数 总计(总和) LogicalName、PartitionId、ProcessorInstance、NodeNamePT1M 是的 延迟输入事件
延迟输入事件LateInputEvents计数 总计(总和) LogicalName、PartitionId、ProcessorInstance、NodeNamePT1M 是的 输出事件
输出事件OutputEvents计数 总计(总和) LogicalName、PartitionId、ProcessorInstance、NodeNamePT1M 是的 水印延迟
水印延迟OutputWatermarkDelaySeconds秒 平均值、最大值、最小值 LogicalName、PartitionId、ProcessorInstance、NodeNamePT1M 是的 CPU 使用率百分比
CPU 利用率ProcessCPUUsagePercentagePercent 平均值、最大值、最小值 LogicalName、PartitionId、ProcessorInstance、NodeNamePT1M 是的 SU (内存) 利用率百分比
SU (内存) 利用率百分比ResourceUtilizationPercent 平均值、最大值、最小值 LogicalName、PartitionId、ProcessorInstance、NodeNamePT1M 是的 所有指标阈值的默认值为
70。 如果要将指标阈值设置为另一个数字,请打开 *.AutoscaleSettingTemplate.parameters.json 文件并更改Threshold值。
若要详细了解如何定义自动缩放规则,请参阅 “了解自动缩放设置”。
部署到 Azure。
连接到 Azure 帐户:
# Connect to Azure Connect-AzAccount -Environment AzureChinaCloud # Set the Azure subscription Set-AzContext [SubscriptionID/SubscriptionName]部署流分析项目:
$templateFile = ".\Deploy\ClickStream-Filter.JobTemplate.json" $parameterFile = ".\Deploy\ClickStream-Filter.JobTemplate.parameters.json" New-AzResourceGroupDeployment ` -Name devenvironment ` -ResourceGroupName myResourceGroupDev ` -TemplateFile $templateFile ` -TemplateParameterFile $parameterFile部署自动缩放设置:
$templateFile = ".\Deploy\ClickStream-Filter.AutoscaleSettingTemplate.json" $parameterFile = ".\Deploy\ClickStream-Filter.AutoscaleSettingTemplate.parameters.json" New-AzResourceGroupDeployment ` -Name devenvironment ` -ResourceGroupName myResourceGroupDev ` -TemplateFile $templateFile ` -TemplateParameterFile $parameterFile
成功部署项目后,可以在Azure门户中查看自动缩放设置。
方案 2:在 Azure 中配置正在运行的流分析作业的设置
如果流分析作业在 Azure 中运行,可以使用 PowerShell 中的流分析 CI/CD 工具配置自动缩放设置。
运行以下命令。 将 $jobResourceId 替换为流分析作业的资源 ID。
azure-streamanalytics-cicd autoscale --capacity 2 --metrics ProcessCPUUsagePercentage ResourceUtilization --targetJobResourceId $jobResourceId --outputPath ./Deploy
如果成功配置设置,ARM 模板和参数文件将创建在当前目录中。
然后,可以按照方案 1 中的部署步骤将自动缩放设置部署到Azure。
获取帮助
有关自动缩放设置的详细信息,请在 PowerShell 中运行以下命令:
azure-streamanalytics-cicd autoscale --help
如果流分析 CI/CD 工具存在任何问题,可以在GitHub中报告它们。