Azure Databricks — аналитическая платформа на основе Apache Spark, оптимизированная для платформы облачных сервисов Microsoft Azure. В этом блоге мы увидим, как мы можем собирать журналы из Azure в ALA. Прежде чем идти дальше, нам нужно посмотреть, как настроить кластер Spark в Azure.
Создать Spark-кластер в Databricks
- На портале Azure перейдите в созданную вами рабочую область Databricks и нажмите Launch Workspace.
- Вы будете перенаправлены на портал Azure Databricks. На портале нажмите Новый кластер.
- В разделе «Дополнительные параметры» щелкните вкладку «Начальные сценарии». Перейдите к последней строке в разделе «Сценарии инициализации». В раскрывающемся списке «Место назначения» выберите «DBFS» и введите «dbfs: /databricks/spark-monitoring/spark-monitoring.sh» в текстовом поле. Нажмите кнопку «Добавить».
Запустить задание Spark SQL
- На левой панели выберите Блоки данных Azure. Из общих задач выберите New Notebook.
- В диалоговом окне «Создать блокнот» введите имя, выберите язык и выберите кластер Spark, созданный ранее.
Вам также может понравиться: Выполнение заданий ML в Azure Databricks From Streamsets
Создать блокнот
- Нажмите кнопку Рабочая область
- В диалоговом окне «Создать блокнот» введите имя и выберите язык по умолчанию для блокнота.
- Работают кластеры, отображается раскрывающийся список кластеров. Выберите кластер.
Добавление Logger в блокнот DataBricks
Джава
x
1
dbutils.fs.put("/databricks/init/dev-heb-spark-cluster/verbose_logging.sh", """
2
#!/bin/bash
3
echo "log4j.appender.A1=com.microsoft.pnp.logging.loganalytics.LogAnalyticsAppender
4
log4j.appender.A1.layout=com.microsoft.pnp.logging.JSONLayout
5
log4j.appender.A1.layout.LocationInfo=false
6
log4j.additivity.com.knoldus.pnp.samplejob=false
7
log4j.logger.com.knoldus.pnp.samplejob=INFO, A1" >> /home/ubuntu/databricks/spark/dbconf/log4j/executor/log4j.properties
8
""", true)
9
import com.microsoft.pnp.logging.Log4jConfiguration
11
import org.apache.spark.internal.Logging
12
import org.apache.spark.metrics.UserMetricsSystems
13
import org.apache.spark.sql.SparkSession
14
import org.apache.spark.sql.functions.window
15
import org.apache.spark.sql.types.{StringType, StructType, TimestampType}
16
import org.apache.log4j.Logger
17
object SumNumbers extends Logging {
19
private final val METRICS_NAMESPACE = "SumNumbers"
20
private final val COUNTER_NAME = "counter1"
21
val test = Logger.getLogger(getClass.getName)
22
def computeSumOfNumbersFromOneTo(value: Long, spark: SparkSession): Long = {
23
// Log4jConfiguration.configure("/databricks/spark-monitoring/log4j.properties")
25
26
test.info("Hello There")
27
logTrace("data testing ")
28
logDebug("data testing")
29
logInfo("data testing")
30
logWarning("Wdata testing")
31
logError("data testing")
32
val driverMetricsSystem = UserMetricsSystems
34
.getMetricSystem(METRICS_NAMESPACE, builder => {
35
builder.registerCounter(COUNTER_NAME)
36
})
37
driverMetricsSystem.counter(COUNTER_NAME).inc
38
val sumOfNumbers = spark.range(value + 1).reduce(_ + _)
39
driverMetricsSystem.counter(COUNTER_NAME).inc(5)
40
return sumOfNumbers
41
}
42
}
43
SumNumbers.computeSumOfNumbersFromOneTo(100, spark)
Теперь, когда вы все настроили с помощью Notebook, давайте настроим кластер для отправки журналов в рабочую область Azure Log Analytics. Для этого мы создадим рабочую область для анализа журналов в Azure.
- Сначала разверните библиотеку мониторинга Spark в кластере Azure.
- Клонируйте или загрузите этот репозиторий GitHub .
- Установите интерфейс командной строки Azure Databricks .
- Личный токен доступа необходим для использования CLI. Для инструкций смотрите управление токенами .
- Вы также можете использовать интерфейс командной строки из облачной оболочки Azure.
Создайте библиотеку мониторинга блоков данных Azure с помощью Docker
Linux:
Оболочка
xxxxxxxxxx
1
chmod +x spark-monitoring/build.sh
2
docker run -it --rm -v `pwd`/spark-monitoring:/spark-monitoring -v "$HOME/.m2":/root/.m2 maven:3.6.1-jdk-8 /spark-monitoring/build.sh
Окна:
Оболочка
xxxxxxxxxx
1
docker run -it --rm -v %cd%/spark-monitoring:/spark-monitoring -v "%USERPROFILE%/.m2":/root/.m2 maven:3.6.1-jd
2
Настройка рабочей области Azure Databricks
Скопируйте JAR-файлы и сценарии инициализации в Databricks.
- Используйте интерфейс командной строки Azure Databricks для создания каталога с именем dbfs: / databricks / spark-мониторинг : dbfs mkdirs dbfs: / databricks / spark-мониторинг
- Откройте файл сценария /src/spark-listeners/scripts/spark-monitoring.sh и добавьте свой идентификатор и ключ рабочей области Log Analytics в строки
below:export LOG_ANALYTICS_WORKSPACE_ID= export LOG_ANALYTICS_WORKSPACE_KEY=
- Используйте интерфейс командной строки Azure Databricks для копирования /src/spark-listeners/scripts/spark-monitoring.sh в каталог, созданный на шаге 3: dbfs cp <локальный путь к spark-monitoring.sh> dbfs: / databricks / spark-мониторинг / spark-monitoring.sh
- Используйте интерфейс командной строки Azure Databricks для копирования всех файлов JAR из папки spark-monitor / src / target в каталог, созданный на шаге 3: dbfs cp –overwrite –recursive <локальный путь к целевой папке> dbfs: / databricks / spark- / мониторинга
Теперь все готово для запроса в рабочей области аналитики журналов для получения журналов.
Event | search "error"
Этот запрос получит все журналы уровня ошибок генерируемого события. Точно так же мы можем получить журналы разных классов.