自己有点想法,想用Spring + Storm + Kafka做点实时数据处理的内容,因此将会写下一系列的博客来记载自己的开发过程。
【~~~~~~~~~~~~~~~~~~版权所有 欢迎转载 但请保留出处~~~~~~~~~~~~~~~~~~~~~】
【https://blog.csdn.net/LWJ285149763/article/details/81053473】
1.基本配置
(1)修改主机名称信息
本项目部署Ubuntu18.04LTS上,首先需要修改的是程序读取的主机名称,修改方式如下:
修改内容在/etc/hosts和/etc/hostname中进行修改,之后,使用命令行:
sudo service network-manager restart (自动获取的ip,在这种重启下会改变,因此,建议设置固定IP)
(2)部署ZooKeeper
这里使用的版本是zookeeper-3.4.12,解压之后,复制conf下的zoo_sample.cfg,并修改如下内容:
数据的存储地址:
dataDir=/home/lzs2851/Storm/zookeeper-data
其他的默认即可
(3)部署Storm(单机部署)
使用版本为apache-storm-1.2.1,需要修改的内容为conf下的storm.yaml文件,具体修改如下:
storm.zookeeper.servers:
- "host01" // 在上面修改的主机名
storm.zookeeper.port: 2181
nimbus.seeds: ["host01"] // 在上面修改的主机名
storm.local.dir: "/home/lzs2851/Storm/apache-storm-1.2.1" //storm主程序放置的目录
(4)部署Kafka
这里使用版本为kafka_2.11-1.1.0,修改内容主要在config文件夹中,具体内容如下:
consumer.properties中,修改bootstrap.servers=host01:9092
producer.properties中,修改bootstrap.servers=host01:9092,
server.properties中,修改listeners=PLAINTEXT://host01:9092,advertised.listeners=PLAINTEXT://host01:9092
2.在系统中设置环境变量
执行命令sudo gedit ~/.bashrc,增加环境变量
- #java
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
- #zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf
- #storm
export PATH=$PATH:$STORM_HOME/bin
- #kafka
export PATH=$PATH:$KAFKA_HOME/bin
之后,执行source ~/.bashrc命令即可使环境生效
3.运行测试
- Zookeeper启动
- Storm启动
storm ui &
storm supervisor &
storm logviewer &
- Kafka启动
kafka-server-start.sh ../config/server.properties
- Kafka创建主题
kafka-topics.sh --zookeeper host01:2181 --create --topic msgTopic2 --partitions 5 --replication-factor 1
- 查看主题列表
- Kafka发送和接收消息:
kafka-console-producer.sh --broker-list host01:9092 --topic msgTopic1
//接受消息
kafka-console-consumer.sh --zookeeper host01:2181 --topic msgTopic2 --from-beginning
- 提交jar包
- 测试消息的提交
{"timeSpan":"864000","timeStep":"86400"}
4.运行中可能存在的问题
1.如果在启动Storm时遇到如下情况,则按照下面进行设置(在ubuntu16中一般不会出现,我是在ubuntu18中遇到的):/home/lzs2851/MyProject/Storm/apache-storm-1.2.1/bin/storm: 行 48: 10 * 行 + 行: 语法错误: 需要操作数 (错误符号是 "行 + 行")
/home/lzs2851/MyProject/Storm/apache-storm-1.2.1/bin/storm: 行 49: ((: < 26 : 语法错误: 需要操作数 (错误符号是 "< 26 ")
/home/lzs2851/MyProject/Storm/apache-storm-1.2.1/bin/storm: 行 77: /usr/bin/python: 没有那个文件或目录
默认情况下,系统中是安装有python的,一般在/usr/bin中,在ubuntu18.04 LTS中是python2.7和python3.6,但是在storm的程序中,找的版本是python2.6,如果不想重新安装python,则可以将storm中的storm文件中的第42行左右的【PYTHON=/usr/bin/python】改为【PYTHON=/usr/bin/python2.7】
2.若出现“kill xxxx: 没有那个进程”,删除storm.local.dir中的supervisor缓存文件,重新启动即可。出现该问题是由于上一次Supervisor的异常终止,例如断电等
作者介绍
测绘科学与技术在读博士,主要研究空间信息处理与数据服务,使用框架主要有Spring Cloud、Storm、Hadoop等!擅长空间信息后台数据服务,尤其是外层空间卫星等目标的数据服务。