当前位置: 首页 > news >正文

Spark学习

Spark简介

1.Spark是什么

首先spark是一个计算引擎,而不是存储工具,计算引擎有很多:
第一代:MapReduce廉价机器实现分布式大数据处理
第二代:Tez基于MR优化了DAG,性能比MR快一些
第三代:Spark优先使用内存式计算引擎 ,国内目前主要应用的离线计算引擎
第四代:Flink:实时流式计算引擎 , 国内目前最主流实时计算引擎

spark的诞生原因就是因为MR太慢了,MR是基于磁盘的,而Spark是基于内存的。

2.Spark能做什么

实现离线数据批处理:类似于MapReduce、Pandas,写代码做处理:代码类的离线数据处理 。

实现交互式即时数据查询:类似于Hive、Presto、Impala,使 用SQL做即席查询分析:SQL类的离线数据处理

实现实时数据处理:类似于Storm、Flink实现分布式的实时计算:代码类实时计算或者SQL类的实时计算

实现机器学习的开发:代替传统一些机器学习工具

3.Spark组成部分

Hadoop的组成部分:common、MapReduce、Hdfs、Yarn

Spark Core:Spark最核心的模块,可以基于多种语言实现代码类的离线开发 【类似于MR】

Spark SQL:类似于Hive,基于SQL进行开发,SQL会转换为SparkCore离线程序 【类似Hive】

Spark Streaming:基于SparkCore之上构建了准实时的计算模块 【淘汰了】

Struct Streaming:基于SparkSQL之上构建了结构化实时计算模块 【替代了Spark Streaming】

Spark ML lib:机器学习算法库,提供各种机器学习算法工具,可以基于SparkCore或者SparkSQL实现开发。

 4.各大计算引擎的对比

Impala:集成Hive实现数据分析,优点是性能最好,缺点数据接口比较少,只支持Hive和Hbase数据源 。 是一个基于CDH的一个软件,Impala 能写sql,它写出来的sql,叫 Impala SQL (大部分跟我们普通的sql没啥区别) ,操作hive或者hbase 速度非常快!

Presto:集成Hive实现数据分析,优点性能适中,支持数据源非常广泛,与大数据接口兼容性比较差 。Presto也可以写sql,只是写的sql叫做 Presto SQL (大部分跟我们普通的sql没啥区别) ,特点:可以跨数据源。比如mysql的表可以和oracle中的一个表关联查询。

SparkSQL:集成Hive实现数据分析,优点功能非常全面、开发接口多,学习成本低,缺点实时计算不够完善。实时计算交给了Flink。

5.Spark的应用

spark可以做数仓,数仓中也可以分层。

离线场景:实现离线数据仓库中的数据清洗、数据分析、即席查询等应用

实时场景:实现实时数据流数据处理,相对而言功能和性能不是特别的完善,工作中建议使用Flink替代。

6.spark五种模式

本地模式Local:一般用于做测试,验证代码逻辑,不是分布式运行,只会启动1个进程来运行所有任务。

集群模式Cluster:一般用于生产环境,用于实现PySpark程序的分布式的运行
        Standalone:Spark自带的分布式资源平台,功能类似于YARN
        YARN:Spark on YARN,将Spark程序提交给YARN来运行,工作中主要使用的模式
        Mesos:类似于YARN,国外见得多,国内基本见不到
        K8s:基于分布式容器的资源管理平台,运维层面的工具。

7.Spark为什么比MR快

1、MR不支持DAG【有向无环图】,计算过程是固定,一个MR 只有1个Map和1个Reduce构成。 一个Map和Reduce是一个过程,和另一个Map和Reduce是不一样的。


 

从落地到磁盘的那一刻,上一个过程已经结束了,下一个过程和上一个过程没有关系了。

2、MR是一个基于磁盘的计算框架,读写效率比较低

3、MR的Task计算是进程级别的,每次运行一个Task都需要启动一个进程,然后运行结束还是释放进程,比较慢。【一个进程可以包含多个线程,比如qq是一个进程,发消息,传文件是一个个线程】

MapTask:进程

ReduceTask:进程

进程启动和销毁是比较耗时的

spark为什么那么快?

1、Spark支持DAG,一个Spark程序中的过程是不固定,由代码 所决定。

2、Task任务都是线程级别

3、计算是基于内存的。

MR和Spark区别
区别MapReduceSpark
计算流程结构1个Map+1个Reduce,每步
结果都必须进入磁盘
支持DAG,一个程序中可以有多个Map、Reduce过程,多个Map之间的操作可以
直接在内存中完成
Shuffle过程分区、排序、分组会根据具体的操作来经过不同的过程
Task运行方式进程:
MapTask
ReduceTask
进程之启动一次,所有的Task都以线程方式存在,不需要频繁启动、申请资源

相关文章:

Spark学习

Spark简介 1.Spark是什么 首先spark是一个计算引擎,而不是存储工具,计算引擎有很多: 第一代:MapReduce廉价机器实现分布式大数据处理 第二代:Tez基于MR优化了DAG,性能比MR快一些 第三代:Spark…...

一些小细节代码笔记汇总

Python cv2抓取摄像头图片保存到本地 import cv2 import datetime, ossavePath "E:/Image/"if not os.path.exists(savePath):os.makedirs(savePath)cap cv2.VideoCapture(0) capture Falseif not cap.isOpened():print("无法打开摄像头")exit()while…...

L4.【LeetCode笔记】链表题的VS平台调试代码

不用调用87.【C语言】数据结构之链表的头插和尾插文章提到的头插函数 记下这个模板代码,可用于在Visual Studio上调试出问题的测试用例 如创建链表[1,2,3,4,5] #include <stdilb.h> // Definition for singly-linked list.struct ListNode {int val;struct ListNode *…...

JavaCV 之高斯滤波:图像降噪与细节保留的魔法

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,高并发设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s…...

VsCode显示空格

ctrl shift p选择Preferences: Open User Settings (JSON) 加上"editor.renderWhitespace": "all" {"cmake.configureOnOpen": true,"files.encoding": "gb2312","editor.fontVariations": false,"edito…...

.Net C# 基于EFCore的DBFirst和CodeFirst

DBFirst和CodeFirst 1 概念介绍 1.1 DBFirst&#xff08;数据库优先&#xff09; 含义&#xff1a;这种模式是先创建数据库架构&#xff0c;包括表、视图、存储过程等数据库对象。然后通过实体框架&#xff08;Entity Framework&#xff09;等工具&#xff0c;根据已有的数据…...

w012基于springboot的社区团购系统设计

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…...

笔记本降频超鬼锁屏0.39电脑卡到不行解决办法实操记录

1、最开始没发现cpu问题&#xff0c;我发现我电脑突然异常的卡顿&#xff0c;最开始我怀疑是不是微软win用久了或者自动更新导致的问题&#xff0c;于是自己重装了操作系统 发现问题依然存在 2、我怀疑难道我的 cpu 内存 固态硬盘 其中一个有点问题&#xff1f;心想要是硬盘的…...

优选算法第四讲:前缀和模块

优选算法第四讲&#xff1a;前缀和模块 1.[模板]前缀和2.【模板】二维前缀和3.寻找数组的中心下标4.除自身以外数组的乘积5.和为k的子数组6.和可被k整除的子数组7.连续数组8.矩阵区域和 1.[模板]前缀和 链接: link #include <iostream> #include <vector> using…...

ubuntu20.04 加固方案-设置限制su命令用户组

一、编辑/etc/pam.d/su配置文件 打开终端。 使用文本编辑器&#xff08;如vim&#xff09;编辑/etc/pam.d/su文件。 vim /etc/pam.d/su 二、添加配置参数 在打开的配置文件的中&#xff0c;添加以下参数&#xff1a; auth required pam_wheel.so 创建 wheel 组 并添加用户 …...

TDengine数据备份与恢复

TDengine数据备份与恢复 一、数据备份和恢复介绍二、基于 taosdump 进行数据备份恢复三、基于 taosExplorer 进行数据备份恢复3.1 taosExplorer 的安装与配置3.2 使用taosExplorer 进行数据备份 一、数据备份和恢复介绍 官网地址&#xff1a;TDengine - 数据备份和恢复 为了防止…...

2024最新的开源博客系统:vue3.x+SpringBoot 3.x 前后端分离

本文转载自&#xff1a;https://fangcaicoding.cn/article/54 大家好&#xff01;我是方才&#xff0c;目前是8人后端研发团队的负责人&#xff0c;拥有6年后端经验&3年团队管理经验&#xff0c;截止目前面试过近200位候选人&#xff0c;主导过单表上10亿、累计上100亿数据…...

研究中的“异质性”、“异质性结果”是指?

“异质性”这个词在统计学和研究中指的是数据、现象或群体之间的差异&#xff0c;即不同个体、组别、区域或时间点的表现或特征并不相同。相对的概念是“同质性”&#xff0c;即所有个体或组别在某一方面表现相同或接近。 异质性&#xff08;Heterogeneity&#xff09;的含义 …...

Springboot整合AOP和redis

aop pom.xml <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency> 开启自动代理 注意&#xff1a;在完成了引入AOP依赖包后&#xff0c;一般来说并不需要去做其他…...

freetype学习总结

freetype学习总结 目录 freetype学习总结1. LCD显示字符问题引入2. freetype概念2.1 嵌入式设备使用FreeType的方法步骤2.2 嵌入式设备使用FreeType的注意事项 3. freetype官方C示例3.1 example1.c源码 4. 嵌入式设备上使用FreeType的简单示例4.1 简单示例代码4.2 代码分析 5. …...

上海亚商投顾:沪指缩量调整 华为概念股午后爆发

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 市场全天震荡调整&#xff0c;沪指、深成指午后跌超1%&#xff0c;创业板指一度跌逾2%&#xff0c;尾盘跌幅有…...

操作系统与进程【单身狗定制版】

大家好呀 我是浪前 今天给大家讲解的是操作系统与进程 祝愿所有点赞关注的人&#xff0c;身体健康&#xff0c;一夜暴富&#xff0c;升职加薪迎娶白富美!!! 点我领取迎娶白富美大礼包 前言&#xff1a; 我们今天我们来学习操作系统 当然啦&#xff0c;操作系统是一个很庞大的…...

监听el-table中 自定义封装的某个组件的值发现改变调用函数

监听el-table中 自定义封装的某个组件的值发现改变调用函数 当你在一个 el-table 中使用封装的自定义组件作为单元格内容时&#xff0c;监听这个组件的值变化并调用函数&#xff0c;可以通过以下步骤实现&#xff1a; 创建自定义组件&#xff1a;首先创建一个自定义的 Vue 组…...

frida安装

开始安装 frida https://github.com/frida/frida/releases 下载安装的时候查看自己手机是多少位的 adb shell getprop ro.product.cpu.abi # 按照自己的机型下载进行解压里面有个文件放入到手机中开始进入手机 然后按照下面的图执行命令 其中log 我只是看了下 不需要执行因为刚…...

链表详解(三)

目录 链表功能实现链表的查找SLNode* SLFind(SLNode* phead, SLNDataType x)代码 链表任意位置前插入void SLInsert(SLNode**pphead&#xff0c;SLNode* pos, SLNDataType x)代码 链表任意位置前删除void SLErase(SLNode**pphead&#xff0c;SLNode* pos)代码 链表任意位置后插…...

OpenClaw极简安装:Qwen3.5-9B云端体验与快速验证方案

OpenClaw极简安装&#xff1a;Qwen3.5-9B云端体验与快速验证方案 1. 为什么选择云端体验OpenClaw&#xff1f; 上周我在本地尝试部署OpenClaw时&#xff0c;被各种环境依赖折腾得够呛——Node版本冲突、Python包缺失、端口占用问题接踵而至。正当准备放弃时&#xff0c;偶然发…...

05_Cursor之自定义规则与配置

关键字&#xff1a;.cursorrules, 自定义规则, AI模型配置, 文档集成, 终端集成, Cursor配置 05_Cursor之自定义规则与配置 Cursor知识体系 Cursor知识体系&#xff08;续&#xff09; | -- 配置定制层 | -- .cursorrules规则文件 | | -- 项目编码规范 | | -- 风格指…...

FLUX.1-dev像素模型部署教程:Docker Compose编排前端+后端+模型服务

FLUX.1-dev像素模型部署教程&#xff1a;Docker Compose编排前端后端模型服务 1. 项目概述 像素幻梦(Pixel Dream Workshop)是基于FLUX.1-dev扩散模型构建的像素艺术生成平台&#xff0c;采用16-bit像素风格设计&#xff0c;为创作者提供沉浸式的AI绘图体验。本教程将指导您使…...

OpenClaw自动化周报生成:Qwen2.5-VL-7B图文混合排版实战

OpenClaw自动化周报生成&#xff1a;Qwen2.5-VL-7B图文混合排版实战 1. 为什么需要自动化周报 每周五下午3点&#xff0c;我的日历总会准时弹出"写周报"的提醒。作为一个小团队的Tech Lead&#xff0c;我需要汇总Jira任务进展、Git代码提交、会议纪要等零散信息&am…...

Claude Code 源码研究【第二弹】:智能体框架与大模型相互成就

在上一篇“Claude Code 源码研究&#xff1a;一个 while(true) 循环让大模型自己干活”之后&#xff0c;继续我们的研究——01自然语言引导能保证模型每次都听话吗&#xff1f;Claude Code 不靠 if-else 控制模型选哪个工具&#xff0c;而是靠 40 份精心撰写的"工具说明书…...

【独家首发】CPython内存管理策略白皮书(基于v3.9–v3.13源码比对):37处关键宏定义、12个GC阈值参数、8类对象内存布局差异

第一章&#xff1a;CPython内存管理策略全景概览CPython 作为 Python 官方解释器&#xff0c;其内存管理机制融合了引用计数、循环垃圾回收&#xff08;GC&#xff09;与分代回收策略&#xff0c;形成一套兼顾实时性与鲁棒性的综合体系。理解该机制对诊断内存泄漏、优化对象生命…...

POIKit:地理数据全流程处理的高效解决方案

POIKit&#xff1a;地理数据全流程处理的高效解决方案 【免费下载链接】AMapPoi POI搜索工具、地理编码工具 项目地址: https://gitcode.com/gh_mirrors/am/AMapPoi 价值定位&#xff1a;重新定义地理数据采集效率 行业痛点与技术突破 在地理信息领域&#xff0c;传统…...

电影票销售管理|基于springboot + vue电影票销售管理系统(源码+数据库+文档)

电影票销售管理系统 目录 基于springboot vue电影票销售管理系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于springboot vue电影票销售管理系统 一、前言 博主…...

基于双边相关变换与TDOA技术的Matlab角度估计方法:TCT-DOA的原理与实现

基于Matlab的TCT-DOA角度估计 双边相关变换&#xff08;TCT&#xff09;是一种信号处理技术&#xff0c;用于测量两个信号之间的相似性 它通过计算两个信号在不同时间滞后下的互相关&#xff0c;可以捕捉信号的时变特性 TDOA是通过测量信号在两个或多个接收器上的到达时间差来确…...

【IEEE复现】基于神经网络观测器+自适应滑模的无人船,舰艇,船舶轨迹跟踪研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...