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

Spark 基础 与 安装

Spark 基础

一、MapReduce编程模型的局限性

1、繁杂:只有Map和Reduce两个操作,复杂的逻辑需要大量的样板代码

2、处理效率低:

Map中间结果写磁盘,Reduce写HDFS,多个Map通过HDFS交换数据

任务调度与启动开销大

3、不适合迭代处理、交互式处理和流式处理

二、Spark是类Hadoop MapReduce的通用【并行】框架

1、Job中间输出结果可以保存在内存,不再需要读写HDFS
2、比MapReduce平均快10倍以上

三、版本

2014 1.0
2016 2.x
2020 3.x

 四、优势

1、速度快

  • 基于内存数据处理,比MR快100个数量级以上(逻辑回归算法测试)
  • 基于硬盘数据处理,比MR快10个数量级以上

 2、易用性

  • 支持Java、【Scala】、【Python:pyspark】、R语言
  • 交互式shell方便开发测试

 3、通用性

一栈式解决方案: 批处理、交互式查询、实时流处理(微批处理)、图计算、机器学习

4、多种运行模式

YARN ✔、Mesos、EC2、Kubernetes、Standalone、Local[*]

五、技术栈

1、Spark Core:核心组件,分布式计算引擎 RDD
2、Spark SQL:高性能的基于Hadoop的SQL解决方案
3、Spark Streaming:可以实现高吞吐量、具备容错机制的准实时流处理系统
4、Spark GraphX:分布式图处理框架
5、Spark MLlib:构建在Spark上的分布式机器学习

六、spark-shell

Spark自带的交互式工具

 local:spark-shell --master local[*]
alone:spark-shell --master spark://MASTERHOST:7077
yarn :spark-shell --master yarn

 七、运行架构

Spark服务
Master : Cluster Manager
Worker : Worker Node

 1、在驱动程序中,通过SparkContext主导应用的执行
2、SparkContext可以连接不同类型的 CM(Standalone、YARN),连接后,获得节点上的 Executor
3、一个节点默认一个Executor,可通过 SPARK_WORKER_INSTANCES 调整
4、每个应用获取自己的Executor
5、每个Task处理一个RDD分区

 八、Spark架构核心组件

名称作用
Application建立在Spark上的用户程序,包括Driver代码和运行在集群各节点Executor中的代码
Driver program驱动程序。Application中的main函数并创建SparkContext
Cluster Manager在集群(Standalone、Mesos、YARN)上获取资源的外部服务
Worker Node集群中任何可以运行Application代码的节点
Executor某个Application运行在worker节点上的一个进程
Task被送到某个Executor上的工作单元
Job多个Task组成的并行计算,由Action触发生成,一个Application中含多个Job
Stage每个Job会被拆分成多组Task,作为一个TaskSet,其名称为Stage

 

 

 

  

 

 

Spark 安装 

一、下载

首先检查是否安装了 jdk 并查看版本是否符合要求。这里是JDK8

 1、 linux 安装spark-3.1.2,输入如下命令 (没有wget可自行下载)

tar -xvf spark-3.1.2-bin-hadoop3.2.tgz -C /opt/software

 2、要安装其他版本:Index of /dist/spark (apache.org)

二、解压

安装好后将其解压到自己的目录

wget https://archive.apache.org/dist/spark/spark-3.1.2/spark-3.1.2-bin-hadoop3.2.tgz

 -x 解压,v 显示解压过程,-f 指定解压文件,-C 指定解压路径

三、环境变量

1、在/etc/profile.d目录新建一个myenv.sh文件

vim /etc/profile.d/myenv.sh

 2、写入如下

# spark 
export SPARK_HOME=/opt/software/spark-3.1.2
export PATH=$PATH:$SPARK_HOME/bin

3、激活环境变量 (执行/etc/profile即可)

source /etc/profile

4、注意:spark on yarn 必配,且需保证 HADOOP 环境变量已经正确配置

可在/opt/software/spark-3.1.2/conf/目录下配置

mv spark-env.sh.template spark-env.sh
vim spark-env.sh
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

 四、启动、关闭、检查Spark

 1、启动 Spark Standalone 集群,执行脚本

/opt/software/spark-3.1.2/sbin/start-all.sh

 2、查看 Spark 服务

        1、jps -ml查看到类似如下信息

jps -ml
31987 org.apache.spark.deploy.master.Master --host single01 --port 7077 --webui-port 8080
32089 org.apache.spark.deploy.worker.Worker --webui-port 8081 spark://single01:7077

         2、访问8080 和 8081 (http://single01:8080) 端口,结果如下

          3、启动 Spark Shell 会话

spark-shell --master spark://single01:7077	# 启动 spark-shell 测试 scala 交互式环境
spark-shell --master local[*]
spark-shell --master yarn		# 测试 Spark on YARN 

 --master 用于指定 Spark 应用程序连接的 Spark Master 地址。

Welcome to____              __/ __/__  ___ _____/ /___\ \/ _ \/ _ `/ __/  '_//___/ .__/\_,_/_/ /_/\_\   version 3.1.2/_/Using Scala version 2.12.10 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_171)
Type in expressions to have them evaluated.
Type :help for more information.scala>

 3、关闭 Spark Standalone 集群

/opt/software/spark-3.1.2/sbin/stop-all.sh

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 昇思25天学习打卡营第XX天|RNN实现情感分类
  • Python和java中super的使用用法(有点小语法上的差距,老忘就在这里置顶了)
  • 后端程序员常犯的错误-本地缓存相关bug和技术思考
  • 文心一言 VS 讯飞星火 VS chatgpt (315)-- 算法导论22.3 7题
  • Nginx 高级 扩容与高效
  • 中间件安全:Nginx 解析漏洞测试.
  • CSP 初赛复习 :计算机网络基础
  • java~反射
  • 用Python打造精彩动画与视频,3.2 基本的剪辑和合并操作
  • 【Vulnhub系列】Vulnhub Lampiao-1 靶场渗透(原创)
  • Spring提供的AOP支持是什么
  • VMware虚拟机设置桥接网络固定IP
  • 社区养老服务小程序的设计
  • 规控面试常见问题
  • 【AI-12】浅显易懂地说一下损失函数
  • android 一些 utils
  • Computed property XXX was assigned to but it has no setter
  • CSS 提示工具(Tooltip)
  • Flannel解读
  • mysql常用命令汇总
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • vue数据传递--我有特殊的实现技巧
  • 浮动相关
  • 高程读书笔记 第六章 面向对象程序设计
  • 每天10道Java面试题,跟我走,offer有!
  • 扑朔迷离的属性和特性【彻底弄清】
  • 入门到放弃node系列之Hello Word篇
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 使用Swoole加速Laravel(正式环境中)
  • 数据可视化之 Sankey 桑基图的实现
  • 异常机制详解
  • 用jQuery怎么做到前后端分离
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • # centos7下FFmpeg环境部署记录
  • #laravel 通过手动安装依赖PHPExcel#
  • #进阶:轻量级ORM框架Dapper的使用教程与原理详解
  • #控制台大学课堂点名问题_课堂随机点名
  • (2024最新)CentOS 7上在线安装MySQL 5.7|喂饭级教程
  • (二)fiber的基本认识
  • (二)hibernate配置管理
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (六)Flink 窗口计算
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (十)Flink Table API 和 SQL 基本概念
  • (一)u-boot-nand.bin的下载
  • (转)四层和七层负载均衡的区别
  • (转载)(官方)UE4--图像编程----着色器开发
  • (转载)Linux 多线程条件变量同步
  • ***详解账号泄露:全球约1亿用户已泄露
  • .gitignore不生效的解决方案
  • .mp4格式的视频为何不能通过video标签在chrome浏览器中播放?
  • .Net Core 中间件与过滤器
  • .NET 药厂业务系统 CPU爆高分析