2015-06-26 58 views
1

我的团队正在Amazon EC2实例上部署新群集。 经过一番研究,我们决定与Apache Mesos一起作为集群管理器和Spark进行计算。从Mesos群集收集日志

我们问自己的第一个问题是从每个不同框架的所有机器收集日志的最佳方法。 到目前为止,我们开发了一些自定义的bash/python脚本,它们从预定义的位置收集日志,压缩它们并将压缩文件发送到S3。 这种旋转是由每小时运行一次的cron作业激活的。

我一直在寻找“最好”(或标准)的方式来做到这一点。 我发现Apache Flume,它也是一个数据收集器日志,但我不明白它怎么可能被集成到一个Mesos集群来收集日志(和Spark)。

我发现this“类似”的问题,但解决方案不是开源或不再支持。

有没有更好的方法来旋转日志或我失踪的标准方式?

非常感谢你

+0

你看过logstash(与Elasticsearch和Kibana结合)吗? https://www.elastic.co/products/logstash它是开源的(apache 2)并且受到支持。 –

+0

logstash是一个非常不错的解决方案,但在架构中添加Elasticsearch和Kibana会给系统增加更多的复杂性(我们试图尽可能简化) – besil

回答

0

有没有完美的答案。如果您使用的是Spark并且有兴趣使用Flume,则您必须写一个自定义的Flume - > Spark接口,因为据我所知,接口不存在。但是,您可以做的是:

  1. 使用Flume实时提取日志数据。
  2. 让Flume使用自定义拦截器对日志数据进行预处理。
  3. 让Flume在完成预处理后写入Kafka。
  4. 让Spark流读取Kafka队列以处理日志并运行计算。

Spark Streaming据说不能达到黄金时间的生产等级,但这是一个潜在的解决方案。

+0

感谢您的回答。正如您所指出的那样,为了收集Spark日志,需要编写一个定制的Spark-Flume接口。但是,对于使用Flume TO apache Spark进行日志记录,我发现[this](https://spark.apache.org/docs/latest/streaming-flume-integration.html)集成指南 – besil