微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spark 程序打包在集群运行

环境准备

1、pom 文件引入相关依赖&插件

    <dependencies>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.12</artifactId>
            <version>3.0.0</version>
        </dependency>
    </dependencies>
    <build>
        <finalName>WordCount</finalName>
        <plugins>
            <plugin>
                <groupId>net.alchim31.maven</groupId>
                <artifactId>scala-maven-plugin</artifactId>
                <version>3.4.6</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

2、代码准备

编写一个简单的词频统计

/**
 * 词频统计
 */
object WordCount {
  def main(args: Array[String]): Unit = {
    //创建 配置对象
    val conf: SparkConf = new SparkConf().setAppName("wordcount").setMaster("yarn")
    //配置上下文对象
    var sc: SparkContext = new SparkContext(conf)
    sc.textFile(args(0))
      .flatMap(_.split(" "))
      .map((_, 1))
      .reduceByKey(_ + _)
      .saveAsTextFile(args(1))

    //关闭
    sc.stop()
  }
}

3、打包成 jar

4、集群运行  

将jar文件cp到主机上

[hui@hadoop103 spark-yarn]$ pwd
/opt/module/spark-yarn
[hui@hadoop103 spark-yarn]$ ll *.jar
-rw-r--r-- 1 hui wd 4988 5月  21 2022 WordCount.jar
运行程序

bin/spark-submit \
--class org.wdh01.spark01.WordCount \
--master yarn \
WordCount.jar \
/input \
/output
参数说明
--class org.wdh01.spark01.WordCount 主类名
--master yarn yarn 模式:client 模式
WordCount.jar  运行的jar 文件
/input 输入目录
/output 输出目录:注意提交前确认输出路径是否存在,若存在,需要删除
注意:如果运行发生压缩类没找到 spark on yarn会认使用集群的编码方式,但是相关的jar包不会自动添加,需要自己配置 方法1

拷贝lzo的包到spark的jars目录

cp /opt/module/hadoop-2.7.2/share/hadoop/common/hadoop-lzo-0.4.20.jar /opt/module/spark-yarn/jars    
方法
在执行命令的时候指定lzo的包位置
--driver-class-path /opt/module/hadoop-2.7.2/share/hadoop/common/hadoop-lzo-0.4.20.jar

总结 

 其实只程序测试通过了,打包在集群上运行其实很简单,只是可能会出现由于集群环境某些细微问题导致异常,这样就直接看下运行日志,根据日志提示解决解决就好。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐