本教程介绍如何将 Apache Spark 应用程序指标解决方案部署到 Azure Kubernetes 服务(AKS)群集,以及如何集成 Grafana 仪表板。
可以使用此解决方案近乎实时地收集和查询 Apache Spark 指标数据。 集成的 Grafana 仪表板允许诊断和监视 Apache Spark 应用程序。 源代码和配置已在 GitHub 上开放源代码。
az login
az account set --subscription "<subscription_id>"
使用 Azure CLI 命令在订阅中创建 Kubernetes 群集。
az aks create --name <kubernetes_name> --resource-group <kubernetes_resource_group> --location <location> --node-vm-size Standard_D2s_v3
az aks get-credentials --name <kubernetes_name> --resource-group <kubernetes_resource_group>
注意:如果已有 AKS 群集,则可以跳过此步骤。
az ad sp create-for-rbac --name <service_principal_name> --role Contributor --scopes /subscriptions/<subscription_id>
结果应如下所示:
{
"appId": "abcdef...",
"displayName": "<service_principal_name>",
"name": "http://<service_principal_name>",
"password": "abc....",
"tenant": "<tenant_id>"
}
记下 appId、密码和 tenantID。
在 Synapse Studio 的左侧窗格中,选择“管理>访问控制”
单击左上角的“添加”按钮添加 角色分配
对于范围,请选择 “工作区”
对于“角色”,请选择“Synapse 计算操作员”
对于“选择用户”,请输入你的 <service_principal_name> 并单击你的服务主体
单击“应用”(请等待 3 分钟,让权限生效。)
备注
请确保服务主体在 Synapse 工作区中至少具有“读者”角色。 转到 Azure 门户的访问控制(IAM)选项卡并检查权限设置。
- 将 synapse-charts 存储库添加到 Helm 客户端。
helm repo add synapse-charts https://github.com/microsoft/azure-synapse-spark-metrics/releases/download/helm-chart
- 通过 Helm 客户端安装组件:
helm install spo synapse-charts/synapse-prometheus-operator --create-namespace --namespace spo \
--set synapse.workspaces[0].workspace_name="<workspace_name>" \
--set synapse.workspaces[0].tenant_id="<tenant_id>" \
--set synapse.workspaces[0].service_principal_name="<service_principal_app_id>" \
--set synapse.workspaces[0].service_principal_password="<service_principal_password>" \
--set synapse.workspaces[0].subscription_id="<subscription_id>" \
--set synapse.workspaces[0].resource_group="<workspace_resource_group_name>" \
--set synapse.workspaces[0].synapse_host_suffix="dev.azuresynapse.azure.cn" \
--set synapse.workspaces[0].resource_uri="https://dev.azuresynapse.azure.cn"
- workspace_name:Synapse 工作区名称。
- subscription_id:Synapse 工作区订阅 ID。
- workspace_resource_group_name:Synapse 工作区资源组名称。
- tenant_id:Synapse 工作区租户 ID。
- service_principal_app_id:服务主体“appId”
- service_principal_password:你创建的服务主体密码。
获取 Grafana 的默认密码和地址。 可以在 Grafana 设置中更改密码。
kubectl get secret --namespace spo spo-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
kubectl -n spo get svc spo-grafana
获取服务 IP,将外部 IP 复制并粘贴到浏览器,并使用用户名“admin”和密码登录。
在 Grafana 页面左上角查找 Synapse 仪表板(主页 -> Synapse 工作区/Synapse 应用程序),尝试在 Synapse Studio 中运行示例代码,并等待几秒钟来拉取指标。
此外,还可以使用“Synapse 工作区/工作区”和“Synapse 工作区/Apache Spark 池”仪表板,以获取对工作区和 Apache Spark 池的概览。
按 Helm 命令删除组件,如下所示。
helm delete <release_name> -n <namespace>
删除 AKS 群集。
az aks delete --name <kubernetes_cluster_name> --resource-group <kubernetes_cluster_rg>
Azure Synapse Analytics 提供基于 Prometheus 运算符和 Synapse Prometheus Connector 的 Helm 图表 。 Helm 图表包括适用于 Apache Spark 应用程序级指标的 Prometheus 服务器、Grafana 服务器和 Grafana 仪表板。 可以使用常用的开源监视系统 Prometheus 来近乎实时地收集这些指标,并使用 Grafana 进行可视化。
Synapse Prometheus 连接器有助于连接 Azure Synapse Apache Spark 池和 Prometheus 服务器。 它实现:
- 身份验证:它是基于 AAD 的身份验证,可以自动刷新服务主体的 AAD 令牌,以便进行应用程序发现、指标引入和其他功能。
- Apache Spark 应用程序发现:在目标工作区中提交应用程序时,Synapse Prometheus 连接器可以自动发现这些应用程序。
- Apache Spark 应用程序元数据:它收集基本应用程序信息并将数据导出到 Prometheus。
Synapse Prometheus 连接器以 docker 映像的形式发布,托管在 Microsoft 容器注册表上。 它是开源的,位于 Azure Synapse Apache Spark 应用程序指标中。
Prometheus 是一个开源监视和警报工具包。 Prometheus 是从云原生计算基础 (CNCF) 升级的,已成为云原生监视的实际标准。 Prometheus 可以帮助我们收集、查询和存储大量的时序数据,并且可以轻松地与 Grafana 集成。 在此解决方案中,我们部署基于 Helm 图表的 Prometheus 组件。
Grafana 是开源可视化和分析软件。 它允许你查询、可视化、提醒和浏览指标。 Azure Synapse Analytics 提供了一组默认 Grafana 仪表板,用于可视化 Apache Spark 应用程序级指标。
“Synapse 工作区/工作区”仪表板提供所有 Apache Spark 池、应用程序计数、CPU 核心等内容的工作区级视图。
“Synapse 工作区/Apache Spark 池”仪表板包含在此期间在所选 Apache Spark 池中运行的 Apache Spark 应用程序的指标。
“Synapse 工作区/Apache Spark 应用程序”仪表板包含所选的 Apache Spark 应用程序。
上述仪表板模板已在 Azure Synapse Apache Spark 应用程序指标中开源。