大数据:Spark
文章平均质量分 75
Spark Blog
HaiwiSong
一切只为让自己变得更优秀!
展开
-
PySpark基于Conda自定义Python运行环境
文章目录背景conda创建环境并zip打包上传zip包到hdfsspark-submit提交参数设置参考背景在使用PySpark进行开发时,面临的痛点问题之一是Driver或Executor上运行Python的包依赖的问题,解决办法之一是可以通过Conda创建环境解决Python包依赖的问题,具体为在本地机器打包Conda创建的运行环境为zip包,然后zip包上传hdfs,然后在spark-submit提交命令中添加archives和spark.pyspark.python参数的方式解决。conda创原创 2021-03-13 15:08:39 · 2455 阅读 · 0 评论 -
Spark源码分析之调度框架详解
文章目录原理概述源码分析Job提交Stage划分Task提交Executor端运行TaskSpark的调度框架分为资源调度和任务调度。Spark的资源调度是基于Yarn实现的,包含Driver和Executor资源的申请等,详细过程见博文 Spark源码分析之AM端运行流程(Driver) 和 Spark源码分析之CoarseGrainedExecutorBackend运行流程(Executor);本文主要讲述Spark任务调度框架的原理和源码分析。原理概述由于 Spark Scheduler内部原理原创 2020-06-13 16:20:12 · 853 阅读 · 0 评论 -
PySpark源码分析之Driver端基于Py4j的通信详解
文章目录概述服务端启动Python客户端编程示例概述接上文 PySpark源码分析之AM端运行流程(Driver) 的最后部分可知,PySpark是通过Py4j来实现与Scala端JVM通信交互的(注:Py4j只用于Driver端Python调用JVM中方法;Executor端是直接通过socket通信的。),PySpark主要提供一层Python API的封装。其过程主要是JVM会开启一个Socket端口提供RPC服务,Python需要调用Spark API时,它会作为客户端将调用指令序列化成字节流发原创 2020-05-27 10:58:24 · 1753 阅读 · 0 评论 -
Spark源码分析之分区(Partition)
文章目录概述Spark的分区器(Partitioner)RDD分区数确认窄依赖中分区数宽依赖中分区数源RDD的分区数RDD的重新分区Spark分区编程示例概述我们知道Task是Spark计算的最小计算单位,一个Partition(分区)对应一个Task,因此Partition个数也是决定RDD并行计算的关键,合理设置Partition个数能够极大的提高Spark程序执行效率。首先我们看下RDD、Partition和task的关系如下图:那Spark中分区个数是如何确定的呢?当发生shuffle时候,原创 2020-05-15 09:27:42 · 1227 阅读 · 0 评论 -
Spark源码分析之CoarseGrainedExecutorBackend运行流程(Executor)
接上文 Spark源码分析之AM端运行流程(Driver) 分析完了在AM端Driver的运行流程,在最后我们看到AM向Yarn提交申请Executor容器请求,请求上下文参数如下图:Yarn分配运行Executor容器流程和Yarn分配运行Driver容器流程一样(流程分析见 Spark源码分析之任务提交流程(Client)),我们继续看启动Executor的launch_container...原创 2020-04-18 12:08:47 · 1187 阅读 · 0 评论 -
Spark源码分析之Rpc框架
文章目录概述基本概念组件原理Message消息通信架构SparkEnv的初始化概述在Spark中很多地方都涉及网络通信,比如 Spark各个组件间的消息互通、用户文件与Jar包的上传、节点间的Shuffle过程、Block数据的复制与备份等。Spark1.6之前,Spark的Rpc是基于Akka来实现的,Akka是一个基于scala语言的异步的消息框架,但由于Akka不适合大文件的传输,在Sp...原创 2020-04-16 15:21:57 · 831 阅读 · 0 评论 -
PySpark源码分析之AM端运行流程(Driver)
文章目录先验知识PythonRunner启动Python过程基于Py4J的通信模型先验知识前面文章 Spark源码分析之ApplicationMaster运行流程 我们介绍了Java|Scala程序在AM端的运行流程,本文介绍Python程序在AM端的运行流程,首先Client看提交命令:spark-submit --master yarn \--deploy-mode cluster \...原创 2020-04-08 09:50:46 · 959 阅读 · 0 评论 -
Spark源码分析之AM端运行流程(Driver)
文章目录先验知识Yarn启动AM流程AM启动Driver流程AM申请Executors流程先验知识接之前文章 Spark源码分析之任务提交流程 介绍了Client提交Spark任务的源码分析过程。本文继续分析ApplicationMaster的启动流程(源码Hadoop2.7.1),首先给出Client的提交的一些先决条件如下:提交命令:spark-submit --master yarn...原创 2020-04-06 10:41:58 · 2166 阅读 · 0 评论 -
Spark源码分析之任务提交流程(Client)
文章目录提交命令任务提交流程任务提交初流程YarnClusterApplication提交集群流程提交过程用户Yarn-Cluster提交shell命令提交给SparkSubmit类的cmd命令提交给集群启动driver的命令任务运行结果上传到hdfs的文件整个任务运行日志提交命令假定Yarn-Cluster方式提交:./bin/spark-submit \--class org.apac...原创 2020-03-20 14:05:22 · 1007 阅读 · 0 评论 -
Spark同步数据到线上数据库的一个坑
背景使用PySpark抽取数据同步到数据库时候(例如:clickhouse、mysql等数据库),使用RDD的foreachPartition、mapPartitions或mapPartitionsWithIndex等函数发现有的分区会执行多次,导致重复同步数据问题。原因及解决方案可以通过mapPartitionsWithIndex的函数打印partitionIndex,然后在日志查看的方式...原创 2019-08-23 17:09:10 · 1163 阅读 · 1 评论 -
一文弄懂PySpark原理与实践
文章目录一、PySpark 的背后原理二、文档三、pyspark读写dataframe四、通过spark-submit提交任务模板示例五、代码示例1、wordcount.py2、使用PySpark语言开发操作Hive一、PySpark 的背后原理架构图:其中白色部分是新增的Python进程,在Driver端,通过Py4j实现在Python中调用Java的方法,即将用户写的PySpark程序...原创 2019-03-12 11:21:20 · 13767 阅读 · 1 评论 -
一文弄懂Spark基本架构和原理
文章目录一、基本介绍spark是什么?弹性分布式数据集RDD基本概念基本流程二、Hadoop和Spark的区别三、RDD操作TransformationAction四、Block与RDD生成过程五、依赖关系与Stage划分六、Spark流程调度流程(粗粒度图解)执行流程(细粒度图解)七、spark在yarn上的两种运行模式(yarn-client和yarn-cluster)1、Yarn-Clien...原创 2019-03-11 19:28:02 · 9726 阅读 · 3 评论