Storm基础知识

1.定义

Storm就是一个分布式实时大规模数据流的处理框架。官网上的定义是:Storm is a distributed real time computation system,Storm exposes a set of primitives for doing real time computation。

官网: http://storm.apache.org/

2.优势

Extremely broad set of use cases

Scalable

Guarantees no data loss

Extremely robust

Fault-tolerant

Programming language agnostic

这里有详细的说明: http://storm.apache.org/documentation/Rationale.html。

3.概念

Storm Cluster分两类节点,master node和worker node,各自的deamon是Nimbus和Supervisor,为了管理,中间加了一个Zookeeper,结构如下:


Nimbus和Supervisor是stateless和fail-fast的,而zooKeeper负责管理他们,即便他们挂了,Zookeeper也能唤醒并使之继续执行。Nimbus主要负责任务分配,而supervisor主要负责具体任务的管理工作。

Topologies则是对数据逻辑与信息传递的抽象,是一个重点概念。数据如何去处理,处理的数据发到哪里,主要就是这个概念了。它下面还有Spout和Bolt。

Stream是Storm各个概念的重点。官方概念:A stream is an unbounded sequence of tuples.。这个框架本身提供了数据流处理的方法,将一般的数据加工成合适的数据。先看图。


Spout是数据流的源,bolt则要以数据流作为其输入。

tuple,不言而喻,是基本处理的数据抽象。字有些多,我偷懒,直接贴原文了。


3.简单例子

用官网的例子。

Storm有两种模式,local和distributed,前者是本地线程模拟,主要测试,后者是用实际的机器的,实际效果好。


```

java Config conf = new Config();

conf.setDebug(true); 

conf.setNumWorkers(2);

LocalCluster cluster = new LocalCluster(); 

cluster.submitTopology(“test”, conf, builder.createTopology()); 

Utils.sleep(10000);

cluster.killTopology(“test”); 

cluster.shutdown(); 

```

例子中,运行10s后,结束。

Stream grouping

组件之间如何发送tuples,如图;


```

java TopologyBuilder builder = new TopologyBuilder();

builder.setSpout(“sentences”, new RandomSentenceSpout(), 5); 
builder.setBolt(“split”, new SplitSentence(), 8) .shuffleGrouping(“sentences”);

builder.setBolt(“count”, new WordCount(), 12) .fieldsGrouping(“split”, new Fields(“word”));

```

SplitSentence将句子分为词,返回;WordCount持有一个Map,接受一个词,统计,返回这个词。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值