Apache Beam程序向导4

Apache Beam程序向导4

今天在集群上实验Beam On Spark的时候,遇到一个坑爹的问题,这个问题总结起来是一个java.lang.NoClassDefFoundError

错误,具体错误如下图1所示

Apache Beam程序向导4

1 错误提示

该错误提示SparkStreamingContext没有定义,这说明java虚拟机加载进来了SparkStreamingContext,也就是相应的代码包已经导入进来了,这个阶段没有什么问题。接下来就得看看是不是代码包版本不合适。

我的maven依赖如下图2所示

Apache Beam程序向导4

2 Maven依赖包

于是我在各种尝试之后,终于找到了一种有希望的解决方案,那就是将spark的版本2.1.0改为1.6.3版本。

修改后状况如下:

Apache Beam程序向导4

3 本地运行成功

 

这里看似成功了,但是这只是在本机测试的时候有了Beam On Spark的运行测试结果。至于在Spark集群中能否跑起来,我们还要按照官方提供的方法生成对应的jar包,并通过Spark-submit提交的方式提交到yarn集群中去通过yarn来调度运行。这种情况下运行成功了,那才叫真正的成功。所以现在还不是高兴的时候,那么接下来我们就开始继续接下来的实验吧。

首先应该在mavenpom.xml文件中加入以下对shade的构建依赖

(该部分加入到根节点的build节点的plugins节点之中

<build>

            <plugins>

   

            </plugins>

</build>

 

<plugin>

  <groupId>org.apache.maven.plugins</groupId>

  <artifactId>mavenshadeplugin</artifactId>

  <configuration>

    <createDependencyReducedPom>false</createDependencyReducedPom>

    <filters>

      <filter>

        <artifact>*:*</artifact>

        <excludes>

          <exclude>METAINF/*.SF</exclude>

          <exclude>METAINF/*.DSA</exclude>

          <exclude>METAINF/*.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

然后就等着编译结束

Apache Beam程序向导4…………………..

如下图所示,编译成功后的jar包就在target目录下

Apache Beam程序向导4

 

 

spark提交jar包的方式提交,提交的脚本如下:

Apache Beam程序向导4

${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包路径

给脚本添加可执行权限之后就可以开始运行了:

Apache Beam程序向导4

经过一会儿等待之后就成功了,如下图所示:

 Apache Beam程序向导4

文章来自数模堂,如需更多交流,请扫描关注

Apache Beam程序向导4

原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/194235.html

(0)
上一篇 2021年11月16日
下一篇 2021年11月16日

相关推荐

发表回复

登录后才能评论