
---- Spark
Spark是一个实现快速通用的集群计算平台。是通用内存并行计算框架,用来构建大型的、低延迟的数据分析应用程序。它扩展了广泛使用的MapReduce计算模型。高效的支撑更多计算模式,包括交互式查询和流处理。
云 祁
Focus BigData,专注于大数据技术领域的知识分享。
展开
-
Spark(十七)Spark Core 调优之资源调优JVM的GC垃圾收集器
文章目录一、概述二、垃圾收集器(garbage collector (GC)) 是什么?三、为什么需要GC?四、为什么需要多种GC?五、对象存活的判断六、垃圾回收算法6.1 标记 -清除算法6.2 复制算法6.3 标记-整理算法6.4 分代收集算法七、垃圾收集器7.1 Serial收集器7.2 ParNew收集器7.3 Parallel收集器7.4 CMS收集器7.5 G1收集器G1对Heap的划...转载 2020-04-23 21:00:45 · 1076 阅读 · 2 评论 -
Spark(十六)Spark Core 调优之资源调优JVM的基本架构
文章目录一、JVM的结构图1.1 Java内存结构1.2 如何通过参数来控制各区域的内存大小1.3 控制参数1.4 JVM和系统调用之间的关系二、JVM各区域的作用2.1 Java堆(Heap)2.2 方法区(Method Area)2.3 程序计数器(Program Counter Register)2.4 JVM栈(JVM Stacks)2.5 本地方法栈(Native Method Stac...转载 2020-04-23 15:03:15 · 928 阅读 · 0 评论 -
Spark(十五)Spark Core 调优之Spark资源调优
文章目录一、概述二、Spark作业基本运行原理三、资源参数调优3.1 num-executors3.2 executor-memory3.3 executor-cores3.4 driver-memory3.5 spark.default.parallelism3.6 spark.storage.memoryFraction3.7 spark.shuffle.memoryFraction一、概述...转载 2020-04-23 14:34:46 · 805 阅读 · 2 评论 -
Spark(十四)Spark Core 调优之Spark内存模型
文章目录一、概述二、堆内和堆外内存规划2.1 堆内内存2.2 堆外内存2.3 内存管理接口三、内存空间分配3.1 静态内存管理3.2 统一内存管理四、存储内存管理4.1 RDD 的持久化机制4.2 RDD 缓存的过程4.3 淘汰和落盘五、 执行内存管理5.1 多任务间内存分配5.2 Shuffle 的内存占用一、概述Spark 作为一个基于内存的分布式计算引擎,其内存管理模块在整个系统中扮演着...转载 2020-04-23 11:17:32 · 722 阅读 · 2 评论 -
Spark(十三)Spark Core 调优之Shuffle调优
一、概述大多数Spark作业的性能主要就是消耗在了shuffle环节,因为该环节包含了大量的磁盘IO、序列化、网络数据传输等操作。因此,如果要让作业的性能更上一层楼,就有必要对shuffle过程进行调优。但是也必须提醒大家的是,影响一个Spark作业性能的因素,主要还是代码开发、资源参数以及数据倾斜,shuffle调优只能在整个Spark的性能调优中占到一小部分而已。因此大家务必把握住调优的基...转载 2020-04-23 09:46:59 · 641 阅读 · 0 评论 -
Spark(十二)Spark Core 调优之数据倾斜调优
文章目录一、调优概述二、数据倾斜发生时的现象三、数据倾斜发生的原理四、如何定位导致数据倾斜的代码五、某个task执行特别慢的情况六、某个task莫名其妙内存溢出的情况七、查看导致数据倾斜的key的数据分布情况数据倾斜的解决方案解决方案一:使用 Hive ETL 预处理数据解决方案二:过滤少数导致倾斜的key解决方案三:提高shuffle操作的并行度解决方案四:两阶段聚合(局部聚合+全局聚合)解决方...转载 2020-04-23 00:03:35 · 364 阅读 · 4 评论 -
Spark(十一)Spark Core 调优之开发调优
一、前言在大数据计算领域,Spark 已经成为了越来越流行、越来越受欢迎的计算平台之一。Spark 的功能涵盖了大数据领域的离线批处理、SQL类处理、流式/实时计算、机器学习、图计算等各种不同类型的计算操作,应用范围与前景非常广泛。大多数同学(包括笔者在内),最初开始尝试使用Spark的原因很简单,主要就是为了让大数据计算作业的执行速度更快、性能更高。然而,通过Spark开发出高性能的大数据计...转载 2020-04-22 23:20:43 · 484 阅读 · 4 评论 -
【Spark 调优】Spark 开发调优的十大原则
Spark的调优是面试或者笔试考察的重点!原创 2020-02-29 17:03:04 · 1535 阅读 · 2 评论 -
Apache Flink 替换 Spark Stream的架构与实践( bilibili 案例解读)
摘要:本文由 bilibili 大数据实时平台负责人郑志升分享,基于对 bilibili 实时计算的痛点分析,详细介绍了 bilibili Saber 实时计算平台架构与实践。本次分享主要围绕以下四个方面:一、实时计算的痛点二、Saber 的平台演进三、结合 AI 的案例实践四、未来的发展与思考一、实时计算的痛点 1.痛点各个业务部门进行业务研发时都有实时计算的...转载 2020-03-14 16:58:12 · 1820 阅读 · 0 评论 -
【Spark】(十)详解 Spark DataSet
文章目录一、前言二、创建SparkSession三、DataSet/DataFrame的创建四、DataSet 基础函数五、DataSet 的 Actions 操作六、DataSet 的转化操作七、DataSet 的内置函数八、例子:WordCount一、前言Spark的发展史可以简单概括为三个阶段,分别为:RDD、DataFrame 和DataSet。在Spark 2.0之前,使用Spark...转载 2020-03-13 12:55:06 · 2319 阅读 · 0 评论 -
【Spark】(九)Spark GraphX 图计算解析
文章目录前言:为什么需要图计算一、Spark GraphX概述前言:为什么需要图计算许多大数据以大规模图或网络的形式呈现许多非图结构的大数据,常会被转换为图模型进行分析图数据结构很好地表达了数据之间的关联性一、Spark GraphX概述...原创 2020-01-12 22:37:38 · 1834 阅读 · 0 评论 -
【Spark】(八)Spark SQL 应用解析
文章目录一、Spark SQL的进化之路二、认识Spark SQL2.1 什么是Spark SQL?2.2 Spark SQL的作用2.3 运行原理2.4 特点2.5 Spark SQL数据抽象三、Spark SQL API3.1 SparkSession3.2 DataSet ( Spark1. 6 + )1、创建 DataSet2、使用case Class 创建 DataSet3、使用Data...原创 2020-01-10 00:44:07 · 1539 阅读 · 2 评论 -
【Spark】(七)Spark partition 理解 / coalesce 与 repartition的区别
文章目录一、spark 分区 partition的理解二、coalesce 与 repartition的区别(我们下面说的coalesce都默认shuffle参数为false的情况)三、实例四、总结一、spark 分区 partition的理解spark中是以vcore级别调度task如果读取的是hdfs,那么有多少个block,就有多少个partition举例来说:sparksql 要读...原创 2020-01-09 20:11:16 · 1462 阅读 · 0 评论 -
【Spark】(六)Spark 运行流程
文章目录一、Spark中的基本概念二、Spark的运行流程2.1 Spark的基本运行流程1、说明2、图解3、Spark运行架构特点4、DAGScheduler5、TaskScheduler6、SchedulerBackend7、Executor三、Spark在不同集群中的运行架构3.1 Spark on Standalone运行过程3.2 Spark on YARN运行过程3.2.1 YARN框...原创 2020-01-09 19:33:36 · 1375 阅读 · 2 评论 -
【Spark】(五)Spark Transformation(转换算子) 和 Action(执行算子)
文章目录一、Transformation 和 Action1、转换操作2、行动操作二、map、flatMap、mapParations、mapPartitionsWithIndex2.1 map2.2 flatMap3.3 mapPartitions2.4 mapPartitionsWithIndex三、reduce、reduceByKey3.1 reduce3.2 reduceByKey四、un...原创 2020-01-09 18:58:57 · 2159 阅读 · 0 评论 -
【Spark】(四)Spark 广播变量和累加器
文章目录一、概述二、广播变量broadcast variable2.1 为什么要将变量定义成广播变量?2.2 广播变量图解2.3 如何定义一个广播变量?2.4 如何还原一个广播变量?2.5 定义广播变量需要的注意点?2.6 注意事项三、累加器3.1 为什么要将一个变量定义为一个累加器?3.2 图解累加器3.3 如何定义一个累加器?3.4 如何还原一个累加器?3.5 注意事项一、概述在spark...原创 2020-01-07 22:32:43 · 1149 阅读 · 0 评论 -
【Spark】(三)Spark 架构原理和RDD使用详解
文章目录一、Spark 架构原理1.1 Spark架构核心组件1.2 各部分功能图二、RDD概述2.1 什么是RDD?2.2 RDD具体包含了一些什么东西?2.3 RDD的五大特性2.4 RDD可以从哪来2.5 WordCount粗图解RDD三、RDD的创建方式3.1 通过读取文件生成的3.2 通过并行化的方式创建RDD3.3 其他方式四、RDD编程API4.1 Transformation4.2...原创 2020-01-06 22:59:15 · 1800 阅读 · 1 评论 -
【Spark】(二)Spark2.3.4 集群分布式安装
文章目录一、下载Spark安装包二、安装准备三、Spark安装四、启动Spark五、验证一、下载Spark安装包从官网下载:http://spark.apache.org/downloads.html二、安装准备以下安装都可以参照以前的环境搭建博客:1、Java8安装成功2、zookeeper安装成功3、hadoop2.6.0 HA安装成功4、Scala安装成功(不安装进程也可以...原创 2020-01-03 11:18:24 · 1673 阅读 · 0 评论 -
【Spark】(一)初识 Spark
Apache Spark™是用于大规模数据处理的统一分析引擎。原创 2020-01-03 01:40:49 · 1425 阅读 · 0 评论 -
【Spark】Spark SQL 数据类型转换
前言数据类型转换这个在任何语言框架中都会涉及到,看起来非常简单,不过要把所有的数据类型都掌握还是需要一定的时间历练。SparkSql数据类型数字类型ByteType:代表一个字节的整数。范围是-128到127ShortType:代表两个字节的整数。范围是-32768到32767IntegerType:代表4个字节的整数。范围是-2147483648到2147483647LongT...原创 2020-02-22 11:41:53 · 5774 阅读 · 0 评论 -
【Spark 应用】实现分组取topN
一、文本格式class1 90class2 56class1 87class1 76class2 88class1 95class1 74class2 87class2 67class2 77二、代码如下package com.scala import org.apache.spark.SparkConfimport org.apache.spark.Spa...原创 2020-02-29 16:40:51 · 1222 阅读 · 0 评论 -
【Spark】Spark 与 Hadoop MR 之间的区别
首先Spark是借鉴了mapreduce并在其基础上发展起来的,继承了其分布式计算的优点并改进了mapreduce明显的缺陷,但是二者也有不少的差异具体如下:1、spark把运算的中间数据存放在内存,迭代计算效率更高;mapreduce的中间结果需要落地,需要保存到磁盘,这样必然会有磁盘io操做,影响性能。2、spark容错性高,它通过弹性分布式数据集RDD来实现高效容错,RDD是...原创 2020-03-12 23:15:46 · 1570 阅读 · 1 评论 -
【Spark】Spark 优化操作之自定义 distinct
因为默认的distinct算子操作效率太低,自己改写一下。很简单def mydistinct(iter: Iterator[(String, Int)]): Iterator[String] = { iter.foldLeft(Set[String]())((CurS, item) => CurS + item._1).toIterator}// mydistinct 的使用过...转载 2020-02-04 21:49:32 · 2589 阅读 · 0 评论 -
【Spark】Spark Dataframe 常用操作(一行数据映射为多行)
spark dataframe派生于RDD类,但是提供了非常强大的数据操作功能。当然主要对类SQL的支持。在实际工作中会遇到这样的情况,主要是会进行两个数据集的筛选、合并,重新入库。首先加载数据集,然后在提取数据集的前几行过程中,才找到limit的函数。而合并就用到union函数,重新入库,就是registerTemple注册成表,再进行写入到HIVE中。不得不赞叹dataframe的强大...原创 2020-02-11 21:49:15 · 2573 阅读 · 0 评论 -
【Spark】Spark Dataframe 对项目中的数据实现列转行操作
文章目录一、数据源二、首先考虑单独两行映射三、同理将其余隔行依次映射四、数据进行拼接一、数据源转换之前先看下数据结构多行存在空值需要过滤,不同的状态(yes、maybe、invited、no)存在多个值,需要转换成(events userid status)的状态val df = spark.read.format("csv").option("header","true").load(...原创 2020-02-12 23:02:16 · 1734 阅读 · 1 评论