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    
方法2 
在执行命令的时候指定lzo的包位置
--driver-class-path /opt/module/hadoop-2.7.2/share/hadoop/common/hadoop-lzo-0.4.20.jar

总结 

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

posted @ 2022-05-27 22:18  晓枫的春天  阅读(153)  评论(0编辑  收藏  举报