一、Spark简介

1、Spark概述
Spark:由美国加州伯克利大学的AMP实验室于2009年开发,基于内存计算的大数据并行计算框架,可用于构建大型的、低延迟的数据分析应用程序。
三大分布式计算系统开源项目:Hadoop、Spark、Storm。
Spark的特点:
(1)运行速度块:使用DAG执行引擎以支持循环数据流与内存计算。
(2)容易使用:支持使用scala、Java、python和R语言进行编程,可以通过spark shell进行交互式编程。
(3)通用性:Spark提供了完整强大的技术栈,包括SQL查询、流式计算、机器学习和图算法等。
(4)运行模式多样:可运行于独立的集群模式中,可运行于Hadoop中,也可运行于Amazon EC2等云环境中,并且可以访问hdfs,hbase,hive等多种数据源。

2、Scala概述
Scala:现代的多范式编程语言,运行于Java平台,并兼容现有的Java程序。
Scala特性:
(1)具备强大的并发性,支持函数式编程,可以更好的支持分布式系统;
(2)兼容Java,运行速度快;
(3)语法简洁,能提供优雅的api。
Scala是spark的主要编程语言,优势是提供了REPL(交互式解释器),提高程序开发效率。

3、Spark与Hadoop对比?
Hadoop缺点:表达能力有限、磁盘IO开销大、延迟高、任务之间的衔接涉及IO开销、在前一个任务执行完成之前,其他任务就无法开始,难以胜任复杂,多阶段的计算任务。
Spark的优点:
(1)Spark计算模式也属于Map Reduce,但不局限于map和reduce操作,还提供了多种数据集操作类型,编程模型比Hadoop mapreduce更灵活。
(2)Spark还提供了内存计算,可将中间结果放到内存中,对于迭代运算效率更高。
(3)Spark基于DAG的任务调度执行机制,要由于Hadoop的迭代执行机制。

二、Spark生态系统

在实际应用中,大数据处理主要包括以下三个类型:
1、复杂的批量数据处理:通常时间跨度在数十分钟到数小时之间。比如Hadoop MapReduce。
2、基于历史数据的交互式查询:通常时间跨度在数十秒到数分钟之间。比如Cloudera Impala。
3、基于实时数据流的数据处理:通常时间跨度在数百毫秒到数秒之间。比如Storm。
可能存在的问题:
1、不同场景之间输入输出数据无法做到无缝共享,通常需要进行数据格式的转换。
2、不同的软件需要不同的开发和维护团队,带来了较高的使用成本。
3、比较难以对同一个集群中的各个系统进行统一的资源协调和分配。
Spark可以部署在资源管理器YARN之上,提高一站式的大数据解决方案。

三、Spark运行架构

1、基本概念

2、运行架构

架构设计的优点:
(1)利用多线程来执行具体的任务,减少任务的启动开销。
(2)Executor中有一个BlockManager存储模块,会将内存和磁盘共同作为存储设备,有效减少IO 开销。
相互关系:


3、Spark运行的基本流程

(1)为应用程序构建基本的运行环境,由driver创建一个sparkcontext进程资源的申请、任务的分配和监控;
(2)资源管理器会为executor分配资源,并启动executor;
(3)sparkcontext根据RDD的依赖关系构建DAG图,DAG图提交给DAGSchedule解析成stage,然后把一个个taskset提交给底层调度器taskschedule处理。executor向sparkcontext申请task,taskschedule将task发放给executor运行;
(4)task在executor上运行把执行结果反馈给taskschedule,然后反馈给DAGSchedule,运行完毕后写入数据并释放所有资源。

4、Spark运行架构的特点
(1)每个application都有自己专属的executor进程,并且该进程在application运行期间 一直驻留。executor进程以多线程的方式运行task。
(2)spark运行过程与资源管理器无关,只要能够获取executor进程并保持通信即可。
(3)task采用了数据本地性(计算向数据靠拢)和推测执行(任务执行推测)等优化机制。

5、RDD
设计背景:许多迭代式算法和交互式数据挖掘工具,共同的是不同计算阶段之间会重用中间结果。目前的mapreduce是将中间的计算结果保存在磁盘中,带来大量的数据复制、磁盘IO和序列化开销。
RDD:一个RDD就是一个分布式对象集合,本质上是一个只读的分区记录集合,每个RDD可分为多个分区,每个分区就是一个数据集片段,并且一个RDD的不同分区可以被保存到集群中不同的节点上,从而可以在集群中的不同节点上进行并行计算。RDD提供了一种高度受限的共享内存模型,即RDD是只读的记录分区的集合,不能直接修改,只能基于稳定的物理存储中的数据集创建RDD,或者通过在其他RDD上执行确定的转换操作而创建得到新的RDD。

RDD执行过程:
(1)RDD读入外部数据据源进行创建;
(2)RDD经过一系列的转换操作,每一次都会产生不同的RDD供给下一个转换操作使用;
(3)最后一个RDD经过动作操作进行计算并输出到外部数据源。

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

RDD特性:
(1)高效的容错性
传统容错方式:数据复制或记录日志。
RDD具有天生的容错性:血缘关系、重新计算分区、无需回滚系统、重算过程在不同节点之间并行、只记录粗粒度的操作。
(2)中间结果持久化到内存,数据在内存中的多个RDD操作之间进行传递,避免了不必要的读写磁盘开销。
(3)存放的数据可以是Java对象,避免了不必要的对象序列化和反序列化。

RDD的依赖关系:
窄依赖:表现为一个父RDD的分区对应于一个子RDD的分区或者多个父RDD的分区对于于一个子RDD。如图所示:RDD1、RDD6为父分区,RDD2,RDD8为子分区(一对一,多对一)。
宽依赖:表现为存在一个父RDD的一个分区对应一个子RDD的多个分区(多对多)。

Stage的划分:
在DAG中进行反向解析,遇到宽依赖就断开,遇到窄依赖就把它当前的RDD加入到stage中,将窄依赖尽量划分在同一个stage中,可以实现流水线计算,从而使得数据可以直接在内存中进行交换,避免了磁盘IO开销。

Stage类型:
(1)ShuffleMapStage:不是最终的stage,在它之后还有其他的stage,它的输出一定需要经过shuffle过程,并作为后续stage的输入。
(2)ResultStage:最终的stage,没有输出,而是直接产生结果或存储。在一个job中有多个stage,至少包含一个ResultStage。

RDD运行过程:

6、Spark SQL
Shark:即hive on spark ,为了实现于hive兼容,shark在hiveQL方面重用了hive中hiveQL的解析、逻辑执行计划翻译、执行计划优化等逻辑,可以近似任务仅将物理执行计划从MapReduce作业替换成了spark作业,通过hive的hiveQL解析,把hiveQL翻译成spark上的RDD操作。

Spark SQL:Spark SQL在hive兼容层面仅依赖hiveQL解析、hive元数据。从HQL被解析成抽象语法树起,就全部由Spark SQL接管了。Spark SQL执行计划生成和优化都由Catalyst(函数式关系查询优化框架)负责。

大数据技术---Spark相关推荐

  1. 尚硅谷大数据技术Spark教程-笔记02【SparkCore(核心编程,map、mapPartitions、mapPartitionsWithIndex、flatMap、glom、groupBy)】

    视频地址:尚硅谷大数据Spark教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据技术Spark教程-笔记01[Spark(概述.快速上手.运行环境.运行架构)] 尚硅谷大数据技术Spark教 ...

  2. 尚硅谷大数据技术Spark教程-笔记01【Spark(概述、快速上手、运行环境、运行架构)】

    视频地址:尚硅谷大数据Spark教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据技术Spark教程-笔记01[Spark(概述.快速上手.运行环境.运行架构)] 尚硅谷大数据技术Spark教 ...

  3. 尚硅谷大数据技术Spark教程-笔记09【SparkStreaming(概念、入门、DStream入门、案例实操、总结)】

    尚硅谷大数据技术-教程-学习路线-笔记汇总表[课程资料下载] 视频地址:尚硅谷大数据Spark教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据技术Spark教程-笔记01[SparkCore ...

  4. 《Spark大数据分析:核心概念、技术及实践》大数据技术一览

    本节书摘来自华章出版社<Spark大数据分析:核心概念.技术及实践>一书中的第1章,第1节,作者穆罕默德·古勒(Mohammed Guller)更多章节内容可以访问云栖社区"华章 ...

  5. 大表与大表join数据倾斜_技术分享|大数据技术初探之Spark数据倾斜调优

    侯亚南 数据技术处 支宸啸 数据技术处 在大数据计算中,我们可能会遇到一个很棘手的问题--数据倾斜,此时spark任务的性能会比预期要差很多:绝大多数task都很快执行完成,但个别task执行极慢或者 ...

  6. 基于大数据技术之电视收视率企业项目实战(hadoop+Spark)

    基于大数据技术之电视收视率企业项目实战(hadoop+Spark) 网盘地址:https://pan.baidu.com/s/1bEeSB1Y9nmjzctnbJMcBkg 密码:dohg 备用地址( ...

  7. 大数据技术之Spark(一)——Spark概述

    大数据技术之Spark(一)--Spark概述 文章目录 前言 一.Spark基础 1.1 Spark是什么 1.2 Spark VS Hadoop 1.3 Spark优势及特点 1.3.1 优秀的数 ...

  8. 大数据技术之_19_Spark学习_07_Spark 性能调优 + 数据倾斜调优 + 运行资源调优 + 程序开发调优 + Shuffle 调优 + GC 调优 + Spark 企业应用案例

    大数据技术之_19_Spark学习_07 第1章 Spark 性能优化 1.1 调优基本原则 1.1.1 基本概念和原则 1.1.2 性能监控方式 1.1.3 调优要点 1.2 数据倾斜优化 1.2. ...

  9. Spark大数据技术与应用 第一章Spark简介与运行原理

    Spark大数据技术与应用 第一章Spark简介与运行原理 1.Spark是2009年由马泰·扎哈里亚在美国加州大学伯克利分校的AMPLab实验室开发的子项目,经过开源后捐赠给Aspache软件基金会 ...

最新文章

  1. 20151020sql2
  2. 怎么将jenkins打包后的war自动部署到jetty上? 1
  3. 斯坦福大学机器学习第六课“逻辑回归(Logistic Regression)”
  4. python 判断线程状态_Python线程指南
  5. Windows10选择文件打开方式没有始终允许的解决方案
  6. DotnetSpider (二) Downloader的设置 Request自定义数据字典
  7. 单臂路由配置命令_如何通过单臂路由实现VLAN间通信?(配置篇)
  8. 网络虚拟化技术(一): linux网络虚拟化,网络虚拟化技术(一): Linux网络虚拟化...
  9. Qt读取TXT文件时,GBK与UTF-8编码判断
  10. java 保存文件在服务器_java文件保存至服务器
  11. java线程 stop()_java 多线程5: java 终止线程及中断机制 (stop()、interrupt() 、interrupted()、isInterrupted())...
  12. fstream与 C 风格(例如fread 和 fwrite )两种读写文件方法的效率比较
  13. CCF NOI1006 捡石头
  14. 利用泛型与反射更新实体(ADO.NET Entity Framework)
  15. Intellij IDEA 看源码必备的技能!
  16. NumPy中文文档搬砖学习笔记(1)
  17. conda 安装完了之后安装torch总是失败
  18. 三本郑大计算机考研,三本跨专业考研985,初试排名第一,结果竟被导师拒绝!寒心呀!...
  19. Unsupported class file major version 55
  20. ListView 上下移动行

热门文章

  1. 高校教师称大学生宿舍关系整体更趋冷漠
  2. NVIDIA 显卡温度提示过高,显卡温度高99度怎么办?
  3. python gui Gooey 报错 error: argument command: invalid choice:
  4. Intellij IDEA设置中文界面(汉化)
  5. 能影响未来十年的十项新技术
  6. itk中itkSetMacro/itkGetMacro中含义
  7. 抢鲜看“嫦娥一号”探月卫星成功发射全过程!!!!!!!
  8. jQuery SuperSlide插件制作72个种常用的网页特效
  9. 基础数论(3)同余、逆元
  10. 【转载】Concent-Type大全