欢迎使用CSDN-markdown编辑器

来源:互联网 发布:二对二网络分线器 编辑:程序博客网 时间:2024/05/18 01:16

最近闲来无事,看了些目前比较火的storm资料,自己在公司测试环境搭了套storm集群。下面把一些关键点记录下来。
官网地址:http://storm-project.net/
源码地址:https://github.com/nathanmarz/storm
技术论坛:https://groups.google.com/forum/#!forum/storm-user

一,关于storm的一些概念:
Storm是Twitter开源的一个分布式的实时计算系统,作为同样在大数据处理方面比较火的hadoop,他们之间有什么区别呢?
简要地说,他们的侧重点的不同,得益于HDFS这个牛逼的分布式文件系统,hadoop面向离线的海量数据计算,注重数据的吞吐,数据量越大越适合它的胃口,但是它做不到real-time,具有一定的延时性。
与hadoop对比,storm侧重点就在于real-time,注重时效性,它会持续处理到达的数据,特点是“快”。
再举个通俗的例子,hadoop相当于垂直电梯,装满了人之后再启动,人想上电梯得先等一会儿(延时性),如果没人按电梯,那么它会停止运转;
而storm就类似于商场里的手扶电梯,它会一直运转,人来了直接站上去(时效性),速度快,即使没有人过来,它也会运转(貌似现在改进了,没人的时候会低速运转)。

在编程模型上的区别是:hadoop把任务封装成Map-Reduce,任务执行完之后会结束。而storm把任务打包成Topology,一旦任务提交之后就不会结束,除非你强制kill

storm使用场景:数据的实时分析,持续计算,分布式RPC等等。
storm的基本元素:Topology、Stream、Spout、Bolt等等
编程模型(摘自storm官网):

        spout                                 bolt                                 bolt 

storm编程开发常用的类:
BaseRichSpout (消息生产者)
BaseBasicBolt (消息处理者)
TopologyBuilder (拓扑的构建器)
Values (将数据存放到values ,发送到下个组件)
Tuple(发送的数据被封装到Tuple,可以通tuple接收上个组件发送的消息)
Config (配置)
StormSubmitter / LocalCluster (拓扑提交器)

storm集群物理模型:

Nimbus:主控节点运行的进程,用于提交、分配任务,监控状态等。
Supervisor:每一个工作节点上面运行一个叫做Supervisor进程,负责从zookeeper获取任务,管理worker进程
worker:实际运行具体逻辑的进程,由supervisor管理
zookeeper:Nimbus和Supervisor之间的所有协调工作都是通过Zookeeper集群完成,包括任务的分发。

0 0
原创粉丝点击