Spark的基础

实训笔记--Spark的基础

  • Spark的基础
    • 一、Spark的诞生背景
    • 二、Spark概念
      • [2.1 Spark Core](#2.1 Spark Core)
      • [2.2. Spark SQL](#2.2. Spark SQL)
      • [2.3 Spark Streaming](#2.3 Spark Streaming)
      • [2.4 Spark MLlib](#2.4 Spark MLlib)
      • [2.5 Spark GraphX](#2.5 Spark GraphX)
      • [2.6 Spark R](#2.6 Spark R)
    • 三、Spark的特点
      • [3.1 计算快速](#3.1 计算快速)
      • [3.2 易用性](#3.2 易用性)
      • [3.3 兼容性](#3.3 兼容性)
      • [3.4 通用性](#3.4 通用性)
    • 四、Spark的安装部署
      • [4.1 Spark的安装部署就是安装Spark的不同的资源调度器](#4.1 Spark的安装部署就是安装Spark的不同的资源调度器)
        • [4.1.1 本地模式](#4.1.1 本地模式)
        • [4.1.2 Standalone独立调度器部署模式](#4.1.2 Standalone独立调度器部署模式)
        • [4.1.3 Hadoop的YARN部署模式](#4.1.3 Hadoop的YARN部署模式)
        • [4.1.4 Apache的Mesos部署模式](#4.1.4 Apache的Mesos部署模式)
      • [4.2 Spark的历史日志服务器](#4.2 Spark的历史日志服务器)
    • 五、Spark程序的部署运行的方式
      • [5.1 options的常用选型以及含义](#5.1 options的常用选型以及含义)
    • 六、Spark的编程方式
      • [6.1 REPL交互式命令行窗口代码编程](#6.1 REPL交互式命令行窗口代码编程)
      • [6.2 Java/Scala/Python等等代码进行编程](#6.2 Java/Scala/Python等等代码进行编程)

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 mode Spark应用程序的部署模式(YARN场景下) 取值 client cluster
--class class_name jar包中Driver驱动程序的全限定类名
--name name spark应用程序的别名
--driver-memory 1024M driver驱动程序
--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等等代码进行编程

相关推荐
二进制_博客1 小时前
spark on hive 还是 hive on spark?
大数据·hive·spark
智海观潮1 小时前
Spark RDD详解 —— RDD特性、lineage、缓存、checkpoint、依赖关系
大数据·缓存·spark
一个会的不多的人4 小时前
数字化转型:概念性名词浅谈(第七十二讲)
大数据·人工智能·制造·数字化转型
数据智能老司机5 小时前
在 Databricks 上的 Unity Catalog 数据治理——Unity Catalog 的内部机制
大数据·架构
weixin_445476686 小时前
从“用框架”到“控系统”———架构通用能力(模块边界、分层设计、缓存策略、事务一致性、分布式思维)
分布式·缓存·架构
gb42152876 小时前
elasticsearch索引多长时间刷新一次(智能刷新索引根据数据条数去更新)
大数据·elasticsearch·jenkins
Mr.wangh7 小时前
Redis作为分布式锁
数据库·redis·分布式
小马爱打代码7 小时前
分布式锁:Redisson的公平锁
分布式
IT毕设梦工厂7 小时前
大数据毕业设计选题推荐-基于大数据的人体生理指标管理数据可视化分析系统-Hadoop-Spark-数据可视化-BigData
大数据·hadoop·信息可视化·spark·毕业设计·源码·bigdata
数在表哥8 小时前
从数据沼泽到智能决策:数据驱动与AI融合的中台建设方法论与技术实践指南(四)
大数据·人工智能