storm 安装

1、安装一个zookeeper集群

2、上传storm的安装包,解压

3、修改配置文件storm.yaml

#所使用的zookeeper集群主机
storm.zookeeper.servers:
     - "zjgm01"
     - "zjgm02"
     - "zjgm03"

#nimbus所在的主机名
nimbus.host: "zjgm01"

启动storma
在nimbus主机上
nohup ./storm nimbus 
nohup ./storm ui 

在supervisor主机上
nohup ./storm supervisor 





结果

网址 192.168.2.100:880

在这里插入图片描述

在这里插入图片描述

OkBolt代码

package com.zhongruan.storm;

import backtype.storm.task.TopologyContext;
import backtype.storm.topology.BasicOutputCollector;
import backtype.storm.topology.OutputFieldsDeclarer;
import backtype.storm.topology.base.BaseBasicBolt;
import backtype.storm.tuple.Tuple;

import java.io.FileWriter;
import java.io.IOException;
import java.util.Map;
import java.util.UUID;

public class OkBolt extends BaseBasicBolt {
    FileWriter fileWriter=null;

    @Override
    public void prepare(Map stormConf, TopologyContext context) {
        try {
            fileWriter=new FileWriter("/home/hadoop/stormdata/"+ UUID.randomUUID());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    public void execute(Tuple tuple, BasicOutputCollector basicOutputCollector) {
        String name=tuple.getString(0);
        String fName=name+"_ok";
        try {
           fileWriter.write(fName);
           fileWriter.write("\n");
           fileWriter.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }


    public void declareOutputFields(OutputFieldsDeclarer outputFieldsDeclarer) {

    }
}

RandomSpount代码

package com.zhongruan.storm;

import backtype.storm.spout.SpoutOutputCollector;
import backtype.storm.task.TopologyContext;
import backtype.storm.topology.OutputFieldsDeclarer;
import backtype.storm.topology.base.BaseRichSpout;
import backtype.storm.tuple.Fields;
import backtype.storm.tuple.Values;

import java.util.Random;
import java.util.Map;

public class RandomSpount extends BaseRichSpout {
    String[]phones={"iphone","huawei","xiaomi","xiaolajiao","meizu"};

    private SpoutOutputCollector collector;



    public void open(Map map, TopologyContext topologyContext, SpoutOutputCollector spoutOutputCollector) {
         this.collector=spoutOutputCollector;
    }


    public void nextTuple() {
        Random random=new Random();
        int index=random.nextInt(phones.length);
        String phonename=phones[index];
        collector.emit(new Values(phonename));

    }


    public void declareOutputFields(OutputFieldsDeclarer outputFieldsDeclarer) {
         outputFieldsDeclarer.declare(new Fields("pn"));
    }
}

ToMain 代码

package com.zhongruan.storm;

import backtype.storm.Config;
import backtype.storm.StormSubmitter;
import backtype.storm.generated.AlreadyAliveException;
import backtype.storm.generated.InvalidTopologyException;
import backtype.storm.generated.StormTopology;
import backtype.storm.topology.TopologyBuilder;

public class ToMain {
    public static void main(String[] args) throws AlreadyAliveException, InvalidTopologyException {
        TopologyBuilder builder=new TopologyBuilder();

        builder.setSpout("randomSpount",new RandomSpount());
        builder.setBolt("upperBolt",new UpperBolt(),4).shuffleGrouping("randomSpount");
        builder.setBolt("okBolt",new OkBolt(),4).shuffleGrouping("upperBolt");

        StormTopology topology=builder.createTopology();
        Config conf=new Config();
        conf.setNumWorkers(4);
        StormSubmitter.submitTopology("ramtopology",conf,topology);
    }
}

UpperBolt 代码

package com.zhongruan.storm;


import backtype.storm.topology.BasicOutputCollector;
import backtype.storm.topology.OutputFieldsDeclarer;
import backtype.storm.topology.base.BaseBasicBolt;
import backtype.storm.tuple.Fields;
import backtype.storm.tuple.Tuple;
import backtype.storm.tuple.Values;

public class UpperBolt extends BaseBasicBolt {



    public void execute(Tuple tuple, BasicOutputCollector basicOutputCollector) {
        String phonename=tuple.getString(0);
        String upName=phonename.toUpperCase();
        basicOutputCollector.emit(new Values(upName));

    }


    public void declareOutputFields(OutputFieldsDeclarer outputFieldsDeclarer) {
         outputFieldsDeclarer.declare(new Fields("uppername"));
    }
}

打包上传linux

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值