提交任务到Yarn、yarn-client VS yarn-cluster

该博客介绍了如何将一个Spark程序提交到Yarn上运行,主要步骤包括设置Spark配置、创建SparkContext、读取HDFS文件、执行WordCount操作、统计单词数量并输出结果。程序最终成功输出了每个单词及其出现次数,并将结果保存在HDFS上。
摘要由CSDN通过智能技术生成
package com.shujia.core

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

object Demo02WordCountOnYarn {
  /**
   * 将程序提交到Yarn上的流程:
   * 1、setMaster不能指定为local本地方式运行
   * 2、将输入输出路径换成HDFS的路径
   * 3、将程序打成jar包(如果运行时出现依赖问题,可以添加打包依赖的插件)
   * 4、执行提交Spark程序的命令
   * 5、spark-submit --class com.shujia.core.Demo02WordCountOnYarn --master yarn-client --executor-memory 512m --num-executors 1 --executor-cores 1 Spark-1.0-SNAPSHOT.jar
   * spark-submit 用于提交Spark任务的命令
   * --class 主类名
   * --master 运行的模式
   * --executor-memory 指定每个executor的内存
   * --num-executors 指定executor的个数
   * --executor-cores 指定每个executor的核数
   * Spark-1.0-SNAPSHOT.jar 运行的jar包
   */
  def main(args: Array[String]): Unit = {
    //初始化Spark环境

    //创建Spark配置对象
    val conf: SparkConf = new SparkConf()
    //配置任务的名称
    conf.setAppName("Demo02WordCountOnYarn")
    //配置Spark的运行方式 local表示本地运行
//    conf.setMaster("local")

    //1、创建Spark上下文对象 即Spark的入口
    val sc: SparkContext = new SparkContext(conf)

    //2、读取文件 将文件构建成RDD
    /**
     * RDD:弹性分布式数据集
     * “暂时”可以将其理解为Scala中的一个集合,使用起来类似List
     * 实际上RDD是Spark中提供的一个编程模型
     *
     * Spark并没有自己的读文件的方式 使用的还是MR的切片、格式化数据的方式 是基于TextInputFormat类
     */
    val linesRDD: RDD[String] = sc.textFile("/data/wc/input")

    //3、对每行数据进行切分 并对切分后的结果进行扁平化处理
    //flatMap等其他跟RDD相关的方法在Spark中统称为“算子”
    val wordsRDD: RDD[String] = linesRDD.flatMap(line => line.split(","))

    //4、按照单词进行分组
    /**
     * Iterable迭代器跟List区别?
     * 1、迭代器只能被遍历
     * 2、迭代器的数据不在内存中 当使用时才会逐条加载到内存里
     */
    val groupRDD: RDD[(String, Iterable[String])] = wordsRDD.groupBy(word => word)

    //5、统计每个单词的数量 并整理最后输出的结果
    val wordCntRDD: RDD[String] = groupRDD.map(kv => s"${kv._1}, ${kv._2.size}")

    //6、打印或保存最后的结果
    //    wordCntRDD.foreach(println)
    wordCntRDD.saveAsTextFile("/data/wc/output")
  }
}
[root@master jars]# spark-submit --class com.shujia.core.Demo02WordCountOnYarn --master yarn-client --executor-memory 512m --num-executors 1 --executor-cores 1 Spark-1.0-SNAPSHOT.jar
[root@master jars]# hdfs dfs -cat /data/wc/output/part-r-00000
c++	1
datax	4
hbase	4
hive	4
kettle	4
mysql	4
spark	4
[root@master jars]# hdfs dfs -cat /data/wc/output/part-r-00001
c	1
flume	4
hadoop	4
kafka	4
python	1
sql	1
[root@master jars]# hdfs dfs -cat /data/wc/output/part-r-00002
flink	8
java	1
phoenix	4
redis	4
scale	1
springboot	4
sqoop	4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值