Apache Beam程序向导4
2017-02-22 11:32
323 查看
今天在集群上实验Beam On Spark的时候,遇到一个坑爹的问题,这个问题总结起来是一个java.lang.NoClassDefFoundError
错误,具体错误如下图1所示
![](https://img-blog.csdn.net/20170222114533182?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2VpeGluXzM3NTI0MTM4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
图1
错误提示
该错误提示SparkStreamingContext没有定义,这说明java虚拟机加载进来了SparkStreamingContext,也就是相应的代码包已经导入进来了,这个阶段没有什么问题。接下来就得看看是不是代码包版本不合适。
我的maven依赖如下图2所示
![](https://img-blog.csdn.net/20170222114551305?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2VpeGluXzM3NTI0MTM4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
图2 Maven依赖包
于是我在各种尝试之后,终于找到了一种有希望的解决方案,那就是将spark的版本2.1.0改为1.6.3版本。
修改后状况如下:
![](https://img-blog.csdn.net/20170222114616932?watermark/2/text/aHR<br/>4000<br/>0cDovL2Jsb2cuY3Nkbi5uZXQvd2VpeGluXzM3NTI0MTM4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
图3
本地运行成功
这里看似成功了,但是这只是在本机测试的时候有了Beam On Spark的运行测试结果。至于在Spark集群中能否跑起来,我们还要按照官方提供的方法生成对应的jar包,并通过Spark-submit提交的方式提交到yarn集群中去通过yarn来调度运行。这种情况下运行成功了,那才叫真正的成功。所以现在还不是高兴的时候,那么接下来我们就开始继续接下来的实验吧。
首先应该在maven的pom.xml文件中加入以下对shade的构建依赖
(该部分加入到根节点的build节点的plugins节点之中
<build>
<plugins>
</plugins>
</build>
)
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>shaded</shadedClassifierName>
</configuration>
</execution>
</executions>
</plugin>
首先将项目打包拷贝到提交应用的那台机器上并解压。
如果已经安装好了maven的环境了的话,就直接在解压之后的根目录下执行如下命令
mvnpackage
然后就等着编译结束
![](https://img-blog.csdn.net/20170222114645682?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2VpeGluXzM3NTI0MTM4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
…………………..
如下图所示,编译成功后的jar包就在target目录下
![](https://img-blog.csdn.net/20170222114901496?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2VpeGluXzM3NTI0MTM4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
以spark提交jar包的方式提交,提交的脚本如下:
![](https://img-blog.csdn.net/20170222114932264?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2VpeGluXzM3NTI0MTM4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
${SPARK_HOME}/bin/./spark-submit\
--class org.tongfang.beam.examples.WordCount \##指定要运行的类,全路径+类名
--master yarn \ ##提交给yarn调度
--deploy-mode cluster \##集群模式运行
/home/ubuntu/shaded/target/shaded-1.0.0-shaded.jar##指定jar包路径
给脚本添加可执行权限之后就可以开始运行了:
![](https://img-blog.csdn.net/20170222114957889?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2VpeGluXzM3NTI0MTM4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
经过一会儿等待之后就成功了,如下图所示:
![](https://img-blog.csdn.net/20170222115012030?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2VpeGluXzM3NTI0MTM4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
文章来源来自数模堂,请扫码关注
![](https://img-blog.csdn.net/20170222115740141?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2VpeGluXzM3NTI0MTM4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
错误,具体错误如下图1所示
图1
错误提示
该错误提示SparkStreamingContext没有定义,这说明java虚拟机加载进来了SparkStreamingContext,也就是相应的代码包已经导入进来了,这个阶段没有什么问题。接下来就得看看是不是代码包版本不合适。
我的maven依赖如下图2所示
图2 Maven依赖包
于是我在各种尝试之后,终于找到了一种有希望的解决方案,那就是将spark的版本2.1.0改为1.6.3版本。
修改后状况如下:
图3
本地运行成功
这里看似成功了,但是这只是在本机测试的时候有了Beam On Spark的运行测试结果。至于在Spark集群中能否跑起来,我们还要按照官方提供的方法生成对应的jar包,并通过Spark-submit提交的方式提交到yarn集群中去通过yarn来调度运行。这种情况下运行成功了,那才叫真正的成功。所以现在还不是高兴的时候,那么接下来我们就开始继续接下来的实验吧。
首先应该在maven的pom.xml文件中加入以下对shade的构建依赖
(该部分加入到根节点的build节点的plugins节点之中
<build>
<plugins>
</plugins>
</build>
)
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>shaded</shadedClassifierName>
</configuration>
</execution>
</executions>
</plugin>
首先将项目打包拷贝到提交应用的那台机器上并解压。
如果已经安装好了maven的环境了的话,就直接在解压之后的根目录下执行如下命令
mvnpackage
然后就等着编译结束
…………………..
如下图所示,编译成功后的jar包就在target目录下
以spark提交jar包的方式提交,提交的脚本如下:
${SPARK_HOME}/bin/./spark-submit\
--class org.tongfang.beam.examples.WordCount \##指定要运行的类,全路径+类名
--master yarn \ ##提交给yarn调度
--deploy-mode cluster \##集群模式运行
/home/ubuntu/shaded/target/shaded-1.0.0-shaded.jar##指定jar包路径
给脚本添加可执行权限之后就可以开始运行了:
经过一会儿等待之后就成功了,如下图所示:
文章来源来自数模堂,请扫码关注
相关文章推荐
- 用VC++创建自定义向导程序
- 不使用ATL向导,创建一个简单的ATL对话框程序.
- 用C语言和VC6.0做个最简单的CGI程序,并且运行在apache服务器环境中。
- C#设计的一个向导程序(Wizard)框架 -- VS2008(二)
- lzg_ad: 基于.Net安装部署向导制作安装程序
- C#设计的一个向导程序(Wizard)框架 --VS2008版(三)
- FTP客户端程序(org.apache.commons.net.ftp)
- 不用MFC向导创建MFC程序时产生错误的解决办法
- C#设计的一个向导程序(Wizard)框架--VS2008版 (一)
- 写了一个类似于安装程序向导的组件
- 开发一个向导程序
- 实现Installshield对Php+mysql+apache做的程序在WINDOWS下打包
- 用VC++创建自定义向导程序
- apache五合一程序建立PHP+CGI运行环境
- 新的AutoCAD2006 托管C#程序向导
- 修改MFC AppWizard向导生成的框架程序的外观和大小
- 开发一个向导程序
- 爬行程序[ApacheLoader]
- VISTA程序兼容性向导
- ADO.NET Entity Framework 入门示例向导(附Demo程序下载)