同步日志到hadoop的架构
Architecture of syncing logs to hadoop
我在几个云提供商中有不同的环境,例如 windows 服务器,机架空间中的 linux 服务器,aws..等。在那个和内部网络之间有一个防火墙。
我需要构建一个实时服务器环境,所有新生成的 IIS 日志,apache 日志将同步到内部大数据环境。
我知道 Splunk 或 Sumologic 等工具可能会有所帮助,但我们需要在开源技术中实现此逻辑。由于防火墙的存在,我假设我只能拉取日志而不是从云提供商那里推送。
任何人都可以与我分享在 NRT(近实时)中同步大量日志的经验法则或通用架构是什么?我听说过 Apache Flume、Kafka 并想知道是否需要这些,或者这只是使用 rsync 之类的东西的问题。
您可以使用 rsync 获取日志,但您不能像 Spark Streaming
或 Apache Storm
那样分析它们。
您可以选择这两个选项之一。
Apache Spark Streaming + Kafka
或
Apache Storm + Kakfa
看看这个article关于这两个选项的集成方法。
看看这个 presentation,其中涵盖了 in-depth 对 Spark Streaming
和 Apache Storm
的分析。
性能取决于您的用例。 Spark Steaming is 40x faster to Storm
处理中。但是如果你添加“reliability
”作为关键条件,那么数据应该先移动到HDFS,然后再由Spark Streaming处理。它将降低最终吞吐量。
可靠性限制:Apache Storm
- Exactly once 处理需要持久数据源。
- 至少一次处理需要可靠的数据源。
- 可以包装不可靠的数据源以提供额外的保证。
- 有了持久可靠的来源,Storm 将不会丢失数据。
- 常见模式:使用 Apache Kafka 返回不可靠的数据源(以 100% 的耐用性换取较小的延迟命中)。
可靠性限制:Spark Streaming
- 容错和可靠性保证需要 HDFS-backed 数据源。
- 在流处理之前将数据移动到 HDFS 会引入额外的延迟。
- 网络数据源(Kafka 等)在工作节点发生故障时容易丢失数据。
我在几个云提供商中有不同的环境,例如 windows 服务器,机架空间中的 linux 服务器,aws..等。在那个和内部网络之间有一个防火墙。
我需要构建一个实时服务器环境,所有新生成的 IIS 日志,apache 日志将同步到内部大数据环境。
我知道 Splunk 或 Sumologic 等工具可能会有所帮助,但我们需要在开源技术中实现此逻辑。由于防火墙的存在,我假设我只能拉取日志而不是从云提供商那里推送。
任何人都可以与我分享在 NRT(近实时)中同步大量日志的经验法则或通用架构是什么?我听说过 Apache Flume、Kafka 并想知道是否需要这些,或者这只是使用 rsync 之类的东西的问题。
您可以使用 rsync 获取日志,但您不能像 Spark Streaming
或 Apache Storm
那样分析它们。
您可以选择这两个选项之一。
Apache Spark Streaming + Kafka
或
Apache Storm + Kakfa
看看这个article关于这两个选项的集成方法。
看看这个 presentation,其中涵盖了 in-depth 对 Spark Streaming
和 Apache Storm
的分析。
性能取决于您的用例。 Spark Steaming is 40x faster to Storm
处理中。但是如果你添加“reliability
”作为关键条件,那么数据应该先移动到HDFS,然后再由Spark Streaming处理。它将降低最终吞吐量。
可靠性限制:Apache Storm
- Exactly once 处理需要持久数据源。
- 至少一次处理需要可靠的数据源。
- 可以包装不可靠的数据源以提供额外的保证。
- 有了持久可靠的来源,Storm 将不会丢失数据。
- 常见模式:使用 Apache Kafka 返回不可靠的数据源(以 100% 的耐用性换取较小的延迟命中)。
可靠性限制:Spark Streaming
- 容错和可靠性保证需要 HDFS-backed 数据源。
- 在流处理之前将数据移动到 HDFS 会引入额外的延迟。
- 网络数据源(Kafka 等)在工作节点发生故障时容易丢失数据。