在生产环境中, 通常会部署各种类型的服务, 比如搜索, 推荐, 广告等, 这些服务均会记录大量流式日志. 比如搜索系统, 当用户输入一个查询词时, 该搜索行为会以日志的形式被后端系统记录下来, 当并发访问用户数非常多时, 搜索系统后端将实时产生大量日志. 如何高效地收集这些日志, 并发送到后端存储系统 (比如 Hadoop, 数据仓库等) 中进行统一分析和挖掘, 是每个企业大数据平台需要解决的问题. 本文将介绍开源的 Flume 系统实现流式数据收集的应用场景分析. 如下图所示:
数据收集场景
开源的 Flume 系统是一个通用的流式数据收集系统, 可以将不同数据源产生的流式数据近实时地发送到后端中心化的存储系统中, 具有分布式, 良好的可靠性以及可用性等优点. 总结起来, Flume 系统适用于解决日志收集过程中面临的以下场景:
数据源种类繁多: 各种服务均会产生日志, 这些日志格式不同, 产生日志的方式也不同(有的写到本地日志文件中, 有的通过 HTTP 发到远端等).
数据源是物理分布的: 各种服务运行在不同机器上, 有的甚至是跨机房的. 设计日志收集系统时需考虑这种天然的分布式特征.
流式的, 不间断产生: 日志是实时产生的, 需要实时或近实时收集到, 以便于后端的分析和挖掘.
对可靠性有一定要求: 日志收集过程中, 希望能做到不丢失数据, 或丢失可控的少量数据.
来源: http://www.jianshu.com/p/794413273c20