你好,游客 登录 注册 搜索
背景:
阅读新闻

[Flume+Kafka+Storm+Hadoop日志分析系统] 简介

[日期:2016-06-27] 来源:博客园精华区  作者: [字体: ]

  系统的运行会产生大量的业务日志,我们可以将日志数据收集起来进行分析。例如我们可以从Nginx的访问日志中统计出PV、UV和响应时间等。

  由于日志的数据量巨大,我们需要使用一些大数据处理工具,例如使用Hadoop进行大数据存储和离线计算,使用Storm进行实时计算。同时还需要高可用的消息缓存中间件Kafka来分发数据。

  从网上的用户分享来看,使用Flume+Kafka+Storm+Hadoop这一套方案的很多。因此我们就跟随这这些大牛们,亲自实践一下。

  整个方案大致的流程如下:

Hadoop

  Flume收集日志,作为数据源。Flume将数据发布Kafka中,由Storm中的Topology订阅处理进行实时分析。数据存储到HDFS中暂时我们也是在Storm中完成,也可以直接通过Flume写入HDFS。还有一个MongoDB用于存储一些统计数据。

  Flume-ng

  Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。

  Flume提供了多种数据源收集数据的方式,包括console(控制台)、RPC(Thrift-RPC)、text(文件)、tail(UNIX tail)、syslog(syslog日志系统,支持TCP和UDP等2种模式),exec(命令执行)等。我们选用的是Spooling Directory Source,按时间分割日志,使用定时任务将日志文件放到spoolDir中。

  Kafka

  Kafka是LinkedIn开发的用于处理活动流数据和运营指标数据的消息缓存中间件。它是个分布式消息发布订阅系统,它可以快速地将海量信息实时路由到消费者,实现信息的生产者和消费者的无缝集成。具有以下特征:

  消息持久化(persistent messaging):Kafka提供时间复杂度为O(1)的消息持久化能力,即使是TB级别以上的数据也能保证常数时间复杂度的访问性能。在Kafka中,消息被持久化在磁盘中,同时也在集群之间复制,防止数据丢失

  高吞吐率(high throughput):即使在普通的机器上也能提供每秒上百MB读写的能力。

  分布式(distributed):Kafka支持Kafka服务器间的消息分区,以及基于消费者机器集群的分布式消费,维护每个分区内的顺序。Kafka集群可以在不停机的情况下弹性地增减结点。

  实时(real time):生产者线程产生的消息应该立即被消费者线程可见,这是基于事件系统的关键特性,例如Complex Event Processing (CEP) system。

  支持在线水平扩展(scale out)

  详细介绍可以看这里。

  Storm

  Storm是Twitter开源的一个分布式的、容错的实时计算系统。跟Hadoop相比,它可以在保证高可用的前提下让处理更加实时。

  Storm的主要特点如下:

  易于扩展。Storm使用Zookeeper进行集群协调,可以动态添加节点和调整Topology的设置。

  确保每条数据都被处理。

  容错性。一个工作节点不可用以后,它所处理的任务会被重新分配。

  低延迟。使用ØMQ作为其底层消息队列,保证消息能得到快速处理。

  本地模式。Storm的本地模式,可以在处理过程中模拟Storm集群,用于开发过程中的测试。

  Hadoop

 

  Hadoop是一个分布式系统基础架构。它包括分布式文件系统HDFS、MapReduce计算框架、分布式列数据库Hbase、Hive、Pig等组件。具有高可靠性、高扩展性、高容错性等特点。





收藏 推荐 打印 | 录入:elainebo | 阅读:
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款