streaming 整合 flume
This commit is contained in:
@ -5,12 +5,15 @@
|
||||
<a href="#二mvn-package">二、mvn package</a><br/>
|
||||
<a href="#三maven-assembly-plugin插件">三、maven-assembly-plugin插件</a><br/>
|
||||
<a href="#四maven-shade-plugin插件">四、maven-shade-plugin插件</a><br/>
|
||||
<a href="#五使用非Maven仓库中的Jar">五、使用非Maven仓库中的Jar</a><br/>
|
||||
<a href="#六排除集群中已经存在的Jar">六、排除集群中已经存在的Jar</a><br/>
|
||||
<a href="#七使用建议">七、使用建议</a><br/>
|
||||
<a href="#五其他打包需求">五、其他打包需求</a><br/>
|
||||
<a href="#1-使用非Maven仓库中的Jar">1. 使用非Maven仓库中的Jar</a><br/>
|
||||
<a href="#2-排除集群中已经存在的Jar">2. 排除集群中已经存在的Jar</a><br/>
|
||||
<a href="#3-打包scala文件">3. 打包.scala文件</a><br/>
|
||||
</nav>
|
||||
|
||||
|
||||
|
||||
|
||||
## 一、简介
|
||||
|
||||
在提交大数据作业到集群中运行时,通常都需要先将项目打成Jar包。Java项目通常都采用Maven进行构建,Maven提供的常用打包方式及插件有以下四种:
|
||||
@ -118,6 +121,8 @@ assembly.xml文件内容如下:
|
||||
|
||||
`maven-shade-plugin`比`maven-assembly-plugin`功能更为强大,比如你的工程依赖很多的JAR包,而被依赖的JAR又会依赖其他的JAR包,这样,当工程中依赖到不同的版本的 JAR时,并且JAR中具有相同名称的资源文件时,shade插件会尝试将所有资源文件打包在一起时,而不是和assembly一样执行覆盖操作。
|
||||
|
||||
**通常使用`maven-shade-plugin`就能够完成大多数的打包需求,其配置简单且适用性最广,因此建议优先使用此方式。**
|
||||
|
||||
### 4.1 基本配置
|
||||
|
||||
采用`maven-shade-plugin`进行打包时候,配置示例如下:
|
||||
@ -192,7 +197,9 @@ assembly.xml文件内容如下:
|
||||
|
||||
|
||||
|
||||
## 五、使用非Maven仓库中的Jar
|
||||
## 五、其他打包需求
|
||||
|
||||
### 1. 使用非Maven仓库中的Jar
|
||||
|
||||
通常上面两种打包能够满足大多数的使用场景。但是如果你想把某些没有被Maven管理Jar包打入到最终的Jar中,比如你在`resources/lib`下引入的其他非Maven仓库中的Jar,此时可以使用`maven-jar-plugin`和`maven-dependency-plugin`插件将其打入最终的Jar中。
|
||||
|
||||
@ -238,9 +245,9 @@ assembly.xml文件内容如下:
|
||||
</build>
|
||||
```
|
||||
|
||||
## 六、排除集群中已经存在的Jar
|
||||
### 2. 排除集群中已经存在的Jar
|
||||
|
||||
为了避免冲突通常官方文档通常都会建议你排除集群中已经提供的Jar包,如下:
|
||||
通常为了避免冲突,官方文档都会建议你排除集群中已经提供的Jar包,如下:
|
||||
|
||||
Spark 官方文档 Submitting Applications 章节:
|
||||
|
||||
@ -250,14 +257,41 @@ Strom官方文档 Running Topologies on a Production Cluster 章节:
|
||||
|
||||
>Then run mvn assembly:assembly to get an appropriately packaged jar. Make sure you exclude the Storm jars since the cluster already has Storm on the classpath.
|
||||
|
||||
|
||||
排除Jar包的方式主要有以下两种:
|
||||
|
||||
+ 对需要排除的Jar包依赖添加`<scope>provided</scope>`标签,此时该Jar包会被排除,但是不建议使用这种方式,因为此时你在本地运行也无法使用该Jar包;
|
||||
+ 建议直接在`maven-assembly-plugin`或`maven-shade-plugin`的配置文件中使用`<exclude>`进行排除。
|
||||
|
||||
## 七、使用建议
|
||||
### 3. 打包.scala文件
|
||||
|
||||
通常使用`maven-shade-plugin`就能够完成大多数的打包需求,其配置简单且适用性最广,因此建议使用此方式。
|
||||
如果你使用到scala语言进行编程,此时需要特别注意 :默认情况下Maven是不会把`.scala`文件打入最终的Jar中,需要额外添加`maven-scala-plugin`插件,常用配置如下:
|
||||
|
||||
```xml
|
||||
<plugin>
|
||||
<groupId>org.scala-tools</groupId>
|
||||
<artifactId>maven-scala-plugin</artifactId>
|
||||
<version>2.15.1</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>scala-compile</id>
|
||||
<goals>
|
||||
<goal>compile</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<includes>
|
||||
<include>**/*.scala</include>
|
||||
</includes>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>scala-test-compile</id>
|
||||
<goals>
|
||||
<goal>testCompile</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user