Amazon MapReduce日志分析的最佳实践

web*_*oss 8 logging hadoop amazon-s3 amazon-emr hadoop-streaming

我正在解析Apache,Nginx,Darwin(视频流服务器)生成的访问日志,并按日期/ referrer/useragent聚合每个交付文件的统计信息.

每小时生成大量日志,并且该数量可能在不久的将来急剧增加 - 因此通过Amazon Elastic MapReduce以分布式方式处理这类数据听起来合理.

现在我已经准备好使用映射器和缩减器来处理我的数据并使用以下流程测试整个过程:

  • 上传的映射器,缩减器和数据到Amazon S3
  • 配置适当的作业并成功处理
  • 将Amazon S3的聚合结果下载到我的服务器,并通过运行CLI脚本将其插入MySQL数据库

我已经根据互联网上关于Amazon ERM的数以千计的教程手动完成了这项工作.

接下来我该怎么办?什么是自动化此过程的最佳方法?

  • 我应该通过API控制Amazon EMR jobTracker吗?
  • 如何确保我的日志不会被处理两次?
  • 将处理过的文件移动到存档的最佳方法是什么?
  • 将结果插入PostgreSQL/MySQL的最佳方法是什么?
  • 如何在输入/输出目录中布置作业数据?
  • 我每次使用API​​时都应该创建一个新的EMR作业吗?
  • 将原始日志上传到Amazon S3的最佳方法是什么?
  • 任何人都可以分享他们的数据处理流程设置吗?
  • 如何控制文件上传和作业完成?

我认为这个主题对于尝试使用Amazon Elastic MapReduce处理访问日志但无法找到好的材料和/或最佳实践的人来说非常有用.

UPD:这里只是澄清最后一个问题:

Amazon Elastic MapReduce支持的日志处理的最佳实践是什么?

相关文章:

将数据输入和输出Elastic MapReduce HDFS

Cha*_*guy 2

这是一个非常非常广泛的问题,但您可以考虑以下一些想法:

  • 使用 Amazon SQS:这是一个分布式队列,对于工作流管理非常有用,您可以有一个进程,一旦日志可用,就写入队列,而另一个进程则从中读取,处理队列中描述的日志消息,并在处理完成后将其删除。这将确保日志仅被处理一次。
  • 正如您提到的,Apache Flume 对于日志聚合非常有用。即使您不需要实时,这是您应该考虑的事情,因为它至少为您提供了标准化的聚合过程。
  • 亚马逊最近发布了 SimpleWorkFlow。我刚刚开始研究它,但这听起来很有希望管理数据管道的每一步。

希望能给你一些线索。