如何配置Hadoop / HDP组件中的日志记录?

时间:2017-01-17 11:02:47

标签: java hadoop log4j hbase hortonworks-data-platform

我有一个HDP 2.4群集,其中包含以下服务/组件:

  1. HBase的
  2. 卡夫卡
  3. MapReduce2
  4. 风暴
  5. Oozie的
  6. 支持服务,如Zookeeper,Ambari,Yarn,HDFS等。
  7. 我已经连续几天都在寻找这个,并且会感谢一些帮助。我有以下两个问题:

    1. 如何在应用程序级别(我们使用log4j)和守护程序级别为下面提到的所有服务配置日志记录?
    2. 在一个合并位置查看这些服务的所有应用程序级别日志的最佳做法是什么? Ambari有什么可以提供或我们需要第三方包装(哪些是好的)?
    3. 非常感谢您提供的任何帮助!

2 个答案:

答案 0 :(得分:3)

如果您正在编写一个利用一个或多个HDP服务的应用程序,我建议您更新每个服务的log4j.properties文件,以匹配您所需的日志记录级别。最好的方法是使用Ambari Admin UI。要编辑服务的log4j.properties,请执行以下步骤:

  
      
  1. 单击控制板左侧的任何一项服务。
  2.   
  3. 点击“服务摘要”页后,点击屏幕顶部的“配置”标签。
  4.   
  5. 单击版本历史记录时间轴下的“高级”选项卡,找到“高级”属性集,然后搜索log4j.properties条目。如果不这样做,您可以在屏幕右上角的搜索栏中搜索“log4j”,Ambari将突出显示相关设置。
  6.   

请参阅here以获取详细说明HDFS服务的log4j.properties文件示例的图像。

请记住,每个服务的日志文件只会捕获您的应用程序与该服务之间的交互。如果您使用的是Java,我个人建议在您的应用程序中添加log4j实例;如果您不知道如何执行此操作,我建议您按照this tutorial(在this SO question上找到)来正确设置。根据应用程序调用每个服务的API的方式,您可以查询命令的输出并将其记录到您自己的日志文件中。

在一个集中位置查看日志文件方面,您有两个选择:

  1. 升级到HDP 2.5以使用Ambari日志搜索。
  2. 使用Flume继续使用HDP 2.4并从头开始创建解决方案。
  3. 我将概述以下两个选项。

    1。升级到HDP 2.5以使用Ambari日志搜索。

    我会冒险使用“更简单”的方法(我的意思是要求您付出最少的努力)将您的群集升级到HDP 2.5。更新后的Hortonworks数据平台为Ambari带来了最新版Ambari 2.4的大修。此版本包括Ambari Infra,它允许您查看所有日志文件,按日志级别进行过滤,并通过Ambari Log Search执行图形和复杂功能。

    如果您无法升级整个群集,另一个选择是从Hortonworks网站获取Ambari 2.4存储库并手动安装。 Hortonworks的一位代表告诉我,Ambari 2.4可以毫无问题地在HDP 2.4上运行,所以这可能是一个可行的替代方案......虽然我建议你在尝试之前先自己检查一下Hortonworks!

    Ambari日志搜索的唯一缺点是您无法在搜索中包含您的应用程序日志 - Ambari日志搜索仅适用于Hadoop服务。

    2。继续使用HDP 2.4并使用Flume从头开始创建解决方案。

    如果您不想升级到Ambari 2.4,那么其他选项看起来有点稀缺。我个人不知道任何开源解决方案,一些粗略的Googling返回的结果很少。 Apache ChukwaCloudera's Scribe都应该解决Hadoop中的分布式日志收集问题,但都是9岁。同样的过程还有an older Hortonworks process for log collection that leverages Flume,值得一看。 This SO thread还建议Flume用于其他情况。可能值得考虑使用Flume从每个服务器/var/log/目录收集日志。

    此解决方案的优点是您的应用程序日志文件可以作为源包含在Flume工作流程中,并包含在其他HDP服务日志中(取决于您决定放置它们的位置)。

答案 1 :(得分:0)

如果您使用HDP,请查看本文(演示如何配置log4j):

How to control size of log files for various HDP components?

这个也非常有用(显示如何使用log4j压缩HDFS日志):

How to rotate as well as zip the NameNode logs using log4j extras feature?