大数据复习--spark

spark与hadoop之间的根本差异是多个作业之间的数据通信问题,spark多个作业之间数据通信是基于内存,而hadoop是基于磁盘。
一、executor与core
sparkexecutor是集群中运行在工作节点(worker)中的一个Jvm进程,是整个集群中的专门用于计算的节点。在提交应用中,可以提供参数指定计算节点的个数,以及对应的资源。这里的资源一般指的是executor的内存大小和使用的虚拟cpu核(core)数量。
–num-executors 配置executor的数量
–executor-memory 配置每个executor的内存大小
–executor-cores 配置每个executor的虚拟cpu core数量
二、并行度(parallelism)
整个集群并行执行任务的数量称为并行度。
并发(concurrency):把任务在不同的时间点交给处理器进行处理。在同一时间点,任务并不会同时运行。
并行(parallelism):把每一个任务分配给每一个处理器独立完成。在同一时间点,任务一定是同时运行。

三、spark
rdd:弹性分布式数据集
累加器:分布式共享只写变量
广播变量:分布式共享只读变量
(1)rdd
rdd叫做弹性分布式数据集,是spark中最基本的数据处理模型。代码中是一个抽象类,它代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合。
弹性:①存储的弹性:内存与磁盘的自动切换
②容错的弹性:数据丢失可以自动恢复
③计算的弹性:计算出错重试机制
④分片的弹性:可根据需要重新分片
分布式:数据存储在大数据集群不同节点上。
数据集:RDD封装了计算逻辑,并不保存数据
数据抽象:rdd是一个抽象类,需要子类具体实现。
不可变:RDD封装了计算逻辑,是不可以改变的,想要改变,只能产生新的rdd,在新的RDD里面封装计算逻辑
可分区,并行计算
(2)spark执行原理
从计算的角度来讲,数据处理过程中需要计算资源(内存,cpu)和计算模型(逻辑)。执行时,需要将计算资源和计算模型进行协调和整合。
spark框架在执行时,先申请资源,然后将应用程序的数据处理逻辑分解成一个一个的计算任务。然后将任务发到已经分配资源的节点上,按照指定的计算模型进行数据计算,最后得到结果。rdd是spark框架中用于数据处理的核心模型。
①启动yarn集群环境
②spark通过申请资源创建调度节点和计算节点
③spark根据需求将计算逻辑根据分区划分成不同的任务
④调度节点将任务根据计算节点状态发送到对应的计算节点进行计算
从以上流程可以看出RDD在整个流程中主要用于将逻辑进行封装,并生成TASK发送给executor节点执行计算
(3)rdd算子
rdd根据数据处理方式的不同将算子整体上分为value类型,双value类型和key-value类型
①map
将处理的数据逐条进行映射转换,这里的转换可以是类型的转换,也可以是值的转换。
map和mappartition的区别
数据处理的角度
map算子是分区内一个数据一个数据的执行,类似于串行操作。而mappartitions算子是以分区为单位进行批处理操作。
功能的角度
map算子主要目的将数据源中的数据进行转换和改变,但是不会减少和增多数据。mappartitions算子需要传递一个迭代器,返回一个迭代器,没有要求元素的个数保持不变,所以可以增加或者减少数据。
性能的角度
map算子因为类似串行操作,所以性能比较低,而mappartition算子类似于批处理,所以性能比较高。但是mappartitions算子会长时间占用内存,那么这样会导致内存可能不够用,出现内存溢出的错误。所以在内存有限的情况下,不推荐使用mappartition操作
②flatmap
将处理的数据进行扁平化后再进行映射处理,所以算子也称为扁平映射。
③glom
将同一个分区的数据直接转换为相同类型的内存数组进行处理,分区不变
④groupby
将数据根据指定的规则进行分组,分区默认不变,但是数据会被打乱重新组合,我们将这样的操作称之为shuffle。极限情况下,数据可能被分在同一个分区中。
⑤filter
将数据根据指定的规则进行筛选过滤,符合规则的数据保留,不符合规则的数据丢弃。当数据进行筛选过滤后,分区不变,但是分区内的数据可能不均衡,生产环境下,可能会出现数据倾斜。
⑥sample
随机
⑦distinct
去重
⑧coalesce
根据数据量缩减分区,用于大数据集过滤后,提高小数据集的执行效率。
⑨repartition
扩大分区
⑩sort by
排序

上百节课详细讲解,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 本课程主要讲解的内容包括:Scala编程、HadoopSpark集群搭建、Spark核心编程、Spark内核源码深度剖析、Spark性能调优、Spark SQL、Spark Streaming。 本课程的最大特色包括: 1、代码驱动讲解Spark的各个技术点(绝对不是照着PPT空讲理论); 2、现场动手画图讲解Spark原理以及源码(绝对不是干讲源码和PPT); 3、覆盖Spark所有功能点(Spark RDD、Spark SQL、Spark Streaming,初级功能到高级特性,一个不少); 4、Scala全程案例实战讲解(近百个趣味性案例); 5、Spark案例实战的代码,几乎都提供了Java和Scala两个版本和讲解(一次性同时精通Java和Scala开发Spark); 6、大量全网唯一的知识点:基于排序的wordcount,Spark二次排序,Spark分组取topn,DataFrameRDD的两种转换方式,Spark SQL的内置函数、开窗函数、UDF、UDAF,Spark Streaming的Kafka Direct API、updateStateByKey、transform、滑动窗口、foreachRDD性能优化、Spark SQL整合使用、持久化、checkpoint、容错事务。 7、多个从企业实际需求抽取出的复杂案例实战:每日uv和销售额统计案例、top3热卖商品统计案例、每日top3热点搜索词统计、广告计费日志实时黑名单过滤案例、热点搜索词滑动统 计案例、top3热门商品实时统计案例 8、深度剖析Spark内核源码Spark Streaming源码,给源码进行详细的注释和讲解(史上最细致源码讲解) 9、全面讲解SparkSpark SQL、Spark Streaming的性能调优,其中包括全网唯一的Shuffle性能调优(详细讲解性能调优的各个技术点) 10、涵盖Spark两个重要版本,Spark 1.3.0和Spark 1.5.1的讲解(走在Spark最前沿,涵盖最新高级特性) 一、Scala编程详解 二、课程环境搭建 三、Spark核心编程 四、Spark内核源码深度剖析 五、Spark性能优化 六、Spark SQL 七、Spark Streaming
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值