spark
文章平均质量分 61
hongmofang10
这个作者很懒,什么都没留下…
展开
-
Spark的基本工作流程
Spark运行时的基本工作流程如下:(1)任何spark应用程序都包含driver代码和executor代码。spark应用程序首先在driver初始化SparkContext。因为SparkContext是spark应用程序通往集群的唯一路径,在SparkContext中包含了DAGScheduler和TaskScheduler两个调度器类。在创建SparkContext对象的同时也自动创建了这两个类。-(2)SparkContext初始化完成以后,首先根据Spark的相关配置,向Cluster原创 2021-08-29 16:32:08 · 4124 阅读 · 1 评论 -
Spark中的一些术语
Application:用户构建的应用程序,包括驱动程序(一个Driver功能的代码)和在集群的多个工作结点上运行的Executor代码。Driver:运行应用的main()函数并创建SparkContext进程。初始化SparkContext是为了准备Spark应用程序的运行环境,在Spark中由SparkContext负责与集群进行通信,进行资源的申请、任务的分配和监控等。当Worker结点中的Executor部分运行完毕后,Driver同时负责将SparkContext关闭。Executor:在.原创 2021-08-29 12:06:39 · 129 阅读 · 0 评论 -
Spark远程提交应用到yarn上
在一个节点上安装spark,将yarn上hdfs-site.xml,core-site.xml,yarn-site.xml拷贝到spark根路径conf目录下面。这时候提交应用会报错,如下图所示:修改spark-env.sh,新增1个配置项,export HADOOP_CONF_DIR=spark的conf目录即可。( YARN_CONF_DIR不用配置)...原创 2021-08-12 16:37:13 · 945 阅读 · 0 评论 -
Spark程序调优
Spark性能兹以为可分为三大块:JVM层面的调优程序层面的调优业务和平台层面的调优本篇主要描述程序层面的调优。主要包括三方面:1,数据序列化序列化对提高分布式程序的性能起到非常重要的作用。一个不好的序列化方式(如序列化模式的速度非常慢或者序列化结果非常大)会极大降低计算速度。在很多情况下这是我们优化Spark应用的第一选择。Spark试图在方便和性能之间获得一个平衡。Spark提供了两个序列化类库。java序列化(默认):Java序列化非常灵活,但是速度较慢,在某些情况下序列化的结果也原创 2021-08-08 11:57:37 · 205 阅读 · 0 评论 -
Spark内存优化
内存优化有三个方面的考虑:对象所占用的内存(或许大家都希望将所有数据都加载到内存),优化Spark的缓存以及内存回收(GC)所占用的开销。1,对象所占用的内存首先要估算对象所占用的内存,然后从两方面进行改进–通过改变数据结构或者采用序列化的方式。1.1,确定内存消耗创建一个RDD,然后将其放入缓存,最后阅读驱动程序中SparkContext的日志。日志会告诉我们每一部分所占用的内存大小,可以收集该类信息以确定RDD消耗内存的最终大小。1.2,优化数据结构减少内存使用的第一条路径是避免使用一些额外原创 2021-08-08 11:08:22 · 773 阅读 · 0 评论 -
Spark Shuffle概述
因为2.x以后,Hash Shuffle 就已经退出了Spark的历史舞台,因此本文不再对hash shuffle进行讨论,主要讨论sort shuffle。SortShuffleManager的运行机制主要分成两种,一种是普通运行机制,另一种是bypass运行机制。当shuffle read task的数量小于等等于spark.shuffle.sort.bypassMergeThreshold参数的值时(默认为200),就会启用bypass机制。普通机制的Sort Shuffle这种机制和mapre原创 2021-07-15 21:39:35 · 175 阅读 · 0 评论 -
SparkContext初始化过程
SparkContext是Spark进行应用开发的主要接口,是Spark上层应用与底层实现的中转站。SparkContext最重要的入参是SparkConf。步骤一: 读取SparkConf参数配置,进行一些基本的参数值的判断赋值。步骤二: 根据SparkConf创建SparkEnv,包含Spark实例运行时候所需要的所有运行时所有环境变量。步骤三: 创建TaskScheduler,同时根据Spark运行模式选择 相应的schedulerBackendcreateTaskSchedul原创 2021-07-01 02:13:48 · 281 阅读 · 2 评论 -
textFile分区数计算
4个文件长度分别为100 100 100 1400字节,默认最小分区为2首先计算全部文件总长度totalSize=100+100+100+1400=1700goalSize=totalSize/最小分区数即2 =850blockSize=128M换算成字节为134217728minSize=1goalSize与blockSize取最小 值为850850 与minSize取最大 值为850即splitSize为850然后 每个文件长度除以850 判断是否大于1.1文件1,2,3都是100所以原创 2021-06-24 10:06:24 · 312 阅读 · 0 评论 -
基于Java实现spark应用监控
import java.io.IOException;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.yarn.api.records.ApplicationId;import org.apache.hadoop.yarn.api.records.ApplicationReport;import org.apache.hadoop.yarn.api.records.YarnApplicationState;原创 2021-03-24 15:55:40 · 487 阅读 · 1 评论 -
Spark操作Hive所需依赖(Java版本)
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">原创 2020-09-30 15:17:41 · 1963 阅读 · 0 评论 -
shell 进入任意目录
直接上代码吧,先获取当前所在目录的绝对位置即可。path=`dirname $0`path=`cd "$path"; pwd` #path是脚本所在位置的绝对路径,进入到该路径下path1=`cd ..; pwd` #上一条命令表示我们已经在脚本所在位置的绝对路径下,cd ..表示返回上一层path2=`cd stz4; pwd`echo $pathecho $path1echo...原创 2019-05-17 11:20:53 · 4935 阅读 · 0 评论 -
standalone集群下spark-submit的使用
首先假设你安装spark的根目录是spark-2.3.1,在standalone集群上提交应用的命令如下:spark-2.3.1/bin/spark-submit --master spark://*****:7077 --executor-memory 4g --driver-memory 3g **/**/**.jar其中,*****是你的master节点的名称或者IP地址。**/**...原创 2018-11-28 20:09:52 · 469 阅读 · 0 评论 -
Spark中master、worker、executor和driver的关系
刚刚接触Spark的时候对这些概念没有好好思考,走马观花似的扫过去了,后面碰到master、worker、executor和driver的时候,也就没想太多,最近刚刚跑通了一个spark项目,准备好好研究一下程序的运行原理,却突然发现对于master、worker、executor和driver一知半解,对这些概念没有很好地理解,实在难以深入学习spark,于是,查了一些资料,做了一些简单的记载供...原创 2018-11-28 19:49:41 · 24468 阅读 · 10 评论