Głównym problemem usługi Azure Databricks jest brak odpowiedniego monitorowania zasobów (ich użycia Procesora/Pamięci/Dysku/Transferu sieciowego) , jest to możliwe per klaster w Spark UI jako snapshot działania drivera i nodów, brak jednak jednego zunifikowanego miejsca gdzie można wyżej wymienione statystyki obejrzeć dla wszystkich maszyn użytych w klastrze. Tym bardziej nie jest obecnie możliwe raportowanie z całego workspace Azure Databricks, w przypadku kiedy należy zbadać konsumpcję zasobów na całym workspace , w celu jego optymalizacji, pojawia się dość istotny problem.
Proponowane rozwiązania:
Azure Databricks – Overwatch
Databricks umożliwia zainstalowania Databricks Overwatch, który na bazie:
- batch source – takich jak spark event log, cloud api, job api itp.
- realtime source – alerty, ad-hoc insights itp.
Buduje model bazy danych do raportowania high level na wybranym workspace.
Raporty wizualizowany jest w Overwatch przy pomocy Carbon Webapp i Grafana.
Wymagania:
- Runtime DBR 9.1 LTS
- Maven JAR: com.microsoft.azure:azure-eventhubs-spark_2.12:2.3.21
Dokładna dokumentacja znajduje się w linkach powyżej , efekt końcowy to Warstwa danych w postaci table zwana Gold – definicja tabel. W przypadku, kiedy dane w postaci tabel są zasilasz przy pomocy Databricks Jobs regularnie, na warstwie Gold można przygotować raporty w Microsoft PowerBI.
Użyj Azure Databicks connector do podłączenia się do tabel i wykonania wizualizacji.
Azure Log Analytics
W Azure jest dedykowana usług Log Analytics przeznaczona do agregacji logów z innych usług Azure, nazywa się Log Analytics. Dostarcza wewnętrzne narzędzia do wizualizacji agregacji logów. Ale również umożliwa integrację np. z Microsoft Power BI.
Aby taki setup w ramach usługi Log Analytics dokonać należy wykonać poniższy skrypt w Azure Databricks:
script = """
sed -i "s/^exit 101$/exit 0/" /usr/sbin/policy-rc.d
wget https://raw.githubusercontent.com/Microsoft/OMS-Agent-for-Linux/master/installer/scripts/onboard_agent.sh && sh onboard_agent.sh -w <log_workspace_id> -s <log_workspace-key> -d opinsights.azure.com
sudo su omsagent -c 'python /opt/microsoft/omsconfig/Scripts/PerformRequiredConfigurationChecks.py'
sudo /opt/microsoft/omsagent/bin/service_control restart <log_workspace-id>
"""
dbutils.fs.put("/databricks/init_scripts/configure-omsagent.sh", script, True)
gdzie , <log_workspace_id> i <log_workspace_key> są dostępne w usłudze Azure Log Analytics w zakładce „zarządzanie agentami”
Skrypt /databricks/init_scripts/configure-omsagent.sh należy dodać do wykonywania na klastrze który chcemy monitorować, bądź jako globalny skrypt wykonywany na każdym klastrze.
Wynik monitorowania % użycia procesora na klastrze z 10 nodami i jednym driverem:
Mając zbierane informacje , oczywiście można zbudować bardziej zaawansowane rozwiązanie raportowe pokazujące stan wykorzystania zasobów w czasie.
Comments are closed.