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

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年是鲜花电商赛道的发展爆发期,彼时花加等品牌相继成立,并掀起一波投资热潮,据媒体统计&#xf…...

深入解读redis的zset和跳表【源码分析】

1.基本指令 部分指令&#xff0c;涉及到第4章的api&#xff0c;没有具体看实现&#xff0c;但是逻辑应该差不多。 zadd <key><score1><value1><score2><value2>... 将一个或多个member元素及其score值加入到有序集key当中。根据zslInsert zran…...

elasticsearch内存占用详细分析

内存占用 ES的JVM heap按使用场景分为可GC部分和常驻部分。 可GC部分内存会随着GC操作而被回收&#xff1b; 常驻部分不会被GC&#xff0c;通常使用LRU策略来进行淘汰&#xff1b; 内存占用情况如下图&#xff1a; common space 包括了indexing buffer和其他ES运行需要的clas…...

【研究生学术英语读写教程翻译 中国科学院大学Unit3】

研究生学术英语读写教程翻译 中国科学院大学Unit1-Unit5 Unit3 Theorists,experimentalists and the bias in popular physics理论家,实验家和大众物理学的偏见由于csdn专栏机制修改,请想获取资料的同学移步b站工房,感谢大家支持!研究生学术英语读写教程翻译 中国科学院大学…...

基于虚拟同步发电机控制的双机并联Simulink仿真模型

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

微信小程序开发——自定义堆叠图

先看效果图 点击第一张图片实现折叠&#xff0c;再次点击实现展开 思路 图片容器绑定点击事件获取当前图片索引&#xff0c;触发onTap函数&#xff0c;根据索引判断当前点击的图片是否为第一张&#xff0c;并根据当前的折叠状态来更新每张图片的位置&#xff0c;注意图片向上…...

国庆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 …...

经典算法----迷宫问题(找出所有路径)

目录 前言 问题描述 算法思路 定义方向 回溯算法 代码实现 前言 前面我发布了一篇关于迷宫问题的解决方法&#xff0c;是通过栈的方式来解决这个问题的&#xff08;链接&#xff1a;经典算法-----迷宫问题&#xff08;栈的应用&#xff09;-CSDN博客&#xff09;&#xff…...

macOS下 /etc/hosts 文件权限问题修复方案

文章目录 前言解决方案权限验证 macOS下 etc/hosts 文件权限问题修复 前言 当在 macOS 上使用 vi编辑 /etc/hosts 文件时发现出现 Permission Denied 的提示,就算在前面加上 sudo 也照样出现一样的提示,解决方案如下; 解决方案 可以尝试使用如下命令尝试解除锁定; sudo chf…...

【星海出品】ansible入门(二) playbook

核心是管理配置进行批量节点部署。 执行其中的一些列tasks。 playbook由YAML语言编写。 YAML的格式如下&#xff1a; 文件名应该以 .yml 结尾 1.文件的第一行应该以“—”&#xff08;三个连字符&#xff09;开始&#xff0c;表明YAML文件的开始。 2.在同一行中&#xff0c;#之…...

Spring Boot对账号密码进行加密储存

未来避免明文硬编码&#xff0c;我们需要对密码进行加密保存&#xff0c;例如账号密码 方法 在Spring Boot中&#xff0c;可以使用Jasypt&#xff08;Java Simplified Encryption&#xff09;库来对敏感信息进行加密和解密。Jasypt提供了一种简单的方式来在应用程序中使用加密…...

总结js中常见的层次选择器

js中的层次选择器可以用于选择和操作DOM树中的元素&#xff0c;根据元素的层级关系进行选择。以下是js中常见的层次选择器&#xff1a; 1. getElementById&#xff1a;使用元素的ID属性进行选择。通过给元素设置唯一的ID属性&#xff0c;可以使用getElementById方法选择该元素…...

阿里云ECS服务器上启动的portainer无法访问的问题

如下图&#xff0c;在阿里云ECS服务器上安装并启动了portainer&#xff0c;但是在自己电脑上访问不了远程的portainer。 最后发现是要在网络安全组里开放9000端口号&#xff0c;具体操作如下&#xff1a; 在云服务器管理控制台点击左侧菜单中的网络与安全-安全组&#xff0c;然…...

JavaScript系列从入门到精通系列第十八篇:JavaScript中的函数作用域

文章目录 前言 一&#xff1a;函数作用域 前言 我们刚才提到了&#xff0c;在<Script>标签当中进行定义的变量、对象、函数对象都属于全局作用域&#xff0c;全局作用域在页面打开的时候生效在页面关闭的时候失效。 一&#xff1a;函数作用域 调用函数时创建函数作用域…...

开环模块化多电平换流器仿真(MMC)N=6(Simulink仿真)

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

[C]嵌入式中变量存储方案

#include<stdio.h>#define uint8_t unsigned char #define uint16_t unsigned short #define uint24_t unsigned int #define uint32_t unsigned int #define uint64_t unsigned long long//用户自定义变量名字&#xff0c;用于存储 typedef enum {first_run 0,//…...

热迁移中VirtIO-PCI设备的配置空间处理

文章目录 问题现象定位过程日志分析源端目的端 原理分析基本原理上下文分析复现分析patch分析 总结解决方案 问题现象 集群升级虚拟化组件版本&#xff0c;升级前存量运行并挂载了virtio磁盘的虚拟机集群内热迁移到升级后的节点失败&#xff0c;QEMU报错如下&#xff1a; 202…...

模拟滤波器的基础知识和设计

信号处理工作中滤波器的应用是非常广泛的&#xff0c;可以分成模拟滤波器和数字滤波器两种&#xff0c;数字滤波器主要包括两种&#xff0c;IIR和FIR&#xff0c;这两种滤波器后面统一说&#xff0c;今天先来说一说模拟滤波器&#xff08;主要是我先用Python实现了Matlab书里面…...

机器学习基础-Pandas学习笔记

Pandas Python的数据分析库&#xff0c;与Numpy配合使用&#xff0c;可以从常见的格式如CSV、JSON等中读取数据。可以进行数据清洗、数据加工工作。数据结构Series&#xff0c;Pandas.Series(data,index,dtype,name,copy) data类型是Numpy的ndarray类型&#xff0c;index指定下…...

【GIT版本控制】--协作流程

一、Fork与Pull Request Git协作流程中的关键概念包括Fork和Pull Request&#xff0c;它们允许多人在项目中协作并贡献代码。以下是关于Fork和Pull Request的简要总结&#xff1a; 1. Fork&#xff1a; Fork是指复制一个Git仓库&#xff0c;通常是一个开源项目的仓库&#xf…...

简析Cookie、Session、Token

手打不易&#xff0c;如果转摘&#xff0c;请注明出处&#xff01; 注明原文&#xff1a;https://zhangxiaofan.blog.csdn.net/article/details/133498756 文章目录 简析Cookie、Session、Token什么是 Cookie &#xff1f;什么是 Session &#xff1f;Cookie 和 Session 到底是…...

加速attention计算的工业标准:flash attention 1和2算法的原理及实现

transformers目前大火&#xff0c;但是对于长序列来说&#xff0c;计算很慢&#xff0c;而且很耗费显存。对于transformer中的self attention计算来说&#xff0c;在时间复杂度上&#xff0c;对于每个位置&#xff0c;模型需要计算它与所有其他位置的相关性&#xff0c;这样的计…...

小程序获取用户手机号

在小程序中获取用户手机号需要以下步骤&#xff1a; 首先需要授权用户手机号&#xff0c;即在小程序中调用 wx.login() 方法获取用户的登录凭证&#xff0c;在回调函数中调用 wx.getUserInfo() 方法获取用户的个人信息&#xff0c;并且设置 withCredentials 参数为 true。 在获…...

Zama的fhEVM:基于全同态加密实现的隐私智能合约

1. 引言 Zama的fhEVM定位为&#xff1a; 基于全同态加密实现的隐私智能合约 解决方案 开源代码见&#xff1a; https://github.com/zama-ai/fhevm&#xff08;TypeScript Solidity&#xff09; Zama的fhEVM协议中主要包含&#xff1a; https://github.com/zama-ai/tfhe-…...

美工常用找素材网站/外包网

现有程序已经有退出的窗口的弹出框&#xff0c;是用的layer插件 在点击确定调用window.close 方法时候IE8弹出了警告框。 之后修改了代码&#xff0c;js部分 //点击关闭QuoteDetail.prototype.close function(){layer.confirm("确定要关闭报价详情页面吗&#xff…...

购物网站设计流程图/免费发布推广平台

在进行下列工作之前&#xff0c;希望读者先自行安装好ecliose 第一步 点击eclipse左上角的file -->>New -->>Android Application Project 第二步 在Application Name框中填入你新建的安卓项目名字。 将Minimum Required SDK (最小适用版本) 选择android 4.4 然后…...

网站设计郑州/建站cms

给定一棵二叉树&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 示例: 输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 解释: 1 <--- / \ 2 3 <--- \ \ 5 4 …...

wordpress搬家图片不显示/营销网站优化推广

水仙花数是指一个N位正整数&#xff08;N≥3&#xff09;&#xff0c;它的每个位上的数字的N次幂之和等于它本身。 例如&#xff1a;1531​35​333 ​ 本题要求编写两个函数&#xff0c;一个判断给定整数是否水仙花数&#xff0c;另一个按从小到大的顺序打印出给定区间(m,n)内所…...

福永镇网站建设/百度网站推广价格查询

1 首先说下字符集。gb18030字符集兼容了gbk字符集&#xff0c;以两个字节表示一个文字。windows系统可能使用的就是这两种的一种。unicode字符集以2个或以上的字节表示一个汉字。通用字符集(Universal Character Set, UCS)是由ISO制定的ISO 10646(或称ISO/IEC 10646)标准所定义…...

服务预约网站怎么建设/今天的重要新闻

在存储库和项目之间共享代码对我们产品的成功至关重要。 当您的团队无法共享代码时&#xff0c;您最终会在整个代码库中获得重复的代码-这势必会拖延交付周期并使维护成为一场噩梦&#xff0c;因为每次更改都需要在多个地方进行长时间的重构。 您还浪费了宝贵的时间和精力并重新…...