美文网首页
spark在集群提交sparkStreaming程序

spark在集群提交sparkStreaming程序

作者: 早点起床晒太阳 | 来源:发表于2020-07-21 10:58 被阅读0次

    参考资料
    https://dongkelun.com/2018/06/19/sparkSubmitKafka/

    前言

    sparkStreaming程序在本地IDEA 测试完以后,要到服务器上部署程序并运行,今天来测试下在服务器上提交以及遇到的问题

    具体操作

    具体思路

    这边的具体思路是使用依赖包上传到hdfs上,使用spark的 --jars参数来添加依赖。然后maven打包只打包相关代码就可以,不需要添加依赖。

    1、pom文件中的build

    具体pom的bulid

     <build>
            <plugins>
                <plugin>
                    <groupId>org.scala-tools</groupId>
                    <artifactId>maven-scala-plugin</artifactId>
                    <version>2.15.2</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>compile</goal>
                                <goal>testCompile</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
    
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>2.6</version>
                </plugin>
            </plugins>
        </build>
    
    2、提交参数

    这里只是给出示例,和spark-submit提交普通程序的样式一样

    /opt/beh/core/spark/bin/spark-submit  --master yarn  --class com.example.testspark.sparkstreaming.Demo  --num-executors 2 --executor-memory 4g --executor-cores 2 --jars      hdfs:///user/zgh/jars/spark-streaming-kafka-0-10_2.11-2.4.1.jar,hdfs:///user/zgh/jars/kafka-clients-2.5.0.jar /home/hadoop/zgh/testspark-0.0.1-SNAPSHOT.jar
    

    遇到的问题

    1、缺少依赖包

    java.lang.NoClassDefFoundError: org/apache/kafka/common/serialization/StringDeserializer

    org.apache.spark.internal.Logging.init(Lorg/apache/spark/internal/Logging;)V

    这种缺少依赖包的问题是因为maven打包没有添加依赖,所以要是用spark的--jars参数 来添加jar (最好使用hdfs路径,本地路径的话需要在每个节点的本地都有这么个路径,不太方便)

    2、Lost task 0.0 in stage 0.0 (TID 0, hebing2.novalocal, executor 1): java.io.IOException: unexpected exception type

    版本不一致,集群上scala的版本是2.11 .但是我使用的maven依赖的版本是2.12。所以我将maven依赖的spark相关的依赖的scala版本改为了2.11

    后续遗留问题

    这种方式我觉得不是一样好的方式,虽然可以打包,可以运行。
    存在的隐患在于:因为依赖具有传递性,我们不可能每次都根据报错把需要的jar包一点点的网上传。肯定有一种策略可以将所需要的打包。(这一块后续我在补充吧)。

    相关文章

      网友评论

          本文标题:spark在集群提交sparkStreaming程序

          本文链接:https://www.haomeiwen.com/subject/yrxikktx.html