Storm 入门知识
为什么用Storm它是一个分布式的开源、实现计算框架。可以轻松使用它处理流式数据,类似hadoop对数据进行批处理。Storm的一些使用场景:- realtime analytics- online machine learning- continuous computation- distributed RPC- ETLStorm集成了常见数据库的操作方式。
为什么用Storm
它是一个分布式的开源、实现计算框架。可以轻松使用它处理流式数据,类似hadoop对数据进行批处理。
Storm的一些使用场景:
- realtime analytics
- online machine learning
- continuous computation
- distributed RPC
- ETL
Storm集成了常见数据库的操作方式。
Storm特性
- 简化编程
- 容错 Storm集群会关注工作节点状态,如果宕机了必要的时候会重新分配任务。
- 可扩展 所有你需要为扩展集群所做的工作就是增加机器。Storm会在新机器就绪时向它们分配任务。
- 可靠的 所有消息都可保证至少处理一次。如果出错了,消息可能处理不只一次,不过你永远不会丢失消息。
- 快速 速度是驱动Storm设计的一个关键因素
- 事务性
Storm集群两类结点
主控节点 Master Node
运行Nimbus的后台程序,负责在Storm集群内分发代码,分配任务给工作机器,并且负责监控集群运行状态。类似于Hadoop中JobTracker的角色。
工作结点 Work Node
运行Supervisor的后台程序,负责监听从Nimbus分配给它执行的任务,据此启动呈停止执行任务的工作进程。每一个工作进程执行一个Topology子集;一个运行中的Topology由分布在不同工作节点上的多个工作进程组成。
- Nimbus和Supervisor之间是由Zookeeper来协调工作的。
- Nimbus和Supervisor进程都是快速失败和无状态的
- Storm集群所有的状态要么在Zoopkeeper集群中,要么存储在本地磁盘上。如果kill -9杀死进程,它可以在重启后继续工作,以使得Storm运行稳定。
(经典的示意图)
系统底层,Storm使用了zeromq(http://www.zeromq.org)。它是一种可嵌入的网络通讯库:
- 一个并发架构的Socket库
- 对于集群产品和超级计算,比TCP要快
- 可通过inproc , IPC , TCP , Multicast通信
- 异步I/O可扩展的多核消息传递应用程序
- 利用fanout,PUB-SUB, Pipeline , REQ-REP 实现N-N连接。
Storm使用其push/pull sockets功能。
Spout
Storm集群的输入流由Spout管理,Spout把数据传递给bolt。
bolt可以把数据存储,或传递给其它bolt。
Storm 集群就是在一连串的bolt之间转换Spout传过来的数据。
可以使用Spout读取一个文件、socket、http等,Spout传给一个bolt,在bolt里传递的结果可以在数据库随时查看。
Topologies
在Storm上做实时计算,需要创建”Topology”,一个topology是一个计算过程的描述。它的每个节点包含处理逻辑,节点之间的连接表明了数据在节点之间是如何传递的。
这里的节点是指topology中计算过程的每一个步骤。
Streams
Storm 的核心抽象概念,相当于一个无限的tuple序列。Storm将一个stream转换成一个新stream的primitive.
数据模型
Storm使用tuple作数据模型。一个tuple是命名过的值列表,字段可以是任何类型对象。
参考:
http://storm.apache.org/releases/1.0.1/index.html
http://ifeve.com/getting-started-with-stom-index/
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)