从边缘节点将日志文件提取到Hadoop

时间:2018-06-14 13:19:00

标签: hadoop bigdata logstash apache-nifi flume

我正在寻找一种将整个日志文件从边缘节点流式传输到Hadoop的方法。总结用例:

  • 我们有应用程序可以生成每个文件从几MB到几百MB的日志文件。
  • 我们不希望在发生所有日志事件时对其进行流式传输。
  • 完全写完日志文件后,我们正在寻找它(完全写完=被移到另一个文件夹中......这对我们来说不是问题)。
  • 这应该由边缘节点上的某种轻量级代理直接处理,或者 - 如果必要的话 - 中间的“接收器”,然后将数据推送到HDFS。
  • 集中管道管理(=以集中方式配置所有边缘节点)会很棒

我想出了以下评估:

  • Elastic的Logstash和FileBeats
    • 边缘节点的集中管道管理是可用的,例如,所有边缘节点的一个集中配置(需要许可证)
    • 配置很简单,Logstash存在WebHDFS输出接收器(使用FileBeats需要使用FileBeats + Logstash输出到WebHDFS的中间解决方案)
    • 这两种工具在生产级环境中都被证明是稳定的
    • 这两个工具都用于拖尾日志并在发生这些单个事件时直接传输而不是摄取完整的文件
  • Apache NiFi w / MiNiFi
    • 收集日志并将整个文件发送到另一个位置的用例,其中包含大量边缘节点,所有边缘节点都运行相同的“作业”看起来注定要用于NiFi和MiNiFi
    • 在边缘节点上运行的MiNiFi是轻量级的(另一方面,Logstash不是那么轻量级)
    • 日志可以从MiNiFi代理流式传输到NiFi群集,然后提取到HDFS
    • NiFi UI中的集中管道管理
    • 写入HDFS接收器是开箱即用的
    • 社区看起来很活跃,开发由Hortonworks(?)
    • 领导
    • 过去我们在使用NiFi方面取得了很好的经验
  • Apache Flume
    • 写入HDFS接收器是开箱即用的
    • 看起来Flume更像是基于事件的解决方案,而不是流式传输整个日志文件的解决方案
    • 没有集中管道管理?
  • Apache Gobblin
    • 写入HDFS接收器是开箱即用的
    • 没有集中管道管理?
    • 没有轻量级边缘节点“代理”?
  • Fluentd
    • 也许还有另外一个工具要看?正在寻找您对此的评论......

我希望得到一些关于选择哪个选项的评论。 NiFi / MiNiFi选项看起来对我来说最有希望 - 也可以免费使用。

我是否忘记了任何能够解决此用例的广泛使用的工具?

1 个答案:

答案 0 :(得分:1)

在选择开源大数据解决方案时,我遇到了类似的痛苦,只是通往罗马的道路很多。尽管“寻求技术建议不是Stackoverflow的主题”,但我仍然想分享自己的看法。

  1. 我假设您已经有一个hadoop集群来登陆日志文件。如果您使用的是企业就绪发行版,例如HDP分发,请选择其数据摄取解决方案。这种方法始终可以节省您在安装,设置中心管理和监视,在新版本发布时实施安全性和系统集成方面的大量工作。

  2. 您没有提及将日志文件放入HDFS后如何使用它们。我假设您只是想进行精确的复制,即在数据提取中不需要数据清理或将数据转换为规范化格式。现在,我想知道为什么您没有提到最简单的方法,而是使用调度的hdfs命令将日志文件从边缘节点放入hdfs?

  3. 现在,我可以共享一个我参与的生产设置。在此生产设置中,日志文件由商业中介系统推入或拉出,该系统进行数据清理,规范化,充实等。每天的数据量超过1000亿个日志记录。负载均衡器后面有6个边缘节点设置。日志首先降落在边缘节点之一上,然后将hdfs命令放入HDFS。起初使用Flume,但由于性能问题而被这种方法取代(很可能是工程师缺乏优化Flume的经验)。不过,值得一提的是,中介系统具有用于安排提取脚本的管理UI。在您的情况下,我将从PoC的cron作业开始,然后使用例如气流。

希望有帮助!并且很高兴知道您的最终选择和实现。

相关问题