spark分区数,task数目,core数,worker节点个数,excutor数量梳理

作者:王燚光
链接:https://www.zhihu.com/question/33270495/answer/93424104
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

梳理一下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

作者:王燚光
链接:https://www.zhihu.com/question/33270495/answer/93424104
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

时间: 2024-11-06 09:48:25

spark分区数,task数目,core数,worker节点个数,excutor数量梳理的相关文章

任务中如何确定spark分区数、task数目、core个数、worker节点个数、excutor数量

1.任务中如何确定spark RDD分区数.task数目.core个数.worker节点个数.excutor数量 (1)hdfs 上的文件的存储形式是以 Block 的形式存储的,每个 File 文件都包含了很多块,一个Block默认是128M大小.当 spark 从 hdfs 上读取数据的时候,会根据具体数据格式对应的 InputFormat 进行解析,一般是将若干个Block合并成一个输入分片,称为 InputSplit,其中要注意InputSplit不能跨越文件 File. (2)spar

Spark使用CombineTextInputFormat缓解小文件过多导致Task数目过多的问题【转】

转自:http://www.cnblogs.com/yurunmiao/p/5195754.html 目前平台使用Kafka + Flume的方式进行实时数据接入,Kafka中的数据由业务方负责写入,这些数据一部分由Spark Streaming进行流式计算:另一部分数据则经由Flume存储至HDFS,用于数据挖掘或机器学习.HDFS存储数据时目录的最小逻辑单位为"小时",为了保证数据计算过程中的数据完整性(计算某个小时目录中的数据时,该目录的数据全部写入完毕,且不再变化),我们在Fl

蜗龙徒行-Spark学习笔记【三】Spark集群中worker节点扩展实战经验

一.集群原先配置: 从机名sparkMaster,Ubuntu12.04-32 ,用户名Root , 内存4g    (只用于任务调度和分配,不做计算节点) 从机名sparkSlave1,Ubuntu12.04-32 ,用户名Root , 内存4g    (计算节点) 从机名sparkSlave2,Ubuntu12.04-32 ,用户名Root , 内存1.7g (计算节点) 二.扩展原因:计算数据量增大,原先的两个工作节点已不不能满足实时性的需求,由于实验室计算资源有限,故将原先的调度节点也增

第三十七课 Spark之Task执行原理及结果

主要内容 1.     Task执行原理流程图 2.     Task执行源码 3.     Task执行结果在Driver端的处理 一.Task在Executor(worker)端执行及返回Driver流程图 图37-1 Driver端与Executor交互图 二.Executor(worker)端执行源码解析 1.接收Driver端发来的消息 当Driver中的SchedulerBackend给ExecutorBackend发送LaunchTask之后,ExecutorBackend在接收到

SPARK如何使用AKKA实现进程、节点通信

SPARK如何使用AKKA实现进程.节点通信 <深入理解Spark:核心思想与源码分析>一书前言的内容请看链接<深入理解SPARK:核心思想与源码分析>一书正式出版上市 <深入理解Spark:核心思想与源码分析>一书第一章的内容请看链接<第1章 环境准备> <深入理解Spark:核心思想与源码分析>一书第二章的内容请看链接<第2章 SPARK设计理念与基本架构> <深入理解Spark:核心思想与源码分析>一书第三章第一部分

spark出现task不能序列化错误的解决方法

应用场景:使用JavaHiveContext执行SQL之后,希望能得到其字段名及相应的值,但却出现"Caused by: java.io.NotSerializableException: org.apache.spark.sql.api.java.StructField"的错误,代码如下: JavaSparkContext sc = new JavaSparkContext(conf); JavaHiveContext sqlContext = new JavaHiveContext

Spark之Task原理分析

在Spark中,一个应用程序要想被执行,肯定要经过以下的步骤: 从这个路线得知,最终一个job是依赖于分布在集群不同节点中的task,通过并行或者并发的运行来完成真正的工作.由此可见,一个个的分布式的task才是Spark的真正执行者.下面先来张task运行框架整体的对Spark的task运行有个大概的了解. task运行之前的工作是Driver启动Executor,接着Executor准备好一切运行环境,并向Driver反向注册,最终Driver向Executor发送LunchTask事件消息

spark 写入 redis 和 org.apache.spark.SparkException: Task not serializable

spark将数据写入redis时调用以下代码会报  org.apache.spark.SparkException: Task not serializable import com.redis.RedisClient val r = new RedisClient("192.168.1.101", 6379) val perhit = rdd.map(x => { val arr = x.split(" ") val k = arr(0).toInt val

使用kubeadm部署k8s集群09-配置worker节点

使用kubeadm部署k8s集群09-配置worker节点 2018/1/4 配置 worker 节点 初始化 加入集群 切换 worker 节点连接到 apiserver 的 LB 入口 调整集群中节点角色和调度策略 初始化 /etc/hosts ### k8s master @envDev 10.10.9.67 tvm-00 10.10.9.68 tvm-01 10.10.9.69 tvm-02 k8s worker @envDev 10.10.9.74 tvm-0310.10.9.75 t