Spark的基础

2023-09-18 13:01:48

Spark的基础

一、Spark的诞生背景

Spark 2009年诞生的一个技术,诞生的主要原因是因为Hadoop大数据解决方案存在一些弊端

  1. MR程序是基于磁盘进行运算,因此导致MR程序计算效率底下
  2. MR程序无法计算复杂的任务,如果想要实现复杂的计算逻辑,可能编写多个MR Job,其中后续的Job依赖于前一个Job的输出,但是多个Job无法知道前一个job,需要通过任务调度框架自己指定多job的依赖关系

二、Spark概念

Spark相当于是Hadoop的升级版本的解决方案,基于内存进行运算,并且Spark内部实现迭代式计算思想,可以在一个应用程序编写复杂的计算逻辑

Spark有一个思想(one stack to rule them all)-一栈式解决方案,一个技术实现大数据中各种计算场景的应用问题。Spark中包含很多的计算子组件

2.1 Spark Core

Spark的核心基础,Spark的任务调度规则,Spark的基础语法,数据抽象RDD。。。

2.2. Spark SQL

借助SQL或者Hive版本的HQL进行结构化数据的处理

2.3 Spark Streaming

内部采用了微批次处理思想,实现数据的实时计算

2.1~2.2:数据处理和开发的

2.4 Spark MLlib

2.5 Spark GraphX

2.6 Spark R

2.4~2.6:数据科学或者算法计算

三、Spark的特点

3.1 计算快速

Spark相当于Hadoop的升级版的大数据计算解决方案

3.2 易用性

Spark提供了多种语法的编程风格

3.3 兼容性

Spark计算框架和大数据中很多技术无缝衔接,比如Spark支持直接从HDFS、Kafka、HBase、Hive、MySQL…等等地方直接读取数据处理

3.4 通用性

Spark一个技术栈可以解决大数据中遇到的大部分计算场景问题,而且Spark各个子组件都是基于Spark Core的,因此Spark的各个子组件可以无缝的衔接转换

四、Spark的安装部署

【注意】Spark的安装部署,Spark本身就是一个分布式计算框架,如果使用Spark,我们需要使用对应的编程语言编写Spark代码,编写Spark程序不需要部署Spark程序,因此Spark的安装部署主要指的是编写好的Spark程序在什么环境下运行(编写好的Spark程序使用哪种资源调度器进行资源的申请和调度)。 Spark的安装部署就是安装部署Spark运行的资源调度器的。

Spark的资源调度器常用的有三个:Spark自带的standalone独立调度器、Hadoop的YARN、Apache的Mesos

4.1 Spark的安装部署就是安装Spark的不同的资源调度器

4.1.1 本地模式

(不使用任何的资源调度器,只在本地运行Spark程序):这种部署模式只能做测试学习使用

4.1.2 Standalone独立调度器部署模式

部署Master和Worker节点(主从架构):这种部署模式既可以测试学习、也可以做项目开发部署

4.1.3 Hadoop的YARN部署模式

部署Spark程序在YARN上运行,这种模式一般项目生产环境用的比较多

4.1.4 Apache的Mesos部署模式

部署Spark程序在Mesos上运行,这种模式一般项目生产环境用的比较多

4.2 Spark的历史日志服务器

汇聚Spark的应用程序的计算日志,借助于HDFS完操作

【注意】Spark安装部署涉及到很多端口:

  1. 7077 Spark的standalone模式下的master节点的通信端口
  2. 4000 Spark的历史日志服务器的默认端口
  3. 8080/自定义端口 Spark的standalone模式下Master节点的webui端口
  4. 8088 YARN的web访问端口

五、Spark程序的部署运行的方式

spark-submit [options] <app jar | python file | R file> [app arguments]

5.1 options的常用选型以及含义

参数说明
--master masterurl将Spark程序部署到哪个资源管理器运行
spark://host:port, mesos://host:port, yarn,k8s://https://host:port, or local (Default: local[*]).
--deploy-mode modeSpark应用程序的部署模式(YARN场景下) 取值 client cluster
--class class_namejar包中Driver驱动程序的全限定类名
--name namespark应用程序的别名
--driver-memory 1024Mdriver驱动程序
--executor-memory 1G等同于YARN中容器,一个容器有多少内存
--executor-cores num每一个executor中有多少个内核

六、Spark的编程方式

6.1 REPL交互式命令行窗口代码编程

Spark提供了一个REPL工具:spark-shell spark-shell --master local[*]

6.2 Java/Scala/Python等等代码进行编程

更多推荐

【JVM】Java类的加载机制!

一、类的生命周期类加载过程包含:加载、验证、准备、解析和初始化,一共包括5个阶段。(1)加载:简单来说就是将java类的字节码文件加载到机器内存中。在加载类时,Java虚拟机必须完成以下3件事情:通过类的完全限定名称获取定义该类的二进制字节流。将该字节流表示的静态存储结构转换为Metaspace元空间区的运行时存储结构

科锐逆向第二阶段(一)SDK

基本概念什么是SDKSDK是软件开发工具包(SoftwareDevelopmentKit)的缩写。它是一个集成了软件开发所需工具、库文件、示例代码和文档等资源的软件包。SDK通常由软件开发公司或平台提供,旨在帮助开发人员构建、测试和部署特定类型的应用程序、库或服务。它提供了一套开发工具,使开发人员能够利用平台或框架的功

idea把项目打成jar包步骤详解

最近产品需要预研一个小功能,开始后在本地开发测试好之后,需要打成jar提供出去,今天弄完了,决定把这个步骤记录下来,便于以后轻车熟路。打成jar要有mian方法的入口,所以我们在代码中需要定义一个main方法,然后通过这个main方法调用我们的核心逻辑代码。下面是我的代码示例:publicstaticvoidmain(

基于微信小程序的图书管理系统设计与实现(源码+lw+部署文档+讲解等)

前言💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗👇🏻精彩专栏推荐订阅👇🏻2023-2024年最值得选的微信小程序毕业设计选题大全:100个热门选

使用 OpenWRT 设置 Banana Pi BPI-R3开源硬件路由器

这里介绍如何使用pfSense将ZimaBoard216设置为防火墙的链接。我们正在为小型板计算机建立一个专用网络,这样当我开始教授Linux时,我就可以显示和共享它的IP。现在为我的网络设置一条到pfSense后面的路由。这是为了提供另一个级别的安全性。我有两台Banana-Pi路由器1)Banana-PiR2Pro

【案例教学】华为云API图引擎服务 GES的便捷性—AI帮助快速处理图片小助手

云服务、API、SDK,调试,查看,我都行阅读短文您可以学习到:人工智能AI快速处理图片1IntelliJIDEA之API插件介绍API插件支持VSCodeIDE、IntelliJIDEA等平台、以及华为云自研CodeArtsIDE,基于华为云服务提供的能力,帮助开发者更高效、便捷的搭建应用。API插件关联华为云服务下

虹科教您 | 可实现带宽计量和延迟计算的时间敏感网络测试工具RELY-TSN-LAB操作指南与基本功能测试

1.RELY-TSN-LAB产品概述时间敏感网络(TSN)能够合并OT和IT世界,这将是真正确保互操作性和标准化的创新性技术。这项技术的有效开发将显著降低设备成本、维护、先进分析服务的无缝集成以及减少对单个供应商的依赖。为了在这些网络中实现确定性,需要控制连接到网络的设备的延迟和带宽,并预测其在拥堵和错误情况下的行为。

利用Windows搭建Emby媒体库服务器,轻松实现无公网IP的远程访问

文章目录1.前言2.Emby网站搭建2.1.Emby下载和安装2.2Emby网页测试3.本地网页发布3.1注册并安装cpolar内网穿透3.2Cpolar云端设置3.3Cpolar内网穿透本地设置4.公网访问测试5.结语1.前言在现代五花八门的网络应用场景中,观看视频绝对是主力应用场景之一,加上移动网络技术的发展,随时

【RNN从入门到实战】GRU入门到实战——使用GRU预测股票。

摘要GRU是LSTM网络的一种效果很好的变体,它较LSTM网络的结构更加简单,而且效果也很好,因此也是当前非常流形的一种网络。GRU既然是LSTM的变体,因此也是可以解决RNN网络中的长依赖问题。在LSTM中引入了三个门函数:输入门、遗忘门和输出门来控制输入值、记忆值和输出值。而在GRU模型中只有两个门:分别是更新门和

跳槽面试:如何转换工作场所而不失去优势

🌷🍁博主猫头虎带您GotoNewWorld.✨🍁🦄博客首页——猫头虎的博客🎐🐳《面试题大全专栏》文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺🌊《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐🌊《100天精通Golang(基础入门篇)》学会Golang语言,畅玩云原生,走遍大

低代码系统哪里好

低代码作为近些年来被热议的话题,一直备受争议。低代码的出现更多的是用来辅助那些没有太多技能的人士而使用,在某些方面依然需要强大的代码来解决生产革新。所以低代码也不是浑水猛兽,也需要根据实际情况加以利用。那么为什么低代码会收到如此的争议呢?数聚将从多个角度来为企业主做揭秘。首先,什么是低代码系统呢?低代码系统是一种通过封

热文推荐