重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Apache Beam程序向导4
创新互联专注于博兴网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供博兴营销型网站建设,博兴网站制作、博兴网页设计、博兴网站官网定制、微信小程序定制开发服务,打造博兴网络公司原创品牌,更为您提供博兴网站排名全网营销落地服务。今天在集群上实验Beam On Spark的时候,遇到一个坑爹的问题,这个问题总结起来是一个java.lang.NoClassDefFoundError
错误,具体错误如下图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节点之中
)
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-shade-pluginartifactId>
<configuration>
<createDependencyReducedPom>falsecreateDependencyReducedPom>
<filters>
<filter>
<artifact>*:*artifact>
<excludes>
<exclude>META-INF/*.SFexclude>
<exclude>META-INF/*.DSAexclude>
<exclude>META-INF/*.RSAexclude>
excludes>
filter>
filters>
configuration>
<executions>
<execution>
<phase>packagephase>
<goals>
<goal>shadegoal>
goals>
<configuration>
<shadedArtifactAttached>trueshadedArtifactAttached>
<shadedClassifierName>shadedshadedClassifierName>
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包路径
给脚本添加可执行权限之后就可以开始运行了:
经过一会儿等待之后就成功了,如下图所示:
文章来自数模堂,如需更多交流,请扫描关注
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。