spark
文章平均质量分 88
spark
orange大数据技术探索者
这个作者很懒,什么都没留下…
展开
-
spark如何防止内存溢出
核心:1.加资源2.优化空间,减少内存占用3.代码层面MEMORY_AND_DISK使用rdd.persist(StorageLevel.MEMORY_AND_DISK)代替rdd.cache()降低cache操作的内存占比增加每个executor的内存量使用kero序列化机制减少内存占用避免使用partitions算子数据倾斜,可能会导致每个task数据量太大,内存溢出算子导致的内存溢出例如下列map算子,每条记录都产生了1000个对象,这肯定很容易产生内存溢出的问题rdd.原创 2020-07-01 11:02:02 · 1029 阅读 · 0 评论 -
spark内核解析8-内存管理
目录堆内和堆外内存内存空间分配静态内存管理统一内存管理存储内存管理RDD的持久化机制RDD的缓存过程淘汰与落盘执行内存管理堆内和堆外内存堆内(On-heap):建立在 JVM 的内存管理之上受到JVM统一管理可以通过启动应用程序时的 –executor-memory 或 spark.executor.memory 参数配置一个 Executor 内运行的并发任务共享 JVM 堆内内存对于 Spark 中序列化的对象,由于是字节流的形式,其占用的内存大小可直接计算,而对于非序列化的对象原创 2020-07-01 10:59:43 · 115 阅读 · 0 评论 -
spark内核解析2-核心组件
目录Spark核心组件DriverExecutortaskpartition的数目Spark核心组件DriverSpark驱动器节点,用于执行Spark任务中的main方法,负责实际代码的执行工作。Driver在Spark作业执行时主要负责:将用户程序转化为作业(job);在Executor之间调度任务(task);跟踪Executor的执行情况;通过UI展示查询运行情况;ExecutorSpark Executor节点是一个JVM进程,负责在 Spark 作业中运行具体任务,任务彼此原创 2020-06-22 19:10:41 · 169 阅读 · 0 评论 -
spark内核解析1- 集群启动流程
通过画图清晰地表达了整个流程,包括当时觉得重要的代码段原创 2019-02-25 12:15:35 · 227 阅读 · 0 评论 -
spark内核解析4-standalone下任务生成和提交流程
Driver端:1.调用SparkSumbit类,执行main(),接收调用者传递过来的参数,匹配 提交|杀死|查看任务 ,执行doRunMain(),用Class.forName通过反射拿到目标类,获取main(),调用 invoke()通过反射执行main2.构建SparkContext对象,在SparkContext入口类创建了SparkEnv对象(为了创建actorSystem...原创 2019-04-02 22:56:59 · 151 阅读 · 0 评论 -
Spark Troubleshooting
目录控制reduce端缓冲大小以避免OOMJVM GC导致的shuffle文件拉取失败解决各种序列化导致的报错解决算子函数返回NULL导致的问题解决YARN-CLIENT模式导致的网卡流量激增问题解决YARN-CLUSTER模式的JVM内存溢出持久化与checkpoint的使用控制reduce端缓冲大小以避免OOM在Shuffle过程,reduce端task并不是等到map端task将其数据全部写入磁盘后再去拉取,而是map端写一点数据,reduce端task就会拉取一小部分数据,然后立即进行后面的聚合原创 2020-07-01 11:02:40 · 308 阅读 · 0 评论 -
spark内核解析5-通讯机制
Spark通信架构概述Spark2.x版本使用Netty通讯框架作为内部通讯组件,之前用Akka,它是基于Actor模型Spark通讯框架中各个组件(Client/Master/Worker)可以认为是一个个独立的实体,各个实体之间肯定需要通过消息来进行通信Endpoint(Client/Master/Worker)有1个InBox和N个OutBox(N>=1,N取决于当前Endpoint与多少其他的Endpoint进行通信,一个与其通讯的其他Endpoint对应一个OutBox),End原创 2020-07-01 11:03:22 · 137 阅读 · 0 评论 -
spark内核解析6-任务调度机制
我们公司用的是Yarn管理的所有资源,也就是yarn-cluster模式博客如果有些地方理解的不对,欢迎大家指出,共同交流进步任务提交流程下面两个图你看哪个看着更习惯,大家可以看看熟悉这个流程以流程图表示从上述时序图可知,Client只负责提交Application并监控Application的状态。对于Spark的任务调度主要是集中在两个方面: 资源申请和任务分发,其主要是通过ApplicationMaster、Driver以及Executor之间来完成提交一个Spark应用程序,首先通原创 2020-07-01 11:03:13 · 158 阅读 · 0 评论 -
spark内核解析3-几种部署模式
目录运行模式Standalone模式Standalone ClientStandalone ClusterYarnYARN ClientYARN Cluster运行模式Spark支持3种集群管理器(Cluster Manager),分别为:Standalone:独立模式,Spark原生的简单集群管理器,自带完整的服务,可单独部署到一个集群中,无需依赖任何其他资源管理系统,使用Standalone可以很方便地搭建一个集群;Apache Mesos:一个强大的分布式资源管理框架,它允许多种不同的框架部原创 2020-06-22 19:25:34 · 191 阅读 · 0 评论 -
spark数据倾斜
目录什么是数据倾斜怎么定位解决方案1聚合原数据2过滤导致倾斜的key3提高shuffle操作中的reduce并行度4使用随机key实现双重聚合5将reduce join转换为map join6sample采样对倾斜key单独进行join7使用随机数以及扩容进行join方案8什么是数据倾斜主要是由于不同的key对应的数据量不同导致的不同task所处理的数据量不同,导致少数task被分配了绝大多数的数据,因此这些少数的task运行缓慢,甚至直接OOM主要表现:Spark作业的大部分task都执行迅速,原创 2020-07-01 11:02:20 · 131 阅读 · 0 评论 -
spark调优
目录性能调优算子调优shuffle调优JVM调优性能调优算子调优shuffle调优JVM调优原创 2020-07-01 11:05:40 · 131 阅读 · 0 评论 -
spark四 依赖和shuffle
宽依赖和窄依赖我画的官网的也就是说:宽依赖:多个子RDD的Partition会依赖同一个父RDD的Partition,此时就是发生了shuffleshuffle标准:发生了宽依赖依赖的作用:RDD只支持粗粒度转换,即在大量记录上执行的单个操作。将创建RDD的一系列Lineage(即血统,依赖)记录下来,以便恢复丢失的分区。RDD的Lineage会记录RDD的元数据信息和转换行为,...原创 2019-04-02 23:36:18 · 278 阅读 · 0 评论 -
RDD和DataFrame和DataSet
Dataset是具有强类型的数据集合,需要提供对应的类型信息Dataset未来会取代RDD和DataFrame概念DataFrame=Dataset[Row]DataSet是强类型的。比如可以有Dataset[Person]指定了Person类型三者的共性1、RDD、DataFrame、Dataset全都是spark平台下的分布式弹性数据集,为处理超大型数据提供便利2、三者都有惰性机制,在进行创建、转换,如map方法时,不会立即执行,只有在遇到Action如foreach时,三者才会开始遍历运原创 2020-06-15 16:04:29 · 123 阅读 · 0 评论 -
spark对各种数据源的操作
介绍spark中通过rdd以及sql和streaming操作各种数据源的方法,以及简单demo原创 2020-06-15 15:20:04 · 650 阅读 · 0 评论 -
Spark消费Kafka的两种方式
在这里插入代码片原创 2020-06-11 17:40:24 · 5969 阅读 · 1 评论 -
spark2.x安装
条件jdkhadoop安装scalahttps://www.scala-lang.org/download/发到虚拟机上,解压tar -zxvf ./scala-2.13.2.tgzmv scala-2.13.2 /usr/local/配置环境变量vim /etc/profilesource /etc/profile配置SCALA_HOME,然后在PATH变量后加上:$SCALA_HOME/bin#scalaexport SCALA_HOME=/usr/local/scal原创 2020-06-07 20:55:19 · 493 阅读 · 1 评论 -
移动平均法的实现--spark
案例场景数据结构(k,t,v) k是id,t是时间,v是这个id在某个时间点对应的值股票代码,时间,收盘价 AA,2017-1-7,10.8 AA,2017-1-8,10.9 AA,2017-1-9,11 AA,2017-1-30,10.5 BB,2017-1-31,10.7 BB,2017-2-1,10.9 BB,2017-2-2,11.1 ...原创 2019-03-22 12:00:52 · 1056 阅读 · 0 评论 -
spark机器学习一 向量和矩阵
ScalaNLP是一套机器学习和数值计算的库,主要是关于科学计算、机器学习和自然语言处理(NLP)的,里面包含三个库,Breeze、Epic和Puck。其中Breeze是机器学习和数值计算库,Epic是一种高性能统计分析器和结构化预测库,Puck是一个快速GPU加速解析器。常用类型转换apitoArray转为Breeze toBreeze稠密转稀疏 toSparseMllib...原创 2019-03-28 11:41:49 · 353 阅读 · 0 评论 -
spark11 sparkStreming
sparkStreaming实时性不如storm,但是吞吐量要大得多DStream:代表了一系列连续的RDD,是一个离散的数据流,API名字和RDD相似,1.可以直接处理,但是同时自动执行,每5秒执行一次,在这5秒内的都算输入,其他的不会识别2.特殊 -> transform 把他当做RDD算子 在这个算子内部进行map等算子操作3.想要一致累加就要特殊 -> updateS...原创 2020-04-19 19:48:28 · 262 阅读 · 0 评论 -
spark之共享变量
累加: 定义一个count=0,对rdd遍历累加当只有一个分区,count累加成功否者count还是0此时用到累加器累加器支持加法,支持数值类型和自定义类型 参数可以为Object累加器类型除Spark自带的int、float、Double外,也支持开发人员自定义。并行计算...原创 2020-05-12 16:23:09 · 272 阅读 · 0 评论 -
spark九 排序
排序: 有两种方法.1 自定义类,封装比较的参数定义一个隐式方法 implicit val sortFV = new Ordering[Girl]{}2 直接继承Ordered,实现compare()原创 2020-05-12 14:57:00 · 130 阅读 · 0 评论 -
sql练习进阶-sparksql语法区别
表和数据/* Navicat Premium Data Transfer Source Server : pdm Source Server Type : MySQL Source Server Version : 50173 Source Host : 192.168.1.100:3306 Source Schema : ...原创 2019-07-03 10:48:44 · 2393 阅读 · 0 评论 -
spark八 sparksql
DataFrame: 分布式数据容器,封装了Schema(数据库的二维表格结构)信息的RDD生成方式:1.直接把字段封装到对象里,通过反射推断schema rdd.toDF()2.用StructType直接指定schema val schema: StructType = StructType{ StructField("id", IntegerType, false)...原创 2020-04-19 19:38:06 · 255 阅读 · 0 评论 -
spark七 自定义分区
/** * 自定义分区器 */class SubjectPartitoner(subjects: Array[String]) extends Partitioner{ // 用于存储学科信息以及对应的分区号 val subjectAndNum = new mutable.HashMap[String, Int](); // 计 /数器,用来生成分区号 var i = 0...原创 2019-04-02 23:50:48 · 114 阅读 · 0 评论 -
spark六 DAG和task
task的生成:首先需要stage划分,依据划分的stage来生成tasktask的数量和分区的数量和sttage的数量是有直接关系的在发送shuffle的过程中,会产生shuffle write 和shuffle readeshuffle write : 发生在shuf/fle之前,把需要shuffle的数据写到磁盘,保证了数据的可靠性为什么在发送shuffle的时候,需要把数...原创 2019-04-02 23:49:43 · 366 阅读 · 0 评论 -
spark五 缓存(持久化)和检查点
——可以在内存中持久化或缓存多个数据集。当持久化某个RDD后,每一个节点都将把计算的分片结果保存在内存中,并在对此RDD或衍生出的RDD进行的其他动作中重用,一方面提高效率,另一方面内存加快速度缓存cachepersist发现cache最终也是调用了persist方法遇到的问题memory_only 3个g,内存只有2g,缓存2g,用到它是找缓存,发现缓存不够,就重新计算ch...原创 2019-04-02 23:45:28 · 499 阅读 · 0 评论 -
spark三 算子简介
RDD中的所有转换都是延迟加载的,也就是说,它们并不会直接计算结果。相反的,它们只是记住这些应用到基础数据集(例如一个文件)上的转换动作。只有当发生一个要求返回结果给Driver的动作时,这些转换才会真正运行。这种设计让Spark更加有效率地运行。也就是说Transformation算子,spark程序没有计算,遇到action算子开始计算Transformation算子介绍...原创 2019-04-02 23:26:47 · 442 阅读 · 0 评论 -
spark二 spark简介以及RDD
要学习spark,必须明白rdd,如果你不明白rdd,那么你会一脸懵逼的RDDspark源码RDD类注释1)一组分片(Partition),即数据集的基本组成单位。对于RDD来说,每个分片都会被一个计算任务处理,并决定并行计算的粒度。用户可以在创建RDD时指定RDD的分片个数,如果没有指定,那么就会采用默认值。默认值就是程序所分配到的CPU Core的数目。2)一个计算每个分区的函数。...原创 2019-04-02 23:16:22 · 130 阅读 · 0 评论 -
spark一 安装
1.下载Spark安装包http://www.apache.org/dyn/closer.lua/spark/spark-1.6.1/spark-1.6.1-bin-hadoop2.6.tgz2.上传解压安装包上传spark-1.6.1-bin-hadoop2.6.tgz安装包到Linux上解压安装包到指定位置tar -zxvf spark-1.6.1-bin-hadoop2.6.tgz...原创 2019-04-02 23:07:00 · 103 阅读 · 0 评论