kafka+storm初探

一、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 &
    topology任务调度:

    在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();
     }
}
    Spout源数据预研使用LinkedIn Kafka,将Spout根据topic来获取对应的生产信息,在storm集群中消费掉。


二、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 与storm整合开源项目也有很多,不需要二次开发,例如storm-kafka-0.8-plus。


    Kafka生产者,在大数据框架中也有使用flume进行数据生产。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值