我有一个不同的环境跨越一些云提供商,如windows服务器,linux服务器在机架空间,aws…等。在它和内部网络之间有一个防火墙。
我需要构建一个实时服务器环境,所有新生成的iis日志、apache日志都将同步到一个内部大数据环境。
我知道有些工具,如splunk或sumologic,可能会有所帮助,但我们必须在开源技术中实现这种逻辑。由于防火墙的存在,我假设我只能从云提供商那里拉日志而不是推。
有人能和我分享一下nrt(近实时)中同步大量日志的经验法则或通用架构吗?我听说过apacheflume和kafka,我想知道这些是必需的还是仅仅是使用rsync之类的东西的问题。
1条答案
按热度按时间2exbekwf1#
您可以使用rsync来获取日志,但不能以这种方式分析它们
Spark Streaming
或者Apache Storm
做。你可以选择这两个选项中的一个。
Apache Spark Streaming + Kafka
或Apache Storm + Kakfa
看看这篇关于这两个选项的集成方法的文章。看看这个演示文稿,它涵盖了对
Spark Streaming
以及Apache Storm
.性能取决于您的用例。
Spark Steaming is 40x faster to Storm
处理。但如果你加上reliability
“作为关键标准,那么数据应该首先移动到hdfs中,然后再通过spark流处理。这将降低最终吞吐量。可靠性限制:apache storm
一次处理需要一个持久的数据源。
至少一次处理需要可靠的数据源。
可以 Package 不可靠的数据源以提供额外的保证。
有了持久可靠的数据源,storm不会丢失数据。
常见模式:使用ApacheKafka备份不可靠的数据源(以较小的延迟命中换取100%的持久性)。
可靠性限制:Spark流
容错和可靠性保证需要hdfs支持的数据源。
在流处理之前将数据移动到hdfs会引入额外的延迟。
如果工作节点发生故障,网络数据源(kafka等)很容易丢失数据。