千家信息网

spark-使用总结-大数据基础入门

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,1、partition数目spark的输入可能以多个文件的形式存储在HDFS上,每个File都包含了很多块,称为Block。当Spark读取这些文件作为输入时,会根据具体数据格式对应的InputFor
千家信息网最后更新 2025年02月01日spark-使用总结-大数据基础入门

1、partition数目

spark的输入可能以多个文件的形式存储在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操作会聚合成指定分区数,还有一些算子是可配置的。
2、spark部署模式的对比

这篇博客中对三种部署模式做了对比,请参考部署模式对比:总结如下:

mesos似乎是Spark更好的选择,也是被官方推荐的
但如果你同时运行hadoop和Spark,从兼容性上考虑,Yarn似乎是更好的选择,毕竟是亲生的。Spark on Yarn运行的也不错。
如果你不仅运行了hadoop,spark。还在资源管理上运行了docker,Mesos似乎更加通用。
standalone小规模计算集群,似乎更适合!
对于yarn模式下的client和cluster对比,请参考client和cluster的对比:
理解YARN-Client和YARN-Cluster深层次的区别之前先清楚一个概念:Application Master。在YARN中,每个Application实例都有一个ApplicationMaster进程,它是Application启动的第一个容器。它负责和ResourceManager打交道并请求资源,获取资源之后告诉NodeManager为其启动Container。从深层次的含义讲YARN-Cluster和YARN-Client模式的区别其实就是ApplicationMaster进程的区别
YARN-Cluster模式下,Driver运行在AM(Application Master)中,它负责向YARN申请资源,并监督作业的运行状况。当用户提交了作业之后,就可以关掉Client,作业会继续在YARN上运行,因而YARN-Cluster模式不适合运行交互类型的作业
YARN-Client模式下,Application Master仅仅向YARN请求Executor,Client会和请求的Container通信来调度他们工作,也就是说Client不能离开
(1)YarnCluster的Driver是在集群的某一台NM上,但是Yarn-Client就是在RM的机器上;
(2)而Driver会和Executors进行通信,所以Yarn_cluster在提交App之后可以关闭Client,而Yarn-Client不可以;

(3)Yarn-Cluster适合生产环境,Yarn-Client适合交互和调试。

3、spark运行原理

spark应用程序进行各种transformation的计算,最后通过action触发job。提交之后,构建SparkContext,通过sparkContext根据RDD的依赖关系构建DAG图,DAG图提交给DAGScheduler进行解析,解析时是以shuffle为边界,反向解析,构建stage,stage之间也有依赖关系,这个过程就是对DAG图进行解析划分stage,并且计算出各个stage之间的依赖关系。stage以stageSet方式提交给TaskScheduler,然后将一个个TaskSet提交给底层调度器,在spark中是提交给taskScheduler处理,生成TaskSet manager,最后提交给executor进行计算,executor多线程计算,完成task任务后,将完成信息提交给schedulerBackend,由它将任务完成的信息提交给TaskScheduler。TaskScheduler反馈信息给TaskSetManager,删除该task任务,执行下一个任务。同时TaskScheduler将完成的结果插入到成功队列里,加入之后返回加入成功的信息。TaskScheduler将任务处理成功的信息传给TaskSet Manager。全部任务完成后TaskSet Manager将结果反馈给DAGScheduler。如果属于resultTask,交给JobListener。如果不属于resultTask,保存结果。全部运行完之后写入数据。

很多人都知道我有大数据培训资料,都天真的以为我有全套的大数据开发、hadoop、spark等视频学习资料。我想说你们是对的,我的确有大数据开发、hadoop、spark的全套视频资料。
如果你对大数据开发感兴趣可以加口群领取免费学习资料: 763835121

运行 模式 数据 任务 信息 就是 数目 输入 文件 结果 资料 资源 作业 成功 阶段 集群 开发 生成 之间 全套 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 服务器cpu突然飙升又降下来 网络安全科班 网络安全设备组成及功能 服务器cpu监控 数据库中表和表的数据相互约束吗 股票交易软件开发厦门 全中文软件开发工具 信息时代网络安全就是头等大事 华为服务器管理命令行 手机服务器如何调材质包 专业模具制造管理软件开发 南京哪些大学网络安全 漳州市宜美网络技术有限公司 泗洪个性化网络技术是什么 鹏达科技网络技术工作室 DSP软件开发是做什么的 为什么京东服务器最好 软件开发应用程序 本科论文可以查万方数据库吗 软件开发已完成成绩 无线网络技术支撑工资 有关计算机网络安全的应用 国家网络安全及实名制要求 计算机三级网络技术刷题重点 华为服务器管理命令行 航海狼人杀为什么总是服务器停止 服务器主机设备卖的最好的公司 加强国家网络安全体系建设 tcga数据库筛选基因原则 软件开发有哪些地方好玩
0