准备工作:
1、用root用户登录,创建storm用户。useradd storm
2、将apache-maven-3.2.1.storm ;zkui.storm;
kafka_2.9.2-0.8.1.1.storm; zookeeper-3.4.6;解压并放到storm用户下 /home/storm/
kafka_2.9.2-0.8.1.1.storm; zookeeper-3.4.6;解压并放到storm用户下 /home/storm/
解压命令tar -xvf xxxx 或unzip xxxx
3、将storm用户下的文件的拥有者改为storm并改变权限
chown -R storm:storm /home/storm/
chmod +x /home/storm/ *
(一)部署Zookeepoer的步骤
1、切换到storm用户
su - storm
2、进入zookeeper目录
cd zookeeper-3.4.6
3、修改zookeeper的配置文件
vim conf/zoo.cfg
4、修改配置文件中的dataDir、dataLogDir、server.1
dataDir=/home/storm/zookeeper-3.4.6/data (改成自己的目录)
dataLogDir=/home/storm/zookeeper-3.4.6/logs (改成自己的目录)
server.1=hostname:4887:5887 (改成自己的hostname或IP)
因为是伪集群所以server.2和server.3没有用到注释掉
5、启动zookeeper
修改bin下执行权限: chmod +x *
bin/zkServer.sh start
6、启动后查看状态:
bin/zkServer.sh status
结果状态Mode: standalone
7、启动zookeeper的客户端
bin/zkCli.sh
(二)zkui安装
1、首先安装编译工具mvn:
vim ~/.bash_profile
## export mvn3
export MVN_HOME=/home/storm/apache-maven-3.2.1.storm/apache-maven-3.2.1
export PATH=$PATH:$MVN_HOME/bin
2、进入zkui目录,清理安装zkui
mvn clean install
安装的时候一定要保持网络连续,否则会造成加载的包不完整,
因为在加载包的时候先建立包名再往里加载数据,如果刚建立了包名就断开了网络,
数据还没有加载完。等下次在加载的时候系统搜索到包名会认为这个包已经加载完毕,
这样就造成了包的丢失。
解决方法是:加载的数据会放在zkui文件同目录下的.m2这个隐藏文件里面,
mvn在再次加载的时候会查出哪个包不完整,在.m2下找到缺失的包重新加载。
不过这个方法我没有找到缺失的包,把.m2下的文件全删了,在重新加载也不行。
我的解决方法是删了zkui这个文件重新导入,重新假造mvn。
3、创建软链接
在zkui目录下 执行
在zkui目录下 执行
ln -s target/zkui-2.0-SNAPSHOT-jar-with-dependencies.jar zkui-2.0-SNAPSHOT-jar-with-dependencies
4、修改配置文件
vim config.cfg
zkServer=192.168.88.147:2181(填写自己的ip;2181端口号不要改动,以后还会有好多地方会用到这个,
如果改了以后都要改动)
5、启动:nohup java -jar zkui-2.0-SNAPSHOT-jar-with-dependencies.jar &
(&是表示后台执行)
查看:http://192.168.88.147:9090 或者 jps -l
登录账号
"username":"admin" , "password":"manager"
(三)kafka部署
1、进入kafka文件
1、进入kafka文件
2、修改配置文件conf/server.properties:
broker.id=0
host.name=192.168.88.147
zookeeper.connect=192.168.88.147:2181可逗号分隔配置多个
(配置文件如果ip地址没写对会造成kafka启动后马上停掉)
3、确保有执行权限
chmod +x sbin/*
4、修改配置文件vim log4j.properties
log4j.appender.E.File = /home/storm/kafka_2.9.2-0.8.1.1.storm/kafka_2.9.2-0.8.1.1/logs/error.log
log4j.appender.D.File = /home/storm/kafka_2.9.2-0.8.1.1.storm/kafka_2.9.2-0.8.1.1/logs/debug.log
5、启动kafka服务
sbin/start-kafka.sh
查看是否启动: jsp -l
(四)测试实例
1、创建topic
bin/kafka-topics.sh --create --zookeeper 192.168.88.147:2181 --replication-factor 1 --partitions 1 --topic topic-ji-name
(IP不能是localhost)
如果已经创建不需要再次创建
2、启动productor
bin/kafka-console-producer.sh --broker-list 192.168.88.147:9092 --topic topic-ji
3、启动consumer
bin/kafka-console-consumer.sh --zookeeper 192.168.88.147:2181 --topic topic-ji
(IP不能localhost)
4、在productor端输入,看consumer端的输出
再开一个控制器,在一个控制器中控制consumer端,一个控制器控制productor端,
在productor端输入任何东西,在consumer端回显示同样的内容
(五)运行脚本,生成日志
1、脚本准备:
从老师处拿到shelllogger.sh
2、修改脚本
# start cmd:
# nohup sh shellcrawler.sh >> shellcrawler.log 2>&1 &
日志内容,自由修改。
3、启动:通过重定向的方式生成access.log日志
nohup sh shelllogger.sh &
4、在kafka下运行
nohup tail -f /home/storm/logger/access.log | bin/kafka-console-producer.sh --broker-list 192.168.88.147:9092 --topic topic-ji-name >logs/producer.log 2>&1 &
5、在consumer端下可以看到运行脚本的内容