当前位置:   article > 正文

spark概述以及原理架构_spark 架构

spark 架构

1 介绍

大数据4V 特征

1V 大量化,体现为数据量大
2V 多样化,主要是结构化和非结构化的数据
3V 处理速度快 数据采集和数据处理速度效率快
4V 价值密度低 主要是有效数据和无用数据的占比

大数据技术的两个核心技术

分布式存储 hdfs
分布式计算 spark

Yarn实现了一个集群多个框架

Spark框架

跟hadoop框架对比,hadoop存在两个明显缺点,一个是磁盘IO(磁盘读写)开销大,一个延迟性高

Spark优点(相比较于hadoop):

  • 1 继承了hadoop的大部分优点,解决了mapreduce的常见问题
  • 2 spark提供了内存计算和实时计算,将中间结果保存在内存中,对于迭代运算效率更好
  • 3 spark任务调度执行机制,优于hadoop 中的mapreduce

常见的大数据运算框架中,随着迭代次数增加,效率最高的Flink,其次spark,hadoop(Mapreduce)效率最低。

Hadoop适合离线计算(数据仓库批处理,静态数据处理),比如某个电子商城去年营收情况统计

Spark适合实时计算(内存计算,流计算),微博热搜,某个电子商城今年营收情况。

Flink采用的是一行一行的形式对文件进行读取,支持毫秒级别的运算,对sql的支持范围比spark小。

Spark采用数据分片的方式对文件进行读取,支持秒级别的运算,对sql的支持范围比flink大

2 Spark特点

  • 1 运算速度快。使用DAG执行引擎以支持循环数据流的内存计算
  • 2 易使用性,仅仅可以只使用scale,java,python或者R语言进行编程,就可以通过spark shell进行交互编程
  • 3 通用性高,提供了完整而又强大的技术栈,比如SQL查询,流式计算和机器学习以及图算法组件
  • 4 运行模式多样化 提供了独立的集群模式,可以运行在hadoop中,也可以运行在Amazon EC2等云环境,并且可以访问hdfs,Cassnadra,Hbase,HIve等多种数据源

Spark可以满足以下三种场景的计算:
支持流文件批处理、交互式查询和流数据处理

Spark五个重要的组成
1 Spark Core(主要是RDD编程)
2 Spark SQL
3 Spark Streaming
4 MLLib
5 GraphX
在这里插入图片描述
每个组成对应的具体的处理场景
在这里插入图片描述

3 spark架构

名词解析:
1 RDD:是Resillient Distributed Dataset(弹性分布式数据集)的简称,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型
2 DAG:是Directed Acyclic Graph(有向无环图)的简称,反映RDD之间的依赖关系
3 Executor:是运行在工作节点(WorkerNode)的一个进程,负责运行Task
4 应用(Application):用户编写的Spark应用程序
5 任务( Task ):运行在Executor上的工作单元
6 作业( Job ):一个作业包含多个RDD及作用于相应RDD上的各种操作

7阶段( Stage ):是作业的基本调度单位,一个作业(job)会分为多组任务(task),每组任务被称为阶段,或者也被称为任务集合,代表了一组关联的、相互之间没有Shuffle依赖关系的任务组成的任务集

一个cluster manager(集群资源管理器)----》多个工作节点(worker node)
一个工作节点(worker node)------》一个执行进程(Executor)
一个执行进程(Executor)------>多个task(任务)

sparkContext作用:
1 资源申请,任务分配以及监控
2 根据RDD依赖关系构建DAG,并交给DAGscheduler解析
3 将taskSet提交给底层taskscheduler

4 Spark RDD概念

RDD
一个RDD就是一个弹性分布式对象集合,本质上是一个只读的分区记录集合,每个RDD可分成多个分区,每个分区就是一个数据集片段,并且一个RDD的不同分区可以被保存到集群中不同的节点上,从而可以在集群中的不同节点上进行并行计算

RDD提供了一种高度受限的共享内存模型,即RDD是只读的记录分区的集合,不能直接修改,只能基于稳定的物理存储中的数据集创建RDD,或者通过在其他RDD上执行确定的转换操作(如map、join和group by)而创建得到新的RDD

RDD提供了一组丰富的操作以支持常见的数据运算,分为“动作”(Action)和“转换”(Transformation)两种类型
转换是在内存中进行操作的
动作是最后的一个步骤,将内存中保存的结果写入到磁盘(比如hbase中)
在这里插入图片描述

RDD
优点:惰性调用、管道化、避免同步等待、不需要保存中间结果、每次操作变得简单

Spark采用RDD以后能够实现高效计算的原因主要在于:
(1)高效的容错性
现有容错机制:数据复制或者记录日志
RDD:血缘关系、重新计算丢失分区、无需回滚系统、重算过程在不同节点之间并行、只记录粗粒度的操作
(2)中间结果持久化到内存,数据在内存中的多个RDD操作之间进行传递,避免了不必要的读写磁盘开销
(3)存放的数据可以是面向对象语言中的对象,避免了不必要的对象序列化和反序列化

RDD编程原理

1 宽依赖和窄依赖

宽依赖和窄依赖主要由是否有shuffle决定

宽依赖:一个父RDD对应多个子RDD依赖
窄依赖:一个父RDD对应一个子RDD或者多个父RDD对应一个子RDD的依赖

在这里插入图片描述
窄依赖可以进行优化操作,而宽依赖无法进行优化
将窄依赖尽量划分在同一个Stage中,可以实现流水线计算

2 RDD运行流程

RDD运行流程主要分成三个阶段

  • [A]创建RDD对象

  • [B] SparkContetx对象负责计算RDD之间的依赖关系,构建DAG

  • [C] DAGScheduler负责将DAG图解析成多个阶段(连续的窄依赖会合并成一个阶段),每个阶段包含了多个task任务,每个task任务会被taskScheduler分发给WorkNode的Executor进程去执行。

3 linux中的常用命令

  • 1 访问路径 cd + 相对路径|绝对路径
    绝对路径以 / 开头的路径,指的是从系统根路径开始

在这里插入图片描述
相对路径 以文件夹名字开头,表示相对于当前路径的开始的路径

在这里插入图片描述

路径补全快捷键是tab

查看当前文件夹下的子文件或者子文件夹的命令是ll

  • 2 创建一个文件夹
    mkdir 文件夹名称

  • 3 重命名文件夹或者文件
    mv 文件夹或者文件名字 重命名后的文件夹或者文件名字 (同级情况下是重命名,不同级情况下是移动)
    在这里插入图片描述

  • 4 删除文件
    rm 文件或者文件夹路径 删除对应的文件或者文件夹

  • 5 编辑文件 vi 或者vm 或者 gedit
    gedit 文件路径/文件名称 ------->必须要对应要编辑的文件要有相应的权限

4 hadoop+hbase+spark常用指令

启动hadoop命令
start-all.sh

查看hdfs中的文件或者文件夹
hadoop fs -ls /xxx/xxxZ(对应的路径)

上传文件到hdfs中
hadoop fs -put 要上传的本地文件地址 上传后的路径

在hdfs中创建文件夹
hadoop fs -mkdir 要创建的文件夹

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/772353
推荐阅读
相关标签
  

闽ICP备14008679号