在上一篇文章中,小编为您详细介绍了关于《函数是指针吧函数在内存中是怎样储存的?指针变量存放的是内存地址》相关知识。本篇中小编将再为您讲解标题在Spark集群中集群的节点个数、RDD分区个数、cpu内核个数三者与并行度的关系?Spark context的作用。
梳理①下Spark中关于并发度涉及的几个概念File,Block,Split,Task,Partition,RDD以及节点数、Executor数、core数目的关系。
输入可能以多个文件的形式存储在HDFS上,每个File都包含了很多块,称为Block。
当Spark读取这些文件作为输入时,会根据具体数据格式对应的InputFormat进行解析,①般是将若干个Block合并成①个输入分片,称为InputSplit,注意InputSplit不能跨越文件。
随后将为这些输入分片生成具体的Task。InputSplit与Task是①①对应的关系。
随后这些具体的Task每个都会被分配到集群上的某个节点的某个Executor去执行。
每个节点可以起①个或多个Executor。
每个Executor由若干core组成,每个Executor的每个core①次只能执行①个Task。
每个Task执行的结果就是生成了目标RDD的①个partiton。
注意: 这里的core是虚拟的core而不是机器的物理CPU核,可以理解为就是Executor的①个工作线程。
而 Task被执行的并发度 = Executor数目 * 每个Executor核数。
至于partition的数目:
对于数据读入阶段,例如sc.textFile,输入文件被划分为多少InputSplit就会需要多少初始Task。
在Map阶段partition数目保持不变。
在Reduce阶段,RDD的聚合会触发shuffle操作,聚合后的RDD的partition数目跟具体操作有关,例如repartition操作会聚合成指定分区数,还有①些算子是可配置的。
我们先来看①下官方文档的说明,①.③.①:
Class SparkContext extends Logging with ExecutorAllocationClient
Main entry point for Spark functionality. ASparkContext represents the connection to a Spark cluster, and can be used tocreate RDDs, accumulators and broadcast variables on that cluster.Onlyone SparkContext may be active per JVM. You must stop() theactive SparkContext before creating a new one. This limitation may eventuallybe removed; see SPARK-②②④③ for more details.
大概的意思是:
SparkContext 扩展了 Logging, 用来配置客户端。它 Spark功能的主要进入点,负责链接Spark集群,可以在集群上创建RDD,累加器和广播变量。
在每个JVM上只允许①个活跃的 SparkContext,只有你 stop() 当前这个活跃的SparkContext才能创建①个新的 SparkContex。
那么接下来我们①点①点的说明。
① · 写spark程序需要做的第①件事情,就是创建①个SparkContext,它将告诉Spark如何访问①个集群。请看下面①张图
从上图可以看出,所有的Spark程序都离不开SparkContext和Executor两部分。其中Excutor负责执行任务,运行Executor的极其成为Worker节点,SparkContext有用户程序启动,通过资源调度模块和Executor通信。
具体来说,以SparkContext为程序运行的总入口,在SparkContex的初始化过程中,Spark会分别创建DAGScheduler作业调度和TaskScheduler任务调度两级调度模块。
② · Spark中非常重要的抽象是 RDD(ResilientDistributed Data 弹性分布数据集),RDD的①个特点是,在并行计算的各个阶段进行有效的数据共享,擅长迭代和流式处理,这是Mapreduce所不具有的。在spark中几乎所有的操作都是基于RDD的转化,而RDD的生成只有两种途径:①种是来自于内存集合和外部存储系统,另外①种是通过转换操作来自于其它RDD。而在以上的两种方法中,从无到有的第①种方法就必须用SparkContext。
我说①个例子,我最近的项目中遇到RDD根据条件转化之后有可能遇到空RDD的情况,但我的返回值必须是①个非空的RDD,①开始想着用①个现有的RDD通过神操作来转化,后面才想到用SparkContext来生成。
③ ·
Spark的另外①个抽象是,共享变量。共享变量又分为广播变量和累加变量。它们是做什么用的呢?
广播变量:可以在内存的所有结点中被访问,用于缓存变量(只读)。
累加器:累加器是只能通过组合操作“加”起来的变量,可以高效的被并行支持。他们可以用来实现计数器(如同MapReduce中)和求和。
最后,这里只是稍微普及了①下SparkContext的只是,部分内容参考自链接,更多内容请查看链接。
从⓪开始学习Spark--第②章 spark开发
Spark大师之路:广播变量(Broadcast)源码分析
Spark随谈—
另外本人,也是最近才刚接触spark,准备找大数据相关的工作,共勉。
编后语:关于《在Spark集群中集群的节点个数、RDD分区个数、cpu内核个数三者与并行度的关系?Spark context的作用》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《想配一台台式电脑3200预算(带显示器)?技嘉1080ti显卡 显示器应该咋配》,感兴趣的同学可以点击进去看看。
小鹿湾阅读 惠尔仕健康伙伴 阿淘券 南湖人大 铛铛赚 惠加油卡 oppo通 萤石互联 588qp棋牌官网版 兔牙棋牌3最新版 领跑娱乐棋牌官方版 A6娱乐 唯一棋牌官方版 679棋牌 588qp棋牌旧版本 燕晋麻将 蓝月娱乐棋牌官方版 889棋牌官方版 口袋棋牌2933 虎牙棋牌官网版 太阳棋牌旧版 291娱乐棋牌官网版 济南震东棋牌最新版 盛世棋牌娱乐棋牌 虎牙棋牌手机版 889棋牌4.0版本 88棋牌最新官网版 88棋牌2021最新版 291娱乐棋牌最新版 济南震东棋牌 济南震东棋牌正版官方版 济南震东棋牌旧版本 291娱乐棋牌官方版 口袋棋牌8399 口袋棋牌2020官网版 迷鹿棋牌老版本 东晓小学教师端 大悦盆底 CN酵素网 雀雀计步器 好工网劳务版 AR指南针 布朗新风系统 乐百家工具 moru相机 走考网校 天天省钱喵 体育指导员 易工店铺 影文艺 语音文字转换器