Storm简介

来源:互联网 发布:php怎么调用存储过程 编辑:程序博客网 时间:2024/06/05 16:14
一、Storm简介
Storm是Twitter开源的一个分布式的实时计算系统,用于数据的实时分析,持续计算等
官网地址:http://www.storm-project.net/
源码地址:https://github.com/nathanmarz/storm

应用场景:1、实时推荐系统,比如我们在某电商网站去买东西,我们会在网页旁边看到我们自己所需要的商品相关的系列产品。而hadoop只是做离线数据分析,无法做到实时分析计算。
2、股票也是可以利用Storm的实时计算特点来实现。


二、Storm体系结构



在Storm集群中,有两类节点:主节点master node和工作节点worker nodes。主节点运行着一个叫做Nimbus的守护进程。这个守护进程负责在集群中分发代码,为工作节点分配任务,并监控故障。Supervisor守护进程作为拓扑的一部分运行在工作节点上。一个Storm拓扑结构在不同的机器上运行着众多的工作节点。
Nimbus并不是真正干活的'人',而是通过ZK去发布任务,Supervisor从ZK中监听到任务,并且拿到任务之后采取真正,启动多个worker干活,Supervisor最后会将处理成功与否的高数主节点(Nimbus)
Nimbus主节点:
主节点通常运行一个后台程序--Nimbus,用户响应分布集群中的节点,分配任务和检测故障。Supervisor工作节点:
工作节点同样会运行一个后台程序--Supervisor,用于收听工作指派。要求运行工作进程。每个人节点都是topology中的一个子集的实现。而Nimbus和Supervisor之间的协调则通过ZK系统或者集群
Zookeeper
zookeeper是完成Supervisor和Nimbus之间的协调服务。而应用程序实现实时的逻辑则被封装到Strom中的‘topology’,topology是一组由spout(数据源)和bolts(数据操作)通过Stream Groupings进行连接的图。
  • spout 龙卷,读取原始数据为bolt提供数据
  • bolt 雷电,从spout或其它bolt接收数据,并处理数据,处理结果可作为其它bolt的数据源或最终结果

下面是一个Topology内部Spout和Bolt之间的数据流关系:
想像播音员读的字幕作为你的数据输入流。你可以用一个spout读取一个文件(或者socket,通过HTTP,或者别的方法)。文本行被spout传给一个bolt,再被bolt按单词切割。单词流又被传给另一个bolt,在这里每个单词与一张政治人名列表比较。每遇到一个匹配的名字,第二个bolt为这个名字在数据库的计数加1


Storm的特性
  • 简化编程    如果你曾试着从零开始实现实时处理,你应该明白这是一件多么痛苦的事情。使用Storm,复杂性被大大降低了。
  • 高性能 可以使用几台普通的服务器搭建环境,结余成本
  • 分布式 Strom非常适用于分布式场景。
  • 容错         Storm集群会关注工作节点状态,如果宕机了必要的时候会重新分配任务。
  • 可扩展    所有你需要为扩展集群所做的工作就是增加机器。Storm会在新机器就绪时向它们分配任务。
  • 可靠的    所有消息都可保证至少处理一次。如果出错了,消息可能处理不只一次,不过你永远不会丢失消息。
  • 快速        速度是驱动Storm设计的一个关键因素,保证消息能够得到快速处理,使用ZeroMQ作为其底层消息队列
  • 本地模式 Storm有一个‘本地模式’, 可以在处理过程中完全模拟Storm集群。  

原创粉丝点击