Storm部署与运行

部署Storm集群。

环境配置

Strom

下载

  • 首先从官网下载Strom压缩包,这里以最新的Strom1.2.2作为演示。

  • 解压到/usr/local:

    • sudo tar xzvf apache-storm-1.2.2.tar.gz -C /usr/local
      
  • 查看解压文件:

    • 54263785464
  • 需要重命名:

    • sudo mv /usr/local/apache-storm-1.2.2/ /usr/local/storm
      
  • 修改拥有者:

    • sudo chown -R hadoop:hadoop storm
      
  • 添加到环境变量

    • vim ~/.bashrc
      export STROM=/usr/local/storm
      source ~/.bashrc
      
    • 54263808417

修改配置文件

  • 进入软件目录,修改文件storm.yaml

    • cd /usr/local/storm/
      sudo vim conf/storm.yaml
      
  • 修改为本地server:

    • storm.zookeeper.servers:
      	- "localhost"
      	
       nimbus.seeds: ["localhost"]
      
       supervisor.slots.ports:
           - 6700
           - 6701
           - 6702
           - 6703
      
       storm.zookeeper.port: 2181
      
       storm.local.dir: "/usr/local/storm/storm-local"
      
       storm.health.check.dir: "healthchecks"
      
       storm.health.check.timeout.ms: 5000
      
    • 54263825588

Python

  • 检查是否有高于2.6版本的python:
  • 54263840682

启动storm

修改执行脚本

  • 参考这里修改脚本,主要是修改python的路径

  • 先查找自己的python路径:

    • ls /usr/bin/python*
      
    • 54263873871

  • 找到执行脚本,在./bin/storm中,根据之前的python路径修改

    • 54263881359

启动

  • 执行命令:

    • nohup storm nimbus >/dev/null 2>&1 &
      nohup storm supervisor >/dev/null 2>&1 &
      nohup storm ui >/dev/null 2>&1 &
      
    • 54263897807

    • 这里的2>&1表示就是把所有标准输出(&1)和标准出错(2)都扔到垃圾桶里面,最后的&表示后台执行

  • 这里可能需要几分钟才能完成启动,使用jps命令查看可以看到nimbus, supervisor, core:

    • 54267234424
  • 在浏览器中localhost:8080 上查看集群情况:

    • 54267238017
  • 成功!

测试运行

示例

  • /usr/local/storm/example目录下的storm-starter里有很多Storm的项目,比如DRPCWord Count

  • 在该目录路径下使用maven来打包Stormjar包

  • 首先找到该目录:

    • 54267261549
  • 我们发现该目录是用maven进行打包的:

    • 54267274812
  • 因此,我们可以使用IDEA来打包,也可以直接使用mvn:

    • mvn clean install -Dmaven.test.skip=true 
      mvn package
      

Stream Join的简单实例

WordCount

SentenceSpout.java

该文件为模拟外部输入

import java.util.Map;
import java.util.UUID;

import org.apache.storm.spout.SpoutOutputCollector;
import org.apache.storm.task.TopologyContext;
import org.apache.storm.topology.OutputFieldsDeclarer;
import org.apache.storm.topology.base.BaseRichSpout;
import org.apache.storm.tuple.Fields;
import org.apache.storm.tuple.Values;
import org.apache.storm.utils.Utils;

public class SentenceSpout extends BaseRichSpout {
   

    private SpoutOutputCollector spoutOutputCollector;
    private String[] sentences = {
   "the cow jumped over the moon", "an apple a day keeps the doctor away",
            "four score and seven years ago", "snow white and the seven dwarfs", "i am at two with nature"};

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

    public void nextTuple() {
   
        for (String sentence : sentences) {
   
            Values values = new Values(sentence);
            UUID msgId = UUID.randomUUID();
            this.spoutOutputCollector.emit(values, msgId);
        }
        Utils.sleep(1000);
    }

    public void declareOutputFields(OutputFieldsDeclarer outputfieldsdeclarer) {
   
        outputfieldsdeclarer.declare(new Fields("sentence"));
    }

}

SplitSentenceBolt.java

分割字符的bolt

import java.util.Map;

import org.apache.storm.task.OutputCollector;
import org.apache.storm.task.TopologyContext;
import org.apache.storm.topology.OutputFieldsDeclarer;
import org.apache.storm.topology.base.BaseRichBolt;
import org.apache.storm.tuple.Fields;
import org.apache.storm.tuple.Tuple;
import org.apache.
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值