1. 要解决的问题:代码打包
前一篇的代码,在IDEA中通过maven工程创建,通过IDEA完成代码打包
1)File -> Project Structure
2) 选择Artifacts, 并点击加号进行新建
3)选择JAR,并根据module依赖关系进行
4)选择 主类,并设置Manifest文件创建在targetclasses文件夹下(manifest文件主要是说明哪一个class是主类,class在哪些第三方依赖包内)
5) 根据需要,将必要的第三方依赖包加入(由于是要上传到集群,而storm相关的class文件,集群中已经具备,因此并不不要额外添加依赖包),下图演示的是需要将第三方依赖包加入的配置结果
6) 选择Build->Build Artifacts
在弹出的小窗口中,确认选择Build
7)Build完成后,IDEA下方的Event log会给出完成提示
8)项目所在目录,此时会出现1个out目录
进入该目录,并一路向下,就会看到最终打包完成的JAR包
2. 打包代码上传集群
1)在主节点上创建1个目录,放置打包后的JAR文件
以我的为例,JAR文件将放置在/usr/local/src/package目录下,通过winscp或者其他FTP工具将打包好的JAR文件放入即可
2)在主节点通过storm jar命令提交拓扑任务
WordCountTopology是代码主类,其中含有main函数并在函数中定义了Topology, WordCount是输入参数,用于给Topology任务取名
3)等待终端提交任务,通过如下的信息提示可以确认Topology任务已经成功提交
4)通过storm UI查看Topology任务运行情况(http://master:8080)
Topology可视化查看各个组件
5)从Topology任务的概况可以看到只有1个worker进程,位于slave2,通过slave2机器上storm安装目录下logs目录中的worker进程日志,可以看到实时输出
注意:putBolt类中最终输出结果,是通过System.out.println()打印结果到终端,在集群行运行时该输出会重定向到worker进程日志
通过 tail -f worker-6703.log 来实时观察Topology任务的实时输出