Learning Spark(Ⅰ)

Part 1

spark概述

spark是基于内存的计算框架,可以帮助我们构建大型的,低延迟的数据分析应用程序
spark的几个特点
1.运行速度快。基于内存的计算,经常在内存中读写数据;有向无环图的执行引擎可以进行优化
2.容易使用。可支持多种开发语言,Java,python,scala,R
3.通用性
SQL查询:Spark SQL
流式计算:Spark Streaming
机器学习:Spark MLib
图算法组件:Spark的GraphX
4.运行模式多样

spark操作类型更多,表达能力更强(相较于MR)
spark应用程序能在内存尽量在内存,能不落磁盘尽量不落此案,并不是说spark所有的数据都在内存里运行

spark生态系统

对于企业而言,比较典型的相关应用场景主要有以下几类
Learning Spark(Ⅰ)_第1张图片

用不同的相关的产品来满足不同应用场景的需求,比如以前的批处理,使用Hadoop的MR,基于历史数据的交互式查询,使用到数据仓库的impala技术,对于基于实时数据流的数据处理,使用推特公司的storm。以前使用不同公司的不同技术框架来满足企业不同的应用需求,但如此会带来一些问题。
1.在不同应用场景下,输入输出数据无法做到无缝共享,通常要进行数据格式的转换
2.维护成本较高
3.资源利用不充分,比较难对同一个集群中各个机器进行资源的统一调度和分配
spark是一个软件栈,可以用统一的资源调度框架,可以满足不同应用场景
Learning Spark(Ⅰ)_第2张图片

解读:两个资源调度管理器二选一即可
Tachyon和HDFS都是分布式文件系统,但前者更快(因为基于内存)
满足流计算需求:2.3.0成为正式版本的structured streaming和Spark Streaming
Mlib:实现了很多常用的机器学习算法,我们只需调用接口,传参数,进行训练,输出结果

Learning Spark(Ⅰ)_第3张图片

spark的基本概念和架构设计

解读:RDD是分区的,所谓弹性,其一,数据可多可少,少的时候在一台机器下即可存下,多的时候必须分布式存储在不同的机器的内存上;其二,分区数目可变化,在计算的过程当中动态的变化分区数目。RDD是spark最核心的数据抽象。
RAG,RDD一次又一次地操作会形成一个有向无环图,我们编程时,就是对RDD进行一次又一次地转换操作以及动作类型操作,最终不同操作之间会连接成一张有向无环图
Executor,spark运转起来后,集群中会有一个主节点,还有很多从节点(工作节点,具体负责相关任务),在每个工作节点上会运行一个executor进程,一个executor进程会派生出很多线程,每个线程再去执行具体的相关任务。
Task是运行在executor的进程上的工作单元,运行是以任务的方式去运行
Job,一个应用程序提交以后,就是把它分解成多(一)个作业去完成
Learning Spark(Ⅰ)_第4张图片

如图为spark的运行架构,采用了一主多从架构。在分布式系统中,经常用到两种典型架构,一种是P2P(对等架构),主从架构(eg:Hadoop,spark)
集群资源管理器:负责整个集群cpu,内存等资源的调度和管理,可以使用spark自带的资源管理器(默认),也可以使用YARN,或者Mesos
Learning Spark(Ⅰ)_第5张图片

(各概念之间的关系)
解读:应用是提交给主节点,运行在主节点上

Learning Spark(Ⅰ)_第6张图片
Learning Spark(Ⅰ)_第7张图片
Learning Spark(Ⅰ)_第8张图片

解读:当我们去执行应用时,主节点(driver节点)会向集群资源管理器去申请资源,申请到资源后,启动executor进程,并且向executor进程发送应用程序的代码和文件,然后应用程序会在executor进程上派发出线程去执行任务,并把结果发回给driver节点,提交给用户或者写入HDFS或写入关系型数据库等等

你可能感兴趣的:(大数据)