Spark基础
一、spark基础

1、为什么使用Spark
Ⅰ、MapReduce编程模型的局限性
(1) 繁杂
只有Map和Reduce两个操作,复杂的逻辑需要大量的样板代码
(2) 处理效率低
Map中间结果写磁盘,Reduce写HDFS,多个Map通过HDFS交换数据 任务调度与启动开销大
(3) 不适合迭代处理、交互式处理和流式处理
Ⅱ、Spark是类Hadoop MapReduce的通用并行框架
(1) Job中间输出结果可以保存在内存,不再需要读写HDFS
(2) 比MapReduce平均快10倍以上
Ⅲ、Spark VS Hadoop
| Hadoop | Spark | |
| 类型 | 分布式基础平台,包含计算、存储、调度 | 分布式计算工具 |
| 场景 | 大规模数据集上的批处理 | 迭代计算、交互式计算、流计算 |
| 价格 | 对机器要求低,便宜 | 对内存有要求,相对较贵 |
| 编程范式 | Map+Reduce,API较为底层,算法适应性差 | RDD组成DAG有向无环图,API较为顶层,方便使用 |
| 数据存储结构 | MpaReduce中间计算结果存在HDFS磁盘上,延迟大 | RDD中间运算结果存在内存中,延迟小 |
| 运行方式 | Task以进程方式维护,任务启动慢 | Task以线程方式维护,任务启动快 |
2、Spark简介
诞生于加州大学伯克利分校AMP实验室,是一个基于内存的分布式计算框架
发展历程:
2009年诞生于加州大学伯克利分校AMP实验室
2010年正式开源 2013年6月正式成为Apache孵化项目
2014年2月成为Apache顶级项目
2014年5月正式发布Spark 1.0版本
2014年10月Spark打破MapReduce保持的排序记录
2015年发布了1.3、1.4、1.5版本
2016年发布了1.6、2.x版本
......
Hadoop 之父 Doug Cutting 指出:
Use of MapReduce engine for Big Data projects will decline, replaced by Apache Spark
(大数据项目的 MapReduce 引擎的使用将下降,由 Apache Spark 取代)。
3、Spark优势
(1)速度快
基于内存数据处理,比MR快100个数量级以上(逻辑回归算法测试)
基于硬盘数据处理,比MR快10个数量级以上
(2)易用性
支持Java、Scala、Python、R语言 交互式shell方便开发测试
(3)通用性
一栈式解决方案:批处理、交互式查询、实时流处理、图计算及机器学习
(4)多种运行模式
YARN、Mesos、EC2、Kubernetes、Standalone、Local
4、Spark技术栈
(1)Spark Core
核心组件,分布式计算引擎。
实现了 Spark 的基本功能,包含 RDD、任务调度、内存管理、错误恢复、与存储系统交互等模块。
(2)Spark SQL
高性能的基于Hadoop的SQL解决方案。
Spark 用来操作结构化数据的程序包。通过 Spark SQL,我们可以使用 SQL 操作数据。
(3)Spark Streaming
可以实现高吞吐量、具备容错机制的准实时流处理系统。
Spark 提供的对实时数据进行流式计算的组件。提供了用来操作数据流的 API。
(4)Spark GraphX(图计算)
分布式图处理框架。
Spark 中用于图计算的 API,性能良好,拥有丰富的功能和运算符,能在海量数据上自如地运行复杂的图算法。
(5)Spark MLlib
构建在Spark上的分布式机器学习库。
提供常见的机器学习(ML)功能的程序库。包括分类、回归、聚类、协同过滤等,还提供了模型评估、数据导入等额外的支持功能。
(6)其他
集群管理器:Spark 设计为可以高效地在一个计算节点到数千个计算节点之间伸缩计算。
Structured Streaming:处理结构化流,统一了离线和实时的 API。

二、安装spark
spark下载地址https://archive.apache.org/dist/spark/spark-2.2.0/spark-2.2.0-bin-hadoop2.7.tgz
1、通过Xftp上传文件

2、解压文件至指定的安装目录
tar -zxvf /opt/install/scala-2.12.10.tgz -C /opt/soft/
tar -zxvf /opt/install/spark-3.1.2-bin-hadoop3.2.tgz -C /opt/soft/
3、进入安装目录更改名字
mv ./scala-2.12.10.tgz ./scala212
mv ./spark-3.1.2-bin-hadoop3.2.tgz ./spark312
4、配置环境变量
#SCALA
export SCALA_HOME=/opt/soft/scala212
export PATH=$SCALA_HOME/bin:$PATH
#SPARK
export SPARK_HOME=/opt/soft/spark312
export PATH=$SPARK_HOME/bin:$PATH
!!! source /etc/profile
5、启动Scala

6、Spark环境部署
(1)进入/opt/soft/spark312/conf拷贝文件
cp ./workers.template ./workers
cp ./spark-env.sh.template ./spark-env.sh
(2)配置workers
# 编辑文件
vim workers
# 配置文件
localhost

(3)配置spark-env.sh
# 编辑文件
vim ./spark-env.sh
# 配置文件
export SCALA_HOME=/opt/soft/scala212
export JAVA_HOME=/opt/soft/jdk180
export SPARK_HOME=/opt/soft/spark312
export HADOOP_INSTALL=/opt/soft/hadoop313
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_MASTER_IP=192.168.91.11
export SPARK_DRIVER_MEMORY=2G
export SPARK_EXECUTOR_MEMORY=2G
export SPARK_LOCAL_DIRS=/opt/soft/spark312
# 保存退出
:wq
# 刷新
source
7、启动交互式平台
spark-shell
8、Spark运行模式
(1)local 本地模式(单机)
学习测试使用,分为local单线程和local-cluster多线程。
(2)standalone 独立集群模式
学习测试使用,典型的Master/slave。
(3)standalone-HA 高可用模式
生产环境使用,基于standalone模式,使用zk搭建高可用,避免Master是有单点故障的。
(4)on yarn 集群模式
生产环境使用,运行在yarn负责资源管理,Spark负责任务调度和计算。
好处:计算资源按需伸缩,集群利用率高,共享底层存储,避免数据跨集群迁移。
(5)on mesos 集群模式
国内使用较少,运行在mesos资源管理器框架之上,由mesos负责资源管理,Spark负责任务调度和计算。
(6)on cloud 集群模式
中小型公司未来会更多的使用云服务,比如AWS的EC2,使用这个模式能很方便的访问Amazon的S3。
相关文章:
Spark基础
一、spark基础 1、为什么使用Spark Ⅰ、MapReduce编程模型的局限性 (1) 繁杂 只有Map和Reduce两个操作,复杂的逻辑需要大量的样板代码 (2) 处理效率低 Map中间结果写磁盘,Reduce写HDFS,多个Map通过HDFS交换数据 任务调度与启动开销大 (…...
localhost和127.0.0.1都可以访问项目,但是本地的外网IP不能访问
使用localhost和127.0.0.1都可以访问接口,比如: http://localhost:8080/zhgl/login/login-fy-list或者 http://127.0.0.1:8080/zhgl/login/login-fy-list返回json {"_code":10000,"_msg":"Success","_data":…...
快速掌握批量合并视频
在日常的工作和生活中,我们经常需要对视频进行编辑和处理,而合并视频、添加文案和音频是其中常见的操作。如何快速而简便地完成这些任务呢?今天我们介绍一款强大的视频编辑软件——“固乔智剪软件”,它可以帮助我们轻松实现批量合…...
OpenCV利用Camshift实现目标追踪
目录 原理 做法 代码实现 结果展示 原理 做法 代码实现 import numpy as np import cv2 as cv# 读取视频 cap cv.VideoCapture(video.mp4)# 检查视频是否成功打开 if not cap.isOpened():print("Error: Cannot open video file.")exit()# 获取第一帧图像&#x…...
使用pywin32读取doc文档的方法及run输出乱码 \r\x07
想写一个读取doc文档中表格数据,来对文档进行重命名。经查资料,py-docx无法读取doc文档,原因是这种是旧格式。所以,采用pywin32来进行读取。 import win32com.client as win32word win32.gencache.EnsureDispatch(Word.Applicati…...
一天一八股——TCP保活keepalive和HTTP的Keep-Alive
TCP属于传输层,关于TCP的设置在内核态完成 HTTP属于用户层的协议,主要用于web服务器和浏览器之间的 http的Keep-Alive都是为了减少多次建立tcp连接采用的保持长连接的机制,而tcp的keepalive是为了保证已经建立的tcp连接依旧可用(双端依旧可以…...
头部品牌停业整顿,鲜花电商的中场战事迎来拐点?
鲜花电商行业再次迎来标志性事件,曾经4年接连斩获6轮融资的明星品牌花加,正式宣布停业整顿。 梳理来看,2015年是鲜花电商赛道的发展爆发期,彼时花加等品牌相继成立,并掀起一波投资热潮,据媒体统计…...
深入解读redis的zset和跳表【源码分析】
1.基本指令 部分指令,涉及到第4章的api,没有具体看实现,但是逻辑应该差不多。 zadd <key><score1><value1><score2><value2>... 将一个或多个member元素及其score值加入到有序集key当中。根据zslInsert zran…...
elasticsearch内存占用详细分析
内存占用 ES的JVM heap按使用场景分为可GC部分和常驻部分。 可GC部分内存会随着GC操作而被回收; 常驻部分不会被GC,通常使用LRU策略来进行淘汰; 内存占用情况如下图: common space 包括了indexing buffer和其他ES运行需要的clas…...
【研究生学术英语读写教程翻译 中国科学院大学Unit3】
研究生学术英语读写教程翻译 中国科学院大学Unit1-Unit5 Unit3 Theorists,experimentalists and the bias in popular physics理论家,实验家和大众物理学的偏见由于csdn专栏机制修改,请想获取资料的同学移步b站工房,感谢大家支持!研究生学术英语读写教程翻译 中国科学院大学…...
基于虚拟同步发电机控制的双机并联Simulink仿真模型
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
微信小程序开发——自定义堆叠图
先看效果图 点击第一张图片实现折叠,再次点击实现展开 思路 图片容器绑定点击事件获取当前图片索引,触发onTap函数,根据索引判断当前点击的图片是否为第一张,并根据当前的折叠状态来更新每张图片的位置,注意图片向上…...
国庆day5
QT实现TCP服务器客户端搭建的代码 ser.h #ifndef SER_H #define SER_H#include <QWidget> #include<QTcpServer> #include<QTcpSocket> #include<QMessageBox> #include<QList> QT_BEGIN_NAMESPACE namespace Ui { class …...
经典算法----迷宫问题(找出所有路径)
目录 前言 问题描述 算法思路 定义方向 回溯算法 代码实现 前言 前面我发布了一篇关于迷宫问题的解决方法,是通过栈的方式来解决这个问题的(链接:经典算法-----迷宫问题(栈的应用)-CSDN博客)ÿ…...
macOS下 /etc/hosts 文件权限问题修复方案
文章目录 前言解决方案权限验证 macOS下 etc/hosts 文件权限问题修复 前言 当在 macOS 上使用 vi编辑 /etc/hosts 文件时发现出现 Permission Denied 的提示,就算在前面加上 sudo 也照样出现一样的提示,解决方案如下; 解决方案 可以尝试使用如下命令尝试解除锁定; sudo chf…...
【星海出品】ansible入门(二) playbook
核心是管理配置进行批量节点部署。 执行其中的一些列tasks。 playbook由YAML语言编写。 YAML的格式如下: 文件名应该以 .yml 结尾 1.文件的第一行应该以“—”(三个连字符)开始,表明YAML文件的开始。 2.在同一行中,#之…...
Spring Boot对账号密码进行加密储存
未来避免明文硬编码,我们需要对密码进行加密保存,例如账号密码 方法 在Spring Boot中,可以使用Jasypt(Java Simplified Encryption)库来对敏感信息进行加密和解密。Jasypt提供了一种简单的方式来在应用程序中使用加密…...
总结js中常见的层次选择器
js中的层次选择器可以用于选择和操作DOM树中的元素,根据元素的层级关系进行选择。以下是js中常见的层次选择器: 1. getElementById:使用元素的ID属性进行选择。通过给元素设置唯一的ID属性,可以使用getElementById方法选择该元素…...
阿里云ECS服务器上启动的portainer无法访问的问题
如下图,在阿里云ECS服务器上安装并启动了portainer,但是在自己电脑上访问不了远程的portainer。 最后发现是要在网络安全组里开放9000端口号,具体操作如下: 在云服务器管理控制台点击左侧菜单中的网络与安全-安全组,然…...
JavaScript系列从入门到精通系列第十八篇:JavaScript中的函数作用域
文章目录 前言 一:函数作用域 前言 我们刚才提到了,在<Script>标签当中进行定义的变量、对象、函数对象都属于全局作用域,全局作用域在页面打开的时候生效在页面关闭的时候失效。 一:函数作用域 调用函数时创建函数作用域…...
自然界生物群体智能启发的**元启发式优化算法**,广泛应用于组合优化、函数优化、路径规划、调度问题等领域
蚁群算法(Ant Colony Optimization, ACO)、粒子群算法(Particle Swarm Optimization, PSO)和鱼群算法(Artificial Fish Swarm Algorithm, AFSA)均属于受自然界生物群体智能启发的元启发式优化算法ÿ…...
LFM2.5-1.2B-Thinking-GGUF开源可部署:自主可控轻量模型替代方案深度评测
LFM2.5-1.2B-Thinking-GGUF开源可部署:自主可控轻量模型替代方案深度评测 1. 模型概述 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的轻量级文本生成模型,专为低资源环境优化设计。该模型采用GGUF格式存储,配合llama.cpp运行时,能…...
游戏界面开发与UI框架:零基础上手卡牌游戏界面开发与性能调优
游戏界面开发与UI框架:零基础上手卡牌游戏界面开发与性能调优 【免费下载链接】UiCard Generic UI for card games like Hearthstone, Magic Arena and Slay the Spire... 项目地址: https://gitcode.com/gh_mirrors/ui/UiCard 问题诊断:卡牌UI开…...
5个技巧让Markdown Viewer成为你的浏览器文档中心
5个技巧让Markdown Viewer成为你的浏览器文档中心 【免费下载链接】markdown-viewer Markdown Viewer / Browser Extension 项目地址: https://gitcode.com/gh_mirrors/ma/markdown-viewer 还在为浏览器无法直接预览Markdown文档而烦恼吗?Markdown Viewer浏览…...
深入浅出:图解程序控制、中断和DMA的工作原理与性能差异
深入浅出:图解程序控制、中断和DMA的工作原理与性能差异 想象你在一家餐厅点餐:第一种方式是服务员每隔30秒就来问你"好了吗";第二种是你按服务铃,服务员立刻过来;第三种是厨房直接把菜送到你桌上——这正是…...
5步快速解锁付费内容:bypass-paywalls-chrome-clean终极指南 [特殊字符]
5步快速解锁付费内容:bypass-paywalls-chrome-clean终极指南 🚀 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在信息爆炸的时代,你是否经常遇到优…...
Skill、SubAgent、Memery
目录 一、Skill 0、创建一个Skill Step 1. 基准测试:裸机状态下的无助 Step 2. 核心操作:物理装载 Skill Step 3. 验证测试:技能觉醒 技术总结:为什么 Agent Skills 能引爆开发者生态? 1、完整的Agent Skills底…...
【Linux信号】Linux进程信号(上):信号产生方式和闹钟
🎬 个人主页:艾莉丝努力练剑❄专栏传送门:《C语言》《数据结构与算法》《C/C干货分享&学习过程记录》 《Linux操作系统编程详解》《笔试/面试常见算法:从基础到进阶》《Python干货分享》⭐️为天地立心,为生民立命…...
上周刚把三菱PLC+MCGS的电机测速课设收尾,趁着热乎劲把细节唠唠,顺便把踩过的坑也记一下,省得下次忘光
No.1235 基于三菱 PLC和MCGS组态电机测速系统控制设计这个项目说白了就是用三菱PLC算电机的转速,再用MCGS组态屏把转速实时显示出来,用到的东西挺基础:FX3U PLC、1000线增量式编码器、直流减速电机、MCGS组态屏,再加一根USB转RS48…...
OpenClaw日志分析:QwQ-32B任务执行效率监控
OpenClaw日志分析:QwQ-32B任务执行效率监控 1. 为什么需要监控OpenClaw任务执行效率 去年冬天,我部署了一个自动整理会议纪要的OpenClaw工作流。起初运行得很顺利,直到某天早上发现它漏掉了三场重要会议的记录。检查日志才发现,…...
