更换图片源

This commit is contained in:
罗祥
2020-05-25 11:05:03 +08:00
parent 0d6f0c8cc6
commit 7bcf53a7b2
85 changed files with 391 additions and 391 deletions

View File

@@ -22,7 +22,7 @@
下图为 Strom 的运行流程图,在开发 Storm 流处理程序时,我们需要采用内置或自定义实现 `spout`(数据源) 和 `bolt`(处理单元),并通过 `TopologyBuilder` 将它们之间进行关联,形成 `Topology`
<div align="center"> <img src="../pictures/spout-bolt.png"/> </div>
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/spout-bolt.png"/> </div>
## 二、IComponent接口
@@ -101,7 +101,7 @@ public interface ISpout extends Serializable {
**通常情况下,我们实现自定义的 Spout 时不会直接去实现 `ISpout` 接口,而是继承 `BaseRichSpout`。**`BaseRichSpout` 继承自 `BaseCompont`,同时实现了 `IRichSpout` 接口。
<div align="center"> <img src="../pictures/storm-baseRichSpout.png"/> </div>
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/storm-baseRichSpout.png"/> </div>
`IRichSpout` 接口继承自 `ISpout``IComponent`,自身并没有定义任何方法:
@@ -192,7 +192,7 @@ public interface IBolt extends Serializable {
同样的,在实现自定义 bolt 时,通常是继承 `BaseRichBolt` 抽象类来实现。`BaseRichBolt` 继承自 `BaseComponent` 抽象类并实现了 `IRichBolt` 接口。
<div align="center"> <img src="../pictures/storm-baseRichbolt.png"/> </div>
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/storm-baseRichbolt.png"/> </div>
`IRichBolt` 接口继承自 `IBolt``IComponent`,自身并没有定义任何方法:
@@ -216,7 +216,7 @@ public interface IRichBolt extends IBolt, IComponent {
这里我们使用自定义的 `DataSourceSpout` 产生词频数据,然后使用自定义的 `SplitBolt``CountBolt` 来进行词频统计。
<div align="center"> <img src="../pictures/storm-word-count-p.png"/> </div>
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/storm-word-count-p.png"/> </div>
> 案例源码下载地址:[storm-word-count](https://github.com/heibaiying/BigData-Notes/tree/master/code/Storm/storm-word-count)
@@ -382,7 +382,7 @@ public class LocalWordCountApp {
启动 `WordCountApp` 的 main 方法即可运行,采用本地模式 Storm 会自动在本地搭建一个集群,所以启动的过程会稍慢一点,启动成功后即可看到输出日志。
<div align="center"> <img src="../pictures/storm-word-count-console.png"/> </div>
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/storm-word-count-console.png"/> </div>
## 六、提交到服务器集群运行
@@ -437,7 +437,7 @@ storm jar /usr/appjar/storm-word-count-1.0.jar com.heibaiying.wordcount.Cluster
出现 `successfully` 则代表提交成功:
<div align="center"> <img src="../pictures/storm-submit-success.png"/> </div>
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/storm-submit-success.png"/> </div>
### 6.4 查看Topology与停止Topology命令行方式
@@ -449,13 +449,13 @@ storm list
storm kill ClusterWordCountApp -w 3
```
<div align="center"> <img src="../pictures/storm-list-kill.png"/> </div>
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/storm-list-kill.png"/> </div>
### 6.5 查看Topology与停止Topology界面方式
使用 UI 界面同样也可进行停止操作,进入 WEB UI 界面8080 端口),在 `Topology Summary` 中点击对应 Topology 即可进入详情页面进行操作。
<div align="center"> <img src="../pictures/storm-ui-actions.png"/> </div>
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/storm-ui-actions.png"/> </div>
@@ -472,7 +472,7 @@ storm kill ClusterWordCountApp -w 3
这时候可能大家会有疑惑,在我们的项目中不是使用了 `storm-core` 这个依赖吗?其实上面之所以我们能运行成功,是因为在 Storm 的集群环境中提供了这个 JAR 包,在安装目录的 lib 目录下:
<div align="center"> <img src="../pictures/storm-lib.png"/> </div>
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/storm-lib.png"/> </div>
为了说明这个问题我在 Maven 中引入了一个第三方的 JAR 包,并修改产生数据的方法:
```xml
@@ -498,7 +498,7 @@ private String productData() {
此时直接使用 `mvn clean package` 打包运行,就会抛出下图的异常。因此这种直接打包的方式并不适用于实际的开发,因为实际开发中通常都是需要第三方的 JAR 包。
<div align="center"> <img src="../pictures/storm-package-error.png"/> </div>
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/storm-package-error.png"/> </div>
想把依赖包一并打入最后的 JAR 中maven 提供了两个插件来实现,分别是 `maven-assembly-plugin``maven-shade-plugin`。鉴于本篇文章篇幅已经比较长,且关于 Storm 打包还有很多需要说明的地方,所以关于 Storm 的打包方式单独整理至下一篇文章: