spark
逆水行舟如何
热爱开源,喜欢去研究各种源码
展开
-
spark实际工作中资源分配策略
执行Spark任务,资源分配是很重要的一方面。如果配置不准确,Spark任务将耗费整个集群的机缘导致其他应用程序得不到资源。怎么去配置Spark任务的executors,cores,memory,有如下几个因素需要考虑:数据量任务完成时间点静态或者动态的资源分配上下游应用Spark应用当中术语的基本定义:Partitions : 分区是大型分布式数据集的一小部分。 Spark使用分区来管理数据,这些分区有助于并行化数据处理,并且使executor之间的数据交换最小化Task: 任务是一个原创 2020-08-23 10:41:47 · 869 阅读 · 0 评论 -
Spark RDD容错原理
文章目录一、Spark RDD容错原理二、RDD容错的四大核心要点1.调度层(包含DAG生成和Task重算两大核心)1)DAG生成层2)Task计算层2.RDD Lineage血统层容错3.checkpoint层容错一、Spark RDD容错原理RDD不同的依赖关系导致Spark对不同的依赖关系有不同的处理方式。对于宽依赖而言,由于宽依赖实质是指父RDD的一个分区会对应一个子RDD的多个分区,在此情况下出现部分计算结果丢失,单一计算丢失的数据无法达到效果,便采用重新计算该步骤中的所有数据,从而会导致计原创 2020-07-14 08:45:11 · 603 阅读 · 0 评论 -
MapReduce的shuffle和Spark的shuffle区别
一、MapReduce的shuffle1、mapShuffle 数据存到hdfs中是以块进行存储的,每一个块对应一个分片,maptask就是从分片中获取数据的 在某个节点上启动了mapTask,mapTask读取是通过k-v来读取的,读取的数据会放到环形缓存区,这样做的目的是为了防止IO的访问次数,然后环形缓存区的内存达到一定的阀值的时候会把文件益写到磁盘,...原创 2020-02-29 13:17:15 · 1341 阅读 · 0 评论 -
深入理解 spark 的checkpoint 机制
我们应该都很熟悉 checkpoint 这个概念, 就是把内存中的变化刷新到持久存储,斩断依赖链 在存储中 checkpoint 是一个很常见的概念, 举几个例子:数据库 checkpoint 过程中一般把内存中的变化进行持久化到物理页, 这时候就可以斩断依赖链, 就可以把 redo 日志删掉了, 然后更新下检查点, hdfs namenode 的元数据 editlog, Secondar...原创 2019-12-23 16:45:23 · 531 阅读 · 0 评论 -
SparkStreaming读取Kafka的数据并写入到HBase
1、编写HBase工具类package HBaseDao;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.client.HBaseAdmin;import org.apache.hadoop.hbase.client.HTable;import org.apache.hadoop....原创 2019-11-27 16:40:51 · 2308 阅读 · 4 评论 -
ReduceByKey、GroupByKey和AggregateByKey的区别
1、先看源码1)ReduceByKey def reduceByKey(partitioner: Partitioner, func: (V, V) => V): RDD[(K, V)] = self.withScope { combineByKeyWithClassTag[V]((v: V) => v, func, func, partitioner) }...原创 2019-11-22 18:01:02 · 825 阅读 · 0 评论 -
Spark On YARN中client和cluster的区别
1、首先我们来看一下yarn运行时的架构图yarn的运行流程用户向 YARN 中提交应用程序,其中包括 MRAppMaster 程序,启动 MRAppMaster 的命令,用户程序等。 ResourceManager 为该程序分配第一个 Container,并与对应的 NodeManager 通讯,要求它在这个 Container 中启动应用程序 MRAppMaster。 MRA...原创 2019-08-16 15:34:14 · 5881 阅读 · 2 评论 -
Spark 遇到OOM怎么解决
Spark中的OOM问题不外乎以下两种情况map执行中内存溢出 shuffle后内存溢出Spark 内存模型: Spark在一个Executor中的内存分为三块: 一块是execution内存, 一块是storage内存, ...原创 2019-08-07 14:59:45 · 956 阅读 · 0 评论 -
SparkCore核心知识
一、Spark作业调度方式1、local 测试或实验性质的本地运行模式 local[N] 是用单机的多个线程来模拟Spark分布式计算,通常用来验证开发出来的应用程序逻辑上有没有问题。 其中N代表可以使用N个线程,每个线程拥有一个core。如果不指定N,则默认是1个线程(该线程有1个core)。example:spark-submit --cla...原创 2019-01-08 14:30:12 · 215 阅读 · 0 评论 -
Spark基础理论及安装
一、初始Spark1、产生背景 由于mapreduce只适用于离线数据处理(批处理),而不能支持对迭代式,交互式,流式数据的处理,因此,spark就诞生了 hive的产生就是为了解决mapreduce的编程复杂的问题 spark的产生就是为了解决mapreduce的计算缓慢的问题 Spark和Map...原创 2019-01-08 11:36:30 · 139 阅读 · 0 评论 -
SparkSQL核心知识
一、SparkSQL概述1、概念 官网:http://spark.apache.org/sql/ Spark SQL是Spark用来处理结构化数据(结构化数据可以来自外部结构化数据源也可以通过RDD获取)的一个模块 外部的结构化数据源包括 Json,parquet(默认),rmdbs,hive等2、Spark SQL的优点 mapred...原创 2019-01-06 17:18:43 · 1498 阅读 · 1 评论 -
Spark源码分析
整个spark应用程序的运行分成三个阶段:1、编写代码,使用spark-submit去交任务到集群运行,一直到我们自己编写的main方法运行为止1、编写代码2、打成jar3、编写sprak-submit脚本提交任务4、脚本解析和执行最终转到main方法执行SparkSubmit 2、sparkContext的初始化new SparkContext(sparkCo...原创 2019-01-10 22:00:26 · 149 阅读 · 0 评论 -
SparkStreaming的介绍及原理
一、SparkStreaming的介绍1.离线和流处理的区别1)离线处理是针对一个批次,这个批次一般情况下都比较大流处理对应的数据是连续不断产生,处理时间间隔非常短的数据2)离线处理程序,因为数据是有限的(bounded),所以会终止流数据因为是连续不断的产生,所以数据是无限的(unbounded)由于数据的特征,一般离线处理比较缓慢,流数据处理相对较快流处理: ...原创 2018-12-24 22:51:24 · 2590 阅读 · 0 评论 -
Spark调优
Spark调优:总共分为四点:1.开发调优 2.资源调优 3.数据倾斜 4.shuffle1.开发调优1)避免创建重复的RDD(不包含数据,抽象描述)如果是需要对一个文件进行多次计算,那么注意,最好就只读一次。RDD:不可变可分区的弹性分布式数据集。2)尽可能复用同一个RDD3)对多次使用的RDD进行持久化(cache persist)(内存或磁盘)rdd1.map.reduce....原创 2018-12-18 16:47:28 · 295 阅读 · 1 评论