Storm原理调研及部署文档

作者: blogchong | 分类: 原创-Storm实时处理 | 评论:0人 | 浏览:

 1 Storm调研

1.1 Storm简介

Twitter Storm 是使用 Clojure(发音同 closure)语言实现的。 Clojure 是 Lisp 语言的一种现代方言。类似于 Lisp,Clojure 支持一种功能性编程风格,但 Clojure 还引入了一些特性来简化多线程编程(一种对创建 Storm 很有用的特性)。Twitter列举了Storm的三大类应用:

1.信息流处理{Stream processing},Storm可用来实时处理新数据和更新数据库,兼具容错性和可扩展性。

2.连续计算{Continuous computation}

3.Storm可进行连续查询并把结果即时反馈给客户端,比如把Twitter上的热门话题发送到浏览器中。

3.分布式远程程序调用{Distributed RPC},Storm可用来并行处理密集查询。Storm的拓扑结构是一个等待调用信息的分布函数,当它收到一条调用信息后,会对查询进行计算,并返回查询结果。举个例子Distributed RPC可以做并行搜索或者处理大集合的数据。

Storm集群由一个主节点和多个工作节点组成。主节点运行了一个名为“Nimbus”的守护进程,用于分配代码、布置任务及故障检测。每个工作节点都运行了一个名为“Supervisor”的守护进程,用于监听工作,开始并终止工作进程。Nimbus和Supervisor都能快速失败,而且是无状态的,这样一来它们就变得十分健壮,两者的协调工作是由Apache ZooKeeper来完成的。

Storm的术语包括Stream、Spout、Bolt、Task、Worker、Stream Grouping和Topology。Stream是被处理的数据。Sprout是数据源。Bolt处理数据。Task是运行于Spout或Bolt中的 线程。Worker是运行这些线程的进程。Stream Grouping规定了Bolt接收什么东西作为输入数据。数据可以随机分配(术语为Shuffle),或者根据字段值分配(术语为Fields),或者 广播(术语为All),或者总是发给一个Task(术语为Global),也可以不关心该数据(术语为None),或者由自定义逻辑来决定(术语为 Direct)。Topology是由Stream Grouping连接起来的Spout和Bolt节点网络。

More...

Storm项目:流数据监控 <6>最新代码结构及详解

作者: blogchong | 分类: 原创-Storm实时处理 | 评论:0人 | 浏览:

1 文档说明

DataOptTopology项目由之前的monitorTopology整理而来,并且在此基础上增加了功能,梳理了代码。

代码托管到了github,搜索dataopttopology,或者直接访问下面链接:

代码获取:https://github.com/blogchong/DataOptTopology

2 代码结构说明

2.1 代码树

//7个包,20java文件

More...

实时处理方案架构

作者: blogchong | 分类: 原创-Storm实时处理 | 评论:0人 | 浏览:

1 文档说明

该文档描述的是以storm为主体的实时处理架构,该架构包括了数据收集部分,实时处理部分,及数据落地部分。

关于不同部分的技术选型与业务需求及个人对相关技术的熟悉度有关,会一一进行分析。

该架构是本人所掌握的一种架构,可能会与其他架构有相似的部分,个人会一一解释对其的理解。

这个文章写的很详细,相信对大家在实时处理整体理解上会有帮助的。

 

More...

Storm项目:流数据监控 <5>Zookeeper统一配置

作者: blogchong | 分类: 原创-Storm实时处理 | 评论:0人 | 浏览:

1 文档说明

好久没更新storm相关的文章了(快一个月了),很早以前就有朋友提出过storm的拓扑任务会出现supervisor各节点配置麻烦的问题,基于此,我很早就考虑如何解决这个问题,直到现在才把这个问题解决(工作小忙)。

More...

Storm项目:流数据监控 <4>流数据监控MetaQ接口

作者: blogchong | 分类: 原创-Storm实时处理 | 评论:2人 | 浏览:

1 文档说明

 

该文档为storm模拟项目系列文档之一,是MetaQstorm接口的说明文档,主要介绍了如何集成MetaQ到项目代码中。

More...

Storm项目:流数据监控 <3>流数据监控示例运行

作者: blogchong | 分类: 原创-Storm实时处理 | 评论:0人 | 浏览:

 1 文档说明

该文档为storm模拟项目第三份文档,第一份文档简单的介绍了模拟项目的设计,第二份文档为关键代码详解,这份文档则是示例运行的文档,从源代码打包到配置文件配置,lib文件导入,及任务提交,最后到处理数据输出到mysql中,这一整个流程。

More...

Storm项目:流数据监控 <2>流数据监控代码详解

作者: blogchong | 分类: 原创-Storm实时处理 | 评论:2人 | 浏览:

 1 项目概述

1.1 数据流向

流数据监控为storm模拟项目,模拟数据源从log文件中读取数据,并逐条发射到监控Bolt中,MonitorsBolt读取配置文件MonitorBolt.xml中的匹配规则,包括正则匹配、范围匹配、常规模糊匹配及常规完全匹配,多个条件可以组合多种匹配方式,多个条件字段可以有两种不同的逻辑关系。MonitorBolt在处理数据之后(过滤出符合匹配规则的数据),发射到数据持久化Bolt中,MysqlBolt读取配置文件MysqlBolt.xmlmysql相关信息,包括mysqlhost及端口,usernamepassworddatabasefrom,最后将数据插入mysql中。

1.2 代码树

                                              

1.2 代码树

源码简单说明:

Storm包中为总体运行的TopologyStorm.base目前只有myslq预处理的一个类,storm.boltbolt处理类,包括monitorboltprintboltstorm.spout包中为spout源数据接口,storm.source为构造源数据的一个类(这个可以忽略),storm.xml为配置文件读取类,domain.log为源数据,MonitorBolt.xmlMyslqBolt.xml分别为配置文件。

 

More...