目录
- 1,基础环境
- 2,mac 上storm standalone安装
- 2.1安装storm
- 2.2安装zookeeper
- 2.3启动storm
- 3,开启storm第一个Topology实时工作流
- 4,代码结构解读
- 5,storm 输出存储
1,基础环境
java是基础环境这一个一定需要有,其次是maven包管理,妈妈再也不用担心包的安装依赖了。当然主角storm的安装必不可少,电脑本地安装standalone的需要的依赖zookeeper。
JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_251.jdk/Contents/Home"
CLASS_PATH="$JAVA_HOME/lib"
PATH=".;$PATH:$JAVA_HOME/bin"
M2_HOME=/xxxxxxx/javabin/apache-maven-3.6.3
export M2_HOME
PATH=${PATH}:${JAVA_HOME}/bin:${M2_HOME}/bin
export STORM_HOME=/xxxxxxx/javabin/apache-storm-1.2.3
export ZOOKEEPER_HOME=/xxxxxxx/javabin/apache-zookeeper-3.6.1
export PATH=$PATH:$STORM_HOME/bin:$ZOOKEEPER_HOME/bin
export JAVA_HOME
2,mac 上storm standalone安装
简而言之:下载对应版本的文件包,解压到自己目录中,然后在 ~/.bash_profie 配置环境变量,见1基础环境
2.1安装storm
下载storm http://storm.apache.org/downloads.html 注意是带有bin的安装包
2.2安装zookeeper
下载zookeeper http://mirror.bit.edu.cn/apache/zookeeper/
进入zookeeper的conf目录:cp zoo_sample.cfg zoo.cfg
启动zookeeper:bin/zkServer.sh start
查看zookeeper的运行状态: bin/zkServer.sh status
2.3启动storm
需要在apache-storm-1.2.3/conf/storm.yaml 配置IP
完事具备,启动你的storm:
storm nimbus&
storm supervisor&
storm ui&
恭喜你看到下图你就成功了一半:
3,开启storm第一个Topology实时工作流
很人性的是 storm安装包中有完整的测试domo; 如下操作安装依赖和编译。
cd apache-storm-1.2.3/examples/storm-starter
mvn clean install -DskipTests=true
mvn compile exec:java -Dstorm.topology=storm.starter.StatefulTopology
上传至线上/storm
mvn clean install -DskipTests=true
mvn package
这里测试了两个例子
storm jar /Users/mtdp/javabin/apache-storm-1.2.3/examples/storm-starter/target/storm-starter-1.2.3.jar storm.starter.StatefulTopology production-topology-1
storm jar /Users/mtdp/javabin/apache-storm-1.2.3/examples/storm-starter/target/storm-starter-1.2.3.jar org.apache.storm.starter.WordCountTopology wordcont
4,代码结构解读
grouping策略就是在Spout与Bolt、Bolt与Bolt之间传递Tuple的方式。总共有七种方式
1)shuffleGrouping(随机分组)
2)fieldsGrouping(按照字段分组,在这里即是同一个单词只能发送给一个Bolt)
3)allGrouping(广播发送,即每一个Tuple,每一个Bolt都会收到)
4)globalGrouping(全局分组,将Tuple分配到task id值最低的task里面)
5)noneGrouping(随机分派)
6)directGrouping(直接分组,指定Tuple与Bolt的对应发送关系)
7)Local or shuffle Grouping
8)customGrouping (自定义的Grouping)
5,storm 输出存储
数据储存,可以根据业务需要选择:Druid, hive, redis等等。
我也自己写了一个案例,需要源代码的同学,可以私聊我。。。
storm list 查看任务状态
参考文献:
https://www.cnblogs.com/aijianiula/p/5185019.html
http://www.haroldnguyen.com/blog/2015/01/setting-up-storm-and-running-your-first-topology/
https://www.cnblogs.com/ahu-lichang/p/6871920.html