欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

spark 提交任务到yarn上运行

程序员文章站 2022-04-01 12:49:11
...

1、在idea上先写好,自己的代码并进行测试,这里贴一个很简单的统计单词个数的代码

package spark

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object WordCount {
  def main(args: Array[String]) {
    //1/创建sparkconf和spark上下文
    /**
      *
    A master URL must be set in your configuration
        An application name must be set in your configuration
        所有的配置文件信息,其实都是在sparkconf当中加载的,所以如果你要设置
        配置文件的信息的话,conf.set("key","value")
      */
    val conf = new SparkConf()
      //本地模式,* 会在运行期间检查当前环境下还剩下多少cpu核心,占满
      //.setMaster("local[*]")
      //.setAppName("idea_start_wc")

    val sc = new SparkContext(conf)

    val coalesceNum = Integer.parseInt(conf.get("spark.app.coalesce"))

    val resultRdd: RDD[(String, Int)] = sc.textFile("hdfs://192.168.89.77:8020/spark/datas/test.txt")
      .flatMap(_.split(" ")).map((_,1)).reduceByKey(_ + _) //到这一步已经实现wc
      .map(t=>(-t._2,t._1)).sortByKey().map(t=>(t._2,-t._1)) //这一步做排序
      //repartition   
	  //coalesce
      //以上这两个重分区的api有什么区别?
      .coalesce(coalesceNum)

    //保存
    resultRdd.saveAsTextFile(s"hdfs://192.168.89.77:8020/spark/sparkrdd_idea/wordcount_res${System.currentTimeMillis()}")

    //调用线程等待,为了方便去页面上看结果信息
    //程序终止(通过正常手段关闭程序)
    sc.stop()

  }
}

2、在本地测试无误后,将代码打包,这里有两种打包方式,1是胖包,2是瘦包,如果石胖包则是将所有的依赖包,都打进这个包里,有可能会报错,则将META-INF下的几个文件删除 

==>    zip -d <你的jar包名称.jar> META-INF/*.RSA META-INF/*.DSA META-INF/*.SF  这个是对压缩包里的文件进行删除的命令

3、编写,导入的脚本文件 我的配置有限  如下

#!/usr/bin/env bash


bin/spark-submit \  
--master yarn \         你的master平台
--name wordcount \       你的任务名称
--deploy-mode client \    deploy-mode模式设置,不知道的百度下
--class spark.WordCount \  你编写的类所在的位置
--driver-memory   1G  \     driver的内存分配
--driver-cores 1 \          driver的核心数
--executor-memory 1G \       每个executor的内存
--executor-cores 1 \         executor的核心数
--num-executors 1  \         executor个数
--conf spark.app.coalesce=2 \   我们代码里面穿的参数的名字,也就是分区数
/opt/cdh/spark/datas/word_count.jar    我们jar包所在的位置

4、对此脚本程序进行提交bin/spark-submit 命令提交,可以在yarn平台看到我们提交的任务,以及我么你的结果

spark 提交任务到yarn上运行

 

这里可以我么那可以看到,是两个文件,虽然有一个为空文件,但确实是我们传进来的参数2,得到了两个分区

以上

相关标签: spark yarn