storm+kafka测试案例

一.storm本地测试

  1. 创建spout 继承 BaseRichSpout
  2. 创建bolt 继承 BaseBasicBolt
  3. 创建topology 使用TopologyBuilder createTopology()创建
  4. 启动topology 使用 LocalCluster submitTopology发布

二.本地storm+kafka

  1. 引入storm kafka依赖
  2. 创建KafkaSpout
    注意kafkaSpout是通过 spoutConfig创建 需指定spoutConfig的scheme (自己写一个实现scheme接口 指定key value的值)
  3. 创建bolt
  4. 创建topology
  5. 启动topology (如果在集群启动需要 StormSubmitter.submitTopology(args[0],conf,builder.createTopology())?

三.storm集群搭建 在storm集群上发布topology

  1. 启动zookeeper bin/zkServer.sh start
  2. 配置storm.yaml 复制到集群各个节点
  3. 在节点1 启动 (启动)
    storm nimbus &
    storm ui &
  4. 在节点2 启动
    storm nimbus &
    storm supervisor &
  5. 在节点3启动
    storm supervisor &
  6. 在节点2部署topology(将topology项目打成jar包)
    ./storm jar storm-test.jar com.example.kafkademo.mystorm.MyTopology(程序入口主类) mytopology(拓扑名称)
  7. 在192.168.1.106:8080 查看已经发布的 topology , 也可以在 bin/zkCli.sh 中查看 storm节点

四.storm相关知识

  1. storm结构
    (1). nimbus调度卫星 supervisors执行者
    (2). supervisors 一个supervisor对应一台服务器,对应多个workers(JVM)(一个worker一个进程,一个topology),
    (3). 一个worker可以对应多个executor(一个executor对应一个进程),
    (4). 一个executor可以对应多个task, 如下图:
    storm+kafka测试案例_第1张图片
  2. spout中的nextTupple()
    该方法为spout线程死循环执行,如果collector.emit()未执行成功默认1s执行1000次
    如果执行成功1s轻松百万+
  3. shuffleGrouping(“spoutid”) fieldGrouping(new Field(“value”))通过spoutid 或哲哲通过filed进行分组
  4. storm整合springboot 将springboot的启动类 放在 spout的prepare()方法中即可

你可能感兴趣的:(java)