从边缘节点摄取日志文件到hadoop

4zcjmb1e  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(287)

我正在寻找一种方法,将整个日志文件从边缘节点流到hadoop。总结用例:
我们的应用程序可以生成每个文件从几mb到数百mb不等的日志文件。
我们不希望在日志事件发生时对其进行流式处理。
我们要寻找的是在日志文件完全写入后将其完整地推送到另一个文件夹中(例如,writed complety=got moved into another folder…)。。。这对我们来说不是问题)。
这应该由边缘节点上的某种轻量级代理直接处理到hdfs,或者(如果必要的话)一个中间“接收器”来处理,该“接收器”将在之后将数据推送到hdfs。
集中式管道管理(=以集中式方式配置所有边缘节点)将非常有用
我得出以下评价:
elastic's logstash和filebeats
可以对边缘节点进行集中式管道管理,例如,为所有边缘节点提供一个集中式配置(需要许可证)
配置很简单,webhdfs输出接收器用于logstash(使用filebeats需要一个带有filebeats+logstash的中间解决方案,该解决方案输出到webhdfs)
这两种工具在生产级环境中都被证明是稳定的
这两种工具都用于跟踪日志,并在单个事件发生时对其进行流式处理,而不是接收完整的文件
带minifi的apache nifi
对于nifi和minifi来说,收集日志并将整个文件发送到具有大量边缘节点的另一个位置(这些节点都运行相同的“作业”)的用例似乎是命中注定的
运行在边缘节点上的minifi是轻量级的(另一方面,logstash不是那么轻量级)
日志可以从minifi代理流式传输到nifi集群,然后传入hdfs
nifi ui内的集中管道管理
向hdfs接收器写入数据是现成的
社区看起来很活跃,发展是由hortonworks(?)
过去我们在nifi方面取得了很好的经验
ApacheFlume
向hdfs接收器写入数据是现成的
看起来flume更像是一个基于事件的解决方案,而不是一个流式处理整个日志文件的解决方案
没有集中的管道管理?
Apache·戈布林
向hdfs接收器写入数据是现成的
没有集中的管道管理?
没有轻量级边缘节点“代理”?
弗伦特
也许是另一个工具?正在查找您对此的评论。。。
我很想得到一些关于选择哪个选项的意见。nifi/minifi选项在我看来是最有前途的,而且是免费使用的。
我是否忘记了任何能够解决这个用例的广泛使用的工具?

zlhcx6iw

zlhcx6iw1#

在选择开源大数据解决方案时,我也经历过类似的痛苦,只是通往罗马的道路太多了。虽然“对于stackoverflow来说,征求技术建议是不合适的”,但我还是想分享我的观点。
我假设您已经有了一个hadoop集群来登陆日志文件。如果您使用的是企业级发行版(如hdp发行版),请继续使用他们选择的数据接收解决方案。这种方法在安装、设置中心管理和监控、实现安全性和系统集成(当有新版本时)方面总是可以节省大量的工作。
您没有提到日志文件在hdfs中登陆后如何使用它们。我假设您只想制作一个精确的副本,即数据接收中不需要进行数据清理或将数据转换为规范化格式。现在我想知道为什么您没有提到最简单的方法,即使用调度的hdfs命令将日志文件从边缘节点放入hdfs?
现在我可以分享我参与的一个生产设置。在这种生产设置中,日志文件被推送到或由一个商业中介系统拉取,该系统可以进行数据清理、规范化、丰富等操作。每天的数据量超过1000亿个日志记录。负载平衡器后面有6个边缘节点。日志首先登陆到一个边缘节点上,然后将hdfs命令放到hdfs上。最初使用Flume,但由于性能问题被这种方法取代(很可能是工程师缺乏优化Flume的经验)。不过值得一提的是,中介系统有一个管理ui,用于调度摄取脚本。在您的情况下,我会先用cron job for poc,然后使用例如airflow。
希望有帮助!很高兴知道您的最终选择和实施方案。

相关问题