
spark
介绍spark的一些东西
火成哥哥
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Spark 数据倾斜
一、Spark 数据倾斜介绍1.1 数据倾斜介绍Spark 中的数据倾斜问题主要指 shuffle 过程中出现的数据倾斜问题,是由于不同的 key 对应的数据量不同导致的不同 task 所处理的数据量不同的问题。例如,reduce 点一共要处理 100 万条数据,第一个和第二个 task 分别被分配到了 1 万条数据,计算 5 分钟内完成,第三个 task 分配到了 98 万数据,此时第三个 task 可能需要 10 个小时完成,这使得整个 Spark 作业需要 10 个小时才能运行完成,这就是数据倾原创 2020-09-15 00:14:52 · 658 阅读 · 0 评论 -
Spark 调优
一、常规性能调优1.1 最优资源配置Spark 性能调优的第一步,就是为任务分配更多的资源,在一定范围内,增加资源的分配与性能的提升是成正比的,实现了最优的资源配置,在此基础上再考虑进行后面论述的性能调优策略。资源的分配在使用脚本提交 Spark 任务时进行指定,标准的 Spark 任务提交脚本如下所示:bin/spark-submit \--class com.atguigu.spark.Analysis \--master yarn--deploy-mode cluster--num-e原创 2020-09-14 01:29:42 · 1541 阅读 · 0 评论 -
Spark 内存管理
一、堆内和堆外内存规划作为一个 JVM 进程,Executor 的内存管理建立 JVM 的内存管理之上,Spark 对 JVM 的堆内(On-heap)空间进行了更为详细的分配,以充分利用内存。同时,Spark 引入了堆外(Off-heap)内存,使之可以直接在工作节点的系统内存中开辟空间,进一步优化了内存的使用。堆内内存受到 JVM 统一管理,堆外内存是直接向操作系统进行内存堆申请和释放。1、堆内内存堆内内存的大小,由 Spark 应用程序启动时的 - executor-memory 或 spar原创 2020-09-07 20:29:04 · 458 阅读 · 0 评论 -
Spark Shuffle 解析
一、Spark Shuffle 介绍Shuffle 的中文解释为“洗牌操作”,可以理解成将集群中所有节点上的数据进行重新整合分类的过程。其思想来源于Hadoop 的 MapReduce,Shuffle 是连接 map 阶段和 reduce 阶段的桥梁。由于分布式计算中,每个阶段的各个计算节点只处理任务的一部分数据,若下一个阶段需要依赖前面阶段的所有计算结果时,则需要对前面阶段的所有计算结果进行重新整合和分类,这就需要经历 Shuffle 过程。在 Spark 中,RDD 之间的关系包含窄依赖和宽依赖,其原创 2020-09-05 21:21:43 · 410 阅读 · 0 评论 -
Spark 中任务调度机制
一、Spark 任务调度机制概述在生产环境下,Spark 集群的部署方式一般为 YARN-Cluster 模式,下面内核分析中默认集群的部署方式为 YARN-Cluster 模式。Driver 线程主要是初始化 SparkContext 对象,准备运行所需的上下文,然后一方面保持与 ApplicationMaster 的 RPC 连接,通过 ApplicationMaster 申请资源,另一方面根据用户业务逻辑开始调度任务,将任务下发到已有的空闲 Executor 上。当 ResourceManage原创 2020-09-04 23:19:39 · 1794 阅读 · 0 评论 -
Spark 中通讯架构
一、Spark 通信架构介绍Spark 中通信框架的发展:1、Spark 早期版本中采用 Akka 作为内部通信部件。2、Spark 1.3 中引入 Netty 通信框架,为了解决 Shuffle 的大数据传输问题使用。3、Spark 1.6 中 Akka 和 Netty 可以配置使用,Netty 完全实现了 Akka 在 Spark 中的功能。4、Spark 2 系列中,不再使用 Akka,使用 Netty。二、Spark 通讯架构解析架构图为:1、RpcEndpointRPC 通信终原创 2020-09-02 15:07:39 · 361 阅读 · 0 评论 -
SparkStreaming 介绍及 wordcount 案例
一、介绍1、Spark Streaming 是什么?Spark Streaming 用于流式数据的处理。Spark Streaming 支持的数据输入源很多,例如:Kafka、Flume、Twitter、ZeroMQ 和简单的 TCP 套接字等等。数据输入后可以用 Spark 进行运算,而结果也能保存在很多地方,如 HDFS,数据库等。2、DStream和 Spark 基于 RDD 的概念很相似,Spark Streaming 使用离散化流(discretized stream)作为抽象表示,叫作原创 2020-08-16 10:47:34 · 536 阅读 · 0 评论 -
SparkSQL on Hive 环境配置
一、环境配置二、案例原创 2020-08-15 22:41:33 · 711 阅读 · 0 评论 -
SparkSQL 基础编程
一、介绍Spark Core 中,如果想要执行应用程序,需要首先构建上下文环境对象 SparkContext,Spark SQL 其实可以理解为对Spark Core 的一种封装,不仅仅在模型上进行了封装,上下文环境对象也进行了封装。在老的版本中,SparkSQL 提供两种 SQL 查询起始点:一个叫 SQLContext,用于 Spark 自己提供的 SQL 查询;一个叫HiveContext,用于连接 Hive 的查询。SparkSession 是 Spark 最新的 SQL 查询起始点,实质上是原创 2020-08-12 22:27:40 · 618 阅读 · 0 评论 -
Spark 中的累加器及广播变量
一、累加器1、原理累加器用来把 Executor 端变量信息聚合到 Driver 端。在 Driver 程序中定义的变量,在 Executor 端的每个 Task 都会得到这个变量的一份新的副本,每个 task 更新这些副本的值后,传回 Driver 端进行 merge。2、系统累加器package spark.core.accumulatorimport org.apache.spark.{SparkConf, SparkContext}/** * 系统自带累加器 */object原创 2020-08-12 09:27:43 · 230 阅读 · 0 评论 -
Spark 中 RDD 持久化
1、RDD Cache 缓存1、介绍RDD 通过 Cache 或者 Persist 方法将前面的计算结果缓存,默认情况下会把数据以序列化的形式缓存在 JVM 的堆内存中。但是并不是这两个方法被调用时立即缓存,而是触发后面的 action 算子时,该 RDD 将会被缓存在计算节点的内存中,并供后面重用。2、代码package spark.core.lastingimport org.apache.spark.{SparkConf, SparkContext}import org.apache.s原创 2020-08-12 00:19:08 · 211 阅读 · 0 评论 -
Spark 中 RDD 的依赖关系
一、RDD 血缘关系RDD 只支持粗粒度转换,即在大量记录上执行的单个操作。将创建 RDD 的一系列 Lineage(血统)记录下来,以便恢复丢失的分区。RDD 的 Lineage 会记录 RDD 的元数据信息和转换行为,当该 RDD 的部分分区数据丢失时,它可以根据这些信息来重新运算和恢复丢失的数据分区。通过 rdd.toDebugString 方法可以看到 RDD 的血缘关系:package spark.core.dependentimport org.apache.spark.{SparkC原创 2020-08-11 11:41:35 · 379 阅读 · 0 评论 -
Spark 中 RDD 序列化
一、闭包检测从计算的角度,算子以外的代码都是在 Driver 端执行,算子里面的代码都是在 Executor 端执行。那么在 scala 的函数式编程中,就会导致算子内经常会用到算子外的数据,这样就形成了闭包的效果,如果使用的算子外的数据无法序列化,就意味着无法传值给 Executor 端执行,就会发生错误,所以需要在执行任务计算前,检测闭包内的对象是否可以进行序列化,这个操作我们称之为闭包检测。二、序列化方法与属性driver 侧的代码中的运算数据需要 extends Serializable,才可原创 2020-08-11 10:06:00 · 1108 阅读 · 0 评论 -
Spark 算子使用案例 -- 统计广告点击量 Top3
1、数据准备数据格式:时间戳,省份,城市,用户,广告,中间字段使用空格分隔。数据的粒度是用户,每一条数据是用户在何时何地点击了广告。1516609143867 6 7 64 161516609143869 9 4 75 181516609143869 1 7 87 121516609143869 2 8 92 91516609143869 6 7 84 241516609143869 1 8 95 51516609143869 8 1 90 291516609143869 3 3 36原创 2020-08-11 09:09:26 · 1993 阅读 · 0 评论 -
Spark 中的算子
一、转换算子1.1 map 算子1、算子签名def map[U: ClassTag](f: T => U): RDD[U]2、算子说明将处理的数据逐条进行映射转换,这里的转换可以是类型的转换,也可以是值的转换。3、代码演示package spark.core.conversion_operator.mapimport org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}/** *原创 2020-08-10 21:24:35 · 617 阅读 · 0 评论 -
Spark 中 RDD 的创建
在 Spark 中创建 RDD 的创建方式可以分为四种:1、从集合(内存)中创建 RDDpackage spark.core.rddimport org.apache.spark.{SparkConf, SparkContext}/** * 从集合(内存)中创建 RDD * 1、parallelize * 2、makeRDD * 从底层代码实现来讲,makeRDD 方法其实就是 parallelize 方法。 */object Spark_RDD_Memory { def mai原创 2020-07-12 22:07:33 · 756 阅读 · 0 评论 -
Spark 中 RDD 介绍
一、RDD 为何会产生?Hadoop 的 MapReduce 是一种基于数据集的工作模式,面向数据,这种工作模式一般是从存储上加载数据集,然后操作数据集,最后写入物理存储设备。数据更多面临的是一次性处理。MR 的这种方式在两个方面的效率很低。第一种是迭代式的算法,比如机器学习中 ALS、凸优化梯度下降等。这些都需要基于数据集或者数据集的衍生数据反复查询反复操作,MR 这种模式不太合适,即使多 MR 串行处理,性能和时间也是一个问题,数据的共享依赖于磁盘,读取磁盘会耗费大量时间。第二种就是 olap 场景原创 2020-07-11 22:43:53 · 668 阅读 · 0 评论 -
spark 架构与核心概念
1、架构图2、概念介绍基本概念:Application:用户编写的 Spark 应用程序。Driver:Spark 中的 Driver 即运行上述 Application 的 main 函数并创建 SparkContext,创建 SparkContext 的目的是为了准备 Spark 应用程序的运行环境,在 Spark 中有 SparkContext 负责与 ClusterManager 通信,进行资源申请、任务的分配和监控等,当 Executor 部分运行完毕后,Driver 同时负责将 Spa原创 2020-07-09 00:04:56 · 472 阅读 · 0 评论 -
在 IDEA 中编写 spark wordcount 程序
一、环境准备安装好 jdk安装好 idea安装好 scala安装好 windows 编译后的 hadoop环境变量都要配置好二、用 maven 将程序打成 jar 包上传到集群运行1、创建一个 maven 项目2、安装 scala 插件3、在项目中添加 scala 插件4、添加 pom 依赖 <properties> <log4j.ver...原创 2020-03-16 10:49:41 · 867 阅读 · 0 评论 -
spark-submit 与 spark-shell 介绍
一、spark-submit 介绍1、spark-submit 介绍程序一旦打包好,就可以使用 bin/spark-submit 脚本启动应用了。这个脚本负责设置 spark 使用的 classpath 和依赖,支持不同类型的集群管理器和发布模式。2、运行方式./bin/spark-submit \ --class <main-class> --master <m...原创 2020-03-15 10:39:51 · 2107 阅读 · 0 评论 -
Spark 配置 Standalone 集群以及 Job History Server
一、环境准备1、准备三台 linux 机器2、每台机器都设置好 ip 和主机名3、每台机器设置主机名与 ip 映射4、每台机器都关闭防火墙5、设置机器与机器之间的 ssh 通信6、每台机器都提前安装好 jdk7、准备 spark 安装包二、部署 standalone 集群1、集群规划hadoop151hadoop152hadoop153master...原创 2020-03-14 23:46:01 · 688 阅读 · 0 评论 -
Spark部署模式介绍
一、LocalLocal 模式是最简单的一种运行方式,它采用单节点多线程方式运行,不用部署,开箱即用,适合日常测试开发。在 shell 中有如下几种参数配置:local:只启动一个工作线程;local[k]:启动 k 个工作线程;local[*]:启动跟 cpu 数目相同的工作线程数。二、Local-ClusterLocal-Cluster 为本地集群模式,类似于 hadoop 的...原创 2020-03-13 10:10:21 · 703 阅读 · 0 评论 -
spark介绍
一、spark 是什么?Spark是一种快速、通用、可扩展的大数据分析引擎,2009年诞生于加州大学伯克利分校 AMPLab,2010年开源,2013年6月成为Apache孵化项目,2014年2月成为Apache顶级项目。项目是用Scala进行编写。目前,Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含SparkSQL、Spark Streaming、GraphX、MLib、...原创 2020-03-11 09:43:04 · 1797 阅读 · 0 评论