需要一个分布式的高性能持久logging解决scheme来处理多个日志源

寻找高性能的分布式可扩展解决scheme来存储大量的日志消息。 我们有多个并发日志源(=服务器)。

这里有趣的是, 性能是至关重要的 ,如果日志logging系统性能更好,我们甚至愿意放松所有日常消息的一小部分(比方说最多2%)。

我们想每天使用在线algorithm处理日志消息,所以我们不需要任何花哨的关系数据库的东西。 只是想顺序地运行数据并计算一些总量和趋势。

这是我们需要的:

  • 至less98%的消息必须被存储。 放松一些信息不是问题。
  • 一旦消息被存储,它必须被可靠地存储(ACID中的持久性Aka – 所以基本上需要复制)
  • 多个来源。
  • 消息必须以连续的方式存储,但是不需要精确的sorting(我们期望任何两个消息比几秒钟更接近正确的顺序,但是彼此靠近的消息可以是任意的顺序)
  • 我们必须能够按顺序处理日常数据(理想情况下采用map-reduce等一些可靠的方式,以便处理机器故障并重新启动处理失败的节点)

任何RDBMS当然不是一个选项,因为它保证太多(对于这个任务不必要的)属性。

我想你想要Flume 。 它似乎击中了您正在寻找的大多数要点 – 多个来源,可靠性(E2E保证),写入HDFS(分布式,容错存储)的能力,集成到Hadoop中进行map / reduce。

编辑:我也想提到Scribe作为另一种可能性。 这是基于C ++的,由Facebook编写的,但似乎已被大部分上游放弃。 尽pipe如此,它的占地面积还是比Flume低很多,不过还包括Zookeeper等所有Flume依赖项的占用空间。 而且,它也可以写入HDFS。

分布式Splunk设置可以满足您的需求,但这听起来像您拥有大量的日志数据; 它的许可是基于每天索引的数据量,因此不会很便宜。