一、storm简介
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节点网络。在Storm Concepts页面里对这些术语有更详细的描述。
运行Storm集群,你需要Apache Zookeeper、ØMQ、JZMQ、Java 6和Python 2.6.6。ZooKeeper用于管理集群中的不同组件,ØMQ是内部消息系统,JZMQ是ØMQ的Java。
安装详细:http://blog.csdn.net/qiyating0808/article/details/36041299
启动storm集群:
1
2
3
|
storm nimbus >
/dev/null
2>&1 &
storm supervisor >
/dev/null
2>&1 &
storm ui >
/dev/null
2>&1 &
|
在storm(0.9.2)目录下,有测试jar包(apache-storm-0.9.2-incubating/examples/storm-starter)可以进行集群环境验证。
任务调度方式:
1
2
3
4
5
|
#LocalCluster方式
storm jar storm-starter-topologies-0.9.2-incubating.jar storm.starter.WordCountTopology
#集群方式
storm jar storm-starter-topologies-0.9.2-incubating.jar storm.starter.WordCountTopology args
|
LocalCluster属于单机方式,白话就是可以不依赖集群进行结果测试验证,开发阶段该方式很有用,只要将storm依赖的jar引入project,使用单机方式在本地进行测试,通过后再投放到集群中。
示例代码片段(截取自WordCountTopology):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
public
static
void
main(String[] args)
throws
Exception {
TopologyBuilder builder =
new
TopologyBuilder();
builder.setSpout(
"spout"
,
new
RandomSentenceSpout(),
5
);
builder.setBolt(
"split"
,
new
SplitSentence(),
8
).shuffleGrouping(
"spout"
);
builder.setBolt(
"count"
,
new
WordCount(),
12
).fieldsGrouping(
"split"
,
new
Fields(
"word"
));
Config conf =
new
Config();
conf.setDebug(
true
);
if
(args !=
null
&& args.length >
0
) {
conf.setNumWorkers(
3
);
StormSubmitter.submitTopologyWithProgressBar(
"wordCount"
, conf, builder.createTopology());
}
else
{
conf.setMaxTaskParallelism(
3
);
LocalCluster cluster =
new
LocalCluster();
cluster.submitTopology(
"word-count"
, conf, builder.createTopology());
Thread.sleep(
10000
);
cluster.shutdown();
}
}
|
二、Kafka简介
安装过程几乎没有,解压后即可直接使用。
使用方式:
1
2
3
4
5
6
7
8
9
10
|
启动kafka
.
/kafka-server-start
.sh ..
/config/server
.properties
创建topic
.
/kafka-topics
.sh --topic kafkaToptic --create --zookeeper 127.0.0.1:2181 --replication-factor 1 --partition 1
查看consumer
.
/kafka-console-consumer
.sh --zookeeper 127.0.0.1:2181 --topic kafkaToptic --from-beginning
查看topic
.
/kafka-topics
.sh --list --zookeeper localhost:2181
生产消息
.
/kafka-console-producer
.sh --broker-list 127.0.0.1:9092 --topic kafkaToptic
|
Kafka生产者,在大数据框架中也有使用flume进行数据生产。