• 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实战

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

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

    运行结果:

  • 相关阅读:
    SpringCloudAlibaba系列微服务搭建笔记五_Dubbo
    使用Python保存剪贴板中的图像
    计算图片中两个任意形状多边形相交部分的大小
    开发实战经验分享:互联网医院系统源码与在线问诊APP搭建
    Go基础语法:list
    axios---封装loadding组件的显示和隐藏
    ROS melodic 中同时使用python2 和python3
    2023最受推荐的五款项目管理工具
    让我们来看看React.memo
    完整解析快速排序
  • 原文地址:https://blog.csdn.net/libaowen609/article/details/126389179