自动化部署Flume+Kafka+Storm

由于业务需求特殊,一般只固定在一周的某几天晚上会有大量数据需要进行实时计算,而且只需要使用4到5个小时。平时只需要小规模的集群进行开发、测试和线上使用。 针对这种情况,为了减少服务器的费用,决定利用阿里云的 API 和 ECS 服务器,自动独立部署一套 Flume+Kafka+Storm 实时计算集群服务,以便灵活应对各种压力下的计算需求。 场景分析 根据业务分析,整理出三种使用场景: 1、平时或用户数据量较小时,直接用固定的小型集群。不需要做任何改变。 2、用户量一般,压力…

Flume监控

最近在对服务做压力测试时,发现当 QPS 达到很高的一个值时,Flume 会出现报错。为了排查原因,一边结合 Telegraf 的数据收集,给 Flume 加上监控和报警;一边查看 Flume 代码。 异常排查 当 QPS 压到3w时,Flume出现一下错误信息。 根据错误信息描述,是 source 接收端的容量达到上线,无法再接收数据,直接 kill 掉了 tail 命令。 在排查问题之前,先了解一下 f…

Flume源码分析(四)Event数据流程图

刚开始梳理这篇内容时,赶上比较忙的业务,一直就闲搁了,最近才有时间,既然花了时间,再放弃或遗忘,就浪费了。如是便重新整理,以便以后用到时可以快速回顾。 Flume 的 Event 是各组件传输数据的载体。通过分析 Event 的数据流,可以更详细的分析 Flume 的各个组件。 先看一下 Event 的大体的流程图。 大体流程说明: 启动 Flume Agent,加载配置,初始…

Flume源码分析(三)实例化组件对象

Flume源码分析学习系列三,实例化组件对象,并启动各组件服务。详细内容,请阅读全文。 在分析之前,先看一下三大组件的大体类图。 三大组件的实例化分别在loadSources、loadChannels、loadSinks方法中完成。 实例化Source组件 loadSources 从AgentConfiguration类中获取配置信息,通过DefaultSourceFactory来完成实例对象的创建。 根据配置文件中a1.sources.src-1.type的配置,匹配枚举类…

Flume源码分析(二)解析配置文件

Flume源码分析学习系列二,解析配置文件。详细内容,请阅读全文。 Flume的一个配置文件对应一个agentName。配置文件每行内容中,等号前的内容为key,等号后的内容value。 key的组成格式为以下两种: 1、agentName.组件类型。例如:a1.channels 2、agentName.组件类型.组件名称.属性。例如:a1.sources.src-1.type 假设我们用Flume监控本地一个目录,将新增的文件内容写入HDFS上,配置文件内容如下: 按照以上…

Flume源码分析(一)启动

Flume源码分析学习系列一,服务启动整体分析。详细内容,请阅读全文。 编译 先从Github上下载源码到本地,这里我用的1.8版本,源码地址为: 导入idea,通过maven进行编译。 分析 分析之前,先看一下各module的作用: module 说明 flume-ng-core 核心模块 flume-ng-sources source组件的实现 flume-ng-channels channel组件的实现 flume-ng-sinks sink组件的实现 flume-ng…

Flume1.7安装

Flume的可靠性 当节点出现故障时,日志能够被传送到其他节点上而不会丢失。Flume提供了三种级别的可靠性保障,从强到弱依次分别为:end-to-end(收到数据agent首先将event写到磁盘上,当数据传送成功后,再删除;如果数据发送失败,可以重新发送。),Store on failure(这也是scribe采用的策略,当数据接收方crash时,将数据写到本地,待恢复后,继续发送),Besteffort(数据发送到接收方后,不会进行确认)。 Flume的一些核心概念 A…