Spark介绍

news2025/2/24 7:09:01

1、Spark是什么?

类似与Hadoop的MapReduce的计算框架,基于map和reduce实现分布式计算,对比MapReduce可有效减少落盘次数,增加效率.

任务之间通信交互不需要落盘,仅在shuffle时需要重新将数据排序分区落盘.

Spark的缓存功能更加高效,特别是在SparkSQL中,一般是以列式存储形式存储在内存中

Spark中最基本的数据处理模型:RDD

Spark RDD

数据集: RDD封装了计算逻辑并不保存数据

分布式: 数据存储在大数据集群不同节点并由一个主节点进行控制

可分区并行计算: 可处理计算不同分区数据

Spark运行结构

数据转化成RDD,之后的计算逻辑存储于driver.

当遇到需要落盘,action的操作时,会将多个任务分发到executors.

其他非RDD的代码逻辑都在driver计算.

2、Spark的使用场景

2.1、Spark 模块

大数据分析统计,实时数据处理

2.2、Spark计算词的个数

File:[hello,word,hello,world blibli,hello,word]

读取文件转成RDD类型后可以直接操作文本内容:

file=spark.textfile(“文件路径”) 
转换成RDD最基本的数据类型file.flatMap(_.split(“,”)) 
 hello word hello world rrsp hello word.map(word=>(word,1)) 
 (hello,1) (word,1) (hello,1) (world,1) (rrsp,1) (hello,1) (word,1).reduceByKey(_+_).foreach(println)
(hello,3) (word,3)(rrsp,1)(world,1)

易用性 => 编写简单,支持80种以上的高级算子,支持多种语言,数据源丰富,可部署在多种集群中

2.3、Spark Streaming

Spark Streaming处理乱序问题

Event time :事件发生的时间;

Processing time :处理事件数据的服务器时间

两种结果:

Spark Streaming 拉取到的一批数据,可能包含多个时间区间的数据;

一个 batch 中包含多个时间区间的数据, 加入我们的区间粒度是5分钟, 那么一个batch钟有可能包含 0~5 时间区间中的部分数据, 也有可能包含 5~10 时间区间中的部分数据, 这个很好处理,我们先对时间进行向下5分钟取整,然后使用取整后的时间分为多组, 然后计算出来指标.

同一个时间的数据可能出现在多个 batch 中.

需要在两个batch中计算出指标, 然后进行累计, 这个累计的过程, 你可以在内存中保存状态,把这个状态放在持久化存储中, 比如每次都在 redis, 或者 hbase 中进行累计.

3、Spark特点

● 快

与Hadoop的MapReduce相比,Spark基于内存的运算要快100倍以上,基于硬盘的运算也要快10倍以上。Spark实现了高效的DAG执行引擎,可以通过基于内存来高效处理数据流。

● 易用(算法多)

MR只支持一种计算算法,Spark支持多种算法。Spark支持Java、Python、R和Scala的API,还支持超过80种高级算法,使用户可以快速构建不同的应用。而且Spark支持交互式的Python和Scala的 shell,可以非常方便地在这些shell中使用Spark集群来验证解决问题的方法。

● 通用

Spark提供了统一的解决方案。Spark可以用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习(Spark MLlib)和图计算(GraphX)。这些不同类型的处理都可以在同一个应用中无缝使用。Spark 统一的解决方案非常具有吸引力,毕竟任何公司都想用统一的平台去处理遇到的问题,减少开发和维护的人力成本和部署平台的物力成本。

● 兼容性

Spark可以非常方便地与其他的开源产品进行融合。比如,Spark可以使用Hadoop的YARN和Apache Mesos作为它的资源管理和调度器,并且可以处理所有Hadoop支持的数据,包括HDFS、HBase和Cassandra等。这对于已经部署Hadoop集群的用户特别重要,因为不需要做任何数据迁移就可以使用Spark的强大处理能力。Spark也可以不依赖于第三方的资源管理和调度器,它实现了Standalone作为其内置的资源管理和调度框架,这样进一步降低了Spark的使用门槛,使得所有人都可以非常容易地部署和使用 Spark。此外,Spark还提供了在EC2上部署Standalone的Spark集群的工具。

4、Spark的配置

spark.driver.memory 4g --Driver的内存

spark.executor.instances 20 --总的executors数

spark.executor.cores 2 --每个executor的核数

spark.executor.memory 6G --每个executor的内存

spark.reducer.maxSizeInFlight --每次能够拉取多少数据

5、Spark 的几种运行模式

1.local 本地模式(单机)–开发测试使用;分为local单线程和local-cluster多线程

2.standalone 独立集群模式–开发测试使用;典型的Mater/slave模式

3.standalone-HA 高可用模式–生产环境使用;基于standalone模式,使用zk搭建高可用,避免Master是有单点故障的

4.on yarn 集群模式–生产环境使用;运行在yarn集群之上,由yarn负责资源管理,Spark负责任务调度和计算,

好处:计算资源按需伸缩,集群利用率高,共享底层存储,避免数据跨集群迁移。

5.on mesos 集群模式–国内使用较少;运行在mesos资源管理器框架之上,由mesos负责资源管理,Spark负责任务调度和计算

6.on cloud 集群模式–中小公司未来会更多的使用云服务,比如AWS的EC2,使用这个模式能很方便的访问Amazon的S3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/362139.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习.NET MAUI Blazor(六)、基于OpenAI接口的伪ChatGPT

ChatGPT不用介绍了。自从1月份开始到现在,火的不得了。网络上也充斥着各种教程,甚至还有号称是ChatGPT国内版的。那么ChatGPT到底有么有开放的API接口,那些打着ChatGPT的应用到底是如何实现的呢? 其实,国内环境虽然无法…

day49【代码随想录】动态规划之最长公共子序列、不相交的线、最大子序和、判断子序列

文章目录前言一、最长公共子序列(力扣1143)二、不相交的线(力扣1035)三、最大子序和(力扣53)四、判断子序列(力扣392)前言 1、最长公共子序列 2、不相交的线 3、最大子序和 4、判断…

C++012-C++一维数组

文章目录C012-C一维数组一维数组目标一维数组定义一维数组初始化一维数组输入输出题目描述 车厢货物**需要查看指定车厢的货物****倒着输出**题目描述 与指定数字相同的数的个数排序选择排序实现题目描述 成绩排名成绩第一名和最后一名在线练习:总结C012-C一维数组 …

推荐几个好玩的AI工具和办公效率网站!

1.copymonkey.ai CopyMonkey可以帮助用户生成和优化亚马逊商品列表文案,分析竞争对手,帮助推动销售。 2.bertha.ai Bertha可以帮助用户使用AI创建高质量的营销文案和图片,同时,帮助客户优化业务流程,提高效率。 3.cr…

UDP端口转发

sokit是一个开源项目,是一个TCP / UDP 测试工具,用来接收,发送,转发TCP或UDP数据包。 项目地址: http://code.google.com/p/sokit/、https://github.com/sinpolib/sokit。 中文版下载地址:https://download.csdn.net/download/android_cai_niao/874728…

LeetCode_动态规划_困难_1326.灌溉花园的最少水龙头数目

目录1.题目2.思路3.代码实现(Java)1.题目 在 x 轴上有一个一维的花园。花园长度为 n,从点 0 开始,到点 n 结束。 花园里总共有 n 1 个水龙头,分别位于 [0, 1, …, n] 。 给你一个整数 n 和一个长度为 n 1 的整数数…

LC-1326. 灌溉花园的最少水龙头数目(区间合并计算问题 LC-1024、LC-55、LC-45)

区间合并计算问题 文章目录区间合并计算问题[1326. 灌溉花园的最少水龙头数目](https://leetcode.cn/problems/minimum-number-of-taps-to-open-to-water-a-garden/)贪心[1024. 视频拼接](https://leetcode.cn/problems/video-stitching/)[55. 跳跃游戏](https://leetcode.cn/p…

感知数据温度,聚焦海量冷数据存储难题

在信息科技高速发展的背景之下,海量数据已经让拥有者和管理者应接不暇,根据IDC发布的《数据时代2025》预测,全球数据圈(数据圈代表每年被创建、采集或是复制的数据集合)将从2018 年的32ZB增至2025年的175ZB。2018年&am…

【学习记录】IMU内参标定:Allan方差与代码

本文仅用于记录自己学习IMU内参标定过程中的一些总结。 参考 关于IMU参数: 死磕陀螺仪之(一)陀螺仪参数意义以及工程转换 关于Allan方差: 多传感器融合定位理论基础(三):惯性器件误差分析 IMU噪声参数辨识-艾伦方差…

虹科方案|从 uCPE 到成熟的边缘计算平台

基于开放硬件平台,通用客户端设备 (uCPE) 支持快速添加、集成或删除任意数量的集中管理虚拟功能。 为了增加收入并保持竞争优势,托管服务提供商 (MSP) 和企业正在部署 uCPE 以增强业务敏捷性、加速新服务的引入并提高运营效率。最初,uCPE被部…

防护设备检测实验室建设完整方案SICOLAB

防护设备检测实验室建造布局方案SICOLAB一、防护设备检测实验室通常需要划分为几个功能区域,包括:1、样品准备区:用于样品的接收、处理、准备等工作,通常包括样品接收台、洗手池、样品切割机等设备。2、实验操作区:用于…

【Linux】简介以及安装(一)

目录 1. 前言 1.1 什么是Linux 1.2 为什么要学Linux 1.3 学完Linux能干什么 2. Linux简介 2.1 主流操作系统 2.2 Linux发展历史 2.3 Linux系统版本 3. Linux安装 3.1 安装方式介绍 3.2 安装VMware 3.3 安装Linux 3.4 网卡设置 3.5 安装SSH连接工具 3.6 Linux目…

Android RxJava框架源码解析(四)

目录一、观察者Observer创建过程二、被观察者Observable创建过程三、subscribe订阅过程四、map操作符五、线程切换原理简单示例1&#xff1a; private Disposable mDisposable; Observable.create(new ObservableOnSubscribe<String>() {Overridepublic void subscribe(…

堆,堆构建,堆排序,PriorityQueue和TopN问题

零. 前言 堆作为一种重要的数据结构&#xff0c;在面笔试中经常出现&#xff0c;排序问题中&#xff0c;堆排序作为一种重要的排序算法经常被问道&#xff0c;大顶堆小顶堆的应用经常出现&#xff0c;经典的问题TopN问题也是堆的重要应用&#xff0c;因此&#xff0c;了解并掌握…

Kali Linux使用(含VMVare station player安装教程)

VMware Workstation Player下载及安装配置 1.官方下载地址&#xff1a;VMvare Workstation Player 2.安装&#xff1a;基本一路点&#xff0c;需要注意的地方就是后面弄好了要重启一下&#xff0c;记得保存文件 参考&#xff1a;https://www.bilibili.com/read/cv15292839…

Codeql 编译Shiro1.2.4爬坑

0x00 前言 这个Codeql一定要编译才能生成Database&#xff0c;是真的比较恼火&#xff0c;很多项目都不一定可以生成&#xff0c;环境就是一个非常大的坑&#xff0c;为了防止以后&#xff0c;所以将shiro1.2.4编译过程进行记录。 0x01 正文 首先是需要下载到shiro1.2.4的源…

音频(九)——I2S 输出正弦波

I2S 输出正弦波 PC 端&#xff1a;先生成一个正弦波数组MCU 端&#xff1a;将正弦波数组使用 I2S 输出AP 端&#xff1a;接受从 MCU I2S 端口出来的正弦波数据并测量 THDN 等数据 PC 端生成正弦波数组 原理 三角函数的公式 yAsinxy AsinxyAsinx A 表示幅值 代码实现 源…

TCP状态详解

TCP Tcp wrappers : Transmission Control Protocol (TCP) Wrappers 为由 inetd 生成的服务提供了增强的安全性。TCP Wrappers 是一种对使用 /etc/inetd.sec 的替换方法。TCP Wrappers 提供防止主机名和主机地址欺骗的保护。欺骗是一种伪装成有效用户或主机以获得对系统进行未…

线程的基本概念

文章目录基础概念线程与进程什么是进程&#xff1f;什么是线程&#xff1f;进程和线程的区别&#xff1a;多线程什么是多线程&#xff1f;多线程的局限性串行、并行、并发同步异步、阻塞非阻塞线程的创建1、继承Thread类&#xff0c;重写run方法2、实现Runnable接口&#xff0c…

Tomcat的类加载机制

不遵循双亲委托 在JVM中并不是一次性地把所有的文件都加载到&#xff0c;而是按需加载&#xff0c;加载机制采用 双亲委托原则&#xff0c;如下图所示&#xff1a; BootStrapClassLoader 引导类加载器ExtClassLoader 扩展类加载器AppClassLoader 应用类加载器CustomClassLoad…