Spark 运行架构与原理

一、spark工作流程

  1.  当一个spark应用被提交时,根据提交参数在相应的位置创建driver进程。
  2.  Driver进程启动后,会初始化sparkContext对象,会找到集群master进程,对spark应用程序进行注册
  3.  当master收到spark程序的注册申请之后,会发送请求给worker,进行资源的调度和分配
  4.  worker收到master的请求后,会为spark应用启动executor进程,会启动一个或多个  executor,具体启动多少个,根据配置来启动
  5.  executor启动之后,会向Driver进行反注册,这样Driver就知道哪些executor为它服务了
  6.  Driver会根据我们对RDD定义的操作,提交一堆的task去Executor上执行,task里面执行的就是具体的map、flatMap这些操作

二、spark的基本概念

  • DriverProgram(驱动器):运行main()方法并创建SparkContext的进程
  • ClusterManager(也叫master集群管理器) :用于在集群上申请资源的外部服务
  • workerNode(工作节点):集群上运行应用程序代码的任意节点
  • executor(执行器):在集群工作节点上为某个应用启动的工作进程,该进程负责运行计算任务,并为应用程序存储数据
  • job(作业) 一个并行计算作业,由一组任务组成,并由spark的行动(action)算子(save、collect)触发启动,每个Job会根据RDD的宽依赖关系被切分很多Stage,每个Stage中包含一组相同的Task
  • stage(阶段) 每个job会被分为多个stage,每个stage是由一组并行的task组成的,stage的划分依据就是看是否产生了shuflle(宽依赖),遇到一个shuflle操作就会划分为前后两个stage
  • task:执行器的工作单元

一个Application由一个Driver和若干个Job构成,一个Job由多个Stage构成,一个Stage由多个没有Shuffle关系的Task组成。

三、Spark实战

读取文件中的所有内容,计算每个单词出现的次数

object WorldCountScala {

  def main(args: Array[String]): Unit = {
    //第一步 创建sparkContext
    val conf = new SparkConf()
    conf.setAppName("WorldCountScala") //设置任务名称
      .setMaster("local") //表示本地执行
    val sc = new SparkContext(conf)
    //第二步 加载数据
    val lineRDD = sc.textFile("D:\\bigdata/hello.txt")
    //第三步 对数据进行切割
    val wordRDD = lineRDD.flatMap(_.split(" "))
    //第四步 迭代words,把每个word转成(word,1)这种形式
    // val pairRDD = wordRDD.map(word=>(word, 1))
    val pairRDD = wordRDD.map((_, 1))
    // 根据key进行分组聚合
    val wordCountRDD = pairRDD.reduceByKey(_ + _)
    //将结果打印到控制台
    wordCountRDD.foreach(wordCount => println(wordCount._1 + "——" + wordCount._2))
    //停止sparkContext
    sc.stop()
  }

运行结果:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值