方案:Apache Hive 日志即将填满 Azure HDInsight 的头节点的磁盘空间

本文介绍了与 Azure HDInsight 群集的头节点上的磁盘空间不足相关的问题的故障排除步骤和可能的解决方案。

问题

在 HDI 4.0 Apache Hive/LLAP 群集中,不需要的日志占用了头节点上的整个磁盘空间。 这种情况可能会导致以下问题:

  • 由于头节点上没有剩余空间,SSH 访问失败。
  • HiveServer2 Interactive 无法重启。

原因

未在高级 hive-log4j2 配置中配置 Hive 日志自动删除功能。 就客户的使用模式来说,60GB 的默认大小限制占用了太多的空间。 默认情况下,保留的日志量是由等式 MB logs/day = appender.RFA.strategy.max * 10MB 定义的。

解决方法

  1. 在 Ambari 门户中转到 Hive 组件摘要,然后选择“配置”选项卡。

  2. 转到“高级设置”中的 Advanced hive-log4j2 部分。

    • (可选)可以降低 appender.RFA.strategy.max 的值以减少一天中保留的日志总数(以兆字节为单位)。
  3. 确保已启用这些设置。 如果看不到任何相关设置,请追加这些设置:

    # automatically delete hive log
    appender.RFA.strategy.action.type = Delete
    appender.RFA.strategy.action.basePath = ${sys:hive.log.dir}
    appender.RFA.strategy.action.condition.type = IfFileName
    appender.RFA.strategy.action.condition.regex = hive*.*log.*
    appender.RFA.strategy.action.condition.nested_condition.type = IfAny
    # Deletes logs based on total accumulated size, keeping the most recent
    appender.RFA.strategy.action.condition.nested_condition.fileSize.type = IfAccumulatedFileSize
    appender.RFA.strategy.action.condition.nested_condition.fileSize.exceeds = 60GB
    # Deletes logs IfLastModified date is greater than number of days
    #appender.RFA.strategy.action.condition.nested_condition.lastMod.type = IfLastModified
    #appender.RFA.strategy.action.condition.nested_condition.lastMod.age = 30D
    
  4. 我们将介绍进行删除所需的三个基本选项:

  • 总大小

    • appender.RFA.strategy.action.condition.nested_condition.fileSize.exceeds 更改为所选的大小限制。
  • 日期

    • 还可以取消注释和转换条件。 然后将 appender.RFA.strategy.action.condition.nested_condition.lastMod.age 更改为所选的期限。
      # Deletes logs based on total accumulated size, keeping the most recent 
      #appender.RFA.strategy.action.condition.nested_condition.fileSize.type = IfAccumulatedFileSize 
      #appender.RFA.strategy.action.condition.nested_condition.fileSize.exceeds = 60GB
      # Deletes logs IfLastModified date is greater than number of days 
      appender.RFA.strategy.action.condition.nested_condition.lastMod.type = IfLastModified 
      appender.RFA.strategy.action.condition.nested_condition.lastMod.age = 30D
    
  • 组合使用“总大小”和“日期”

    • 可以通过取消注释将两个选项组合在一起,如下所示。 当满足其中一个条件时,log4j2 就会开始删除日志。
      # Deletes logs based on total accumulated size, keeping the most recent 
      appender.RFA.strategy.action.condition.nested_condition.fileSize.type = IfAccumulatedFileSize 
      appender.RFA.strategy.action.condition.nested_condition.fileSize.exceeds = 60GB
      # Deletes logs IfLastModified date is greater than number of days 
      appender.RFA.strategy.action.condition.nested_condition.lastMod.type = IfLastModified 
      appender.RFA.strategy.action.condition.nested_condition.lastMod.age = 30D
    
  1. 保存配置并重启所需的组件。

后续步骤

如果你的问题未在本文中列出,或者无法解决问题,请访问以下渠道之一获取更多支持:

  • 如果需要更多帮助,可以从 Azure 门户提交支持请求。 从菜单栏中选择“支持” ,或打开“帮助 + 支持” 中心。