如何在Databricks集群上覆蓋log4j配置

學習如何覆蓋Databricks集群上的log4j配置。

寫的亞當Pavlacka

最後發布日期:2022年12月8日
刪除

警告

本文描述了與客戶使用Log4j 1相關的步驟。在Databricks集群中使用。Log4j 1。x不再維護,並且有三個已知的cve (cve - 2021 - 4104cve - 2020 - 9488,cve - 2019 - 17571).如果您的代碼使用其中一個受影響的類(JMSAppender或SocketServer),您的使用可能會受到這些漏洞的潛在影響。您不應該在集群中啟用這兩個類中的任何一個。

沒有覆蓋的標準方法log4j自定義配置的集群配置。必須使用初始化腳本覆蓋配置文件。

當前配置存儲在兩個目錄中log4j . properties文件:

  • 關於司機:
    %sh cat /home/ubuntu/ databicks /spark/dbconf/log4j/driver/log4j.properties
  • 關於工人:
    %sh cat /home/ubuntu/ databicks /spark/dbconf/log4j/executor/log4j.properties . sh /home/ubuntu/ databicks /spark/dbconf/log4j .properties

要在驅動程序或工人上設置特定於類的日誌,使用以下腳本:

% sh # !if [[$DB_IS_DRIVER = "TRUE"]]];然後LOG4J_PATH = " / home / ubuntu /磚/火花/ dbconf / log4j /司機/ log4j。/home/ubuntu/databricks/spark/dbconf/log4j/executor/log4j. properties" else LOG4J_PATH="/home/ubuntu/databricks/spark/dbconf/log4j/executor/log4j. properties" else LOG4J_PATH="調整log4j. properties" fi echo "${LOG4J_PATH}" echo "log4j. properties=" >> ${LOG4J_PATH}

取代< custom-prop >屬性名,和<值>屬性值。

將腳本上傳到DBFS,並使用集群配置UI選擇一個集群。

你也可以設置log4j . properties對司機來說也是一樣。

參見集群節點初始化腳本(AWS|Azure|GCP),以獲取更多資料。