大数据技术---Spark
一、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相关推荐
- 尚硅谷大数据技术Spark教程-笔记02【SparkCore(核心编程,map、mapPartitions、mapPartitionsWithIndex、flatMap、glom、groupBy)】
视频地址:尚硅谷大数据Spark教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据技术Spark教程-笔记01[Spark(概述.快速上手.运行环境.运行架构)] 尚硅谷大数据技术Spark教 ...
- 尚硅谷大数据技术Spark教程-笔记01【Spark(概述、快速上手、运行环境、运行架构)】
视频地址:尚硅谷大数据Spark教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据技术Spark教程-笔记01[Spark(概述.快速上手.运行环境.运行架构)] 尚硅谷大数据技术Spark教 ...
- 尚硅谷大数据技术Spark教程-笔记09【SparkStreaming(概念、入门、DStream入门、案例实操、总结)】
尚硅谷大数据技术-教程-学习路线-笔记汇总表[课程资料下载] 视频地址:尚硅谷大数据Spark教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据技术Spark教程-笔记01[SparkCore ...
- 《Spark大数据分析:核心概念、技术及实践》大数据技术一览
本节书摘来自华章出版社<Spark大数据分析:核心概念.技术及实践>一书中的第1章,第1节,作者穆罕默德·古勒(Mohammed Guller)更多章节内容可以访问云栖社区"华章 ...
- 大表与大表join数据倾斜_技术分享|大数据技术初探之Spark数据倾斜调优
侯亚南 数据技术处 支宸啸 数据技术处 在大数据计算中,我们可能会遇到一个很棘手的问题--数据倾斜,此时spark任务的性能会比预期要差很多:绝大多数task都很快执行完成,但个别task执行极慢或者 ...
- 基于大数据技术之电视收视率企业项目实战(hadoop+Spark)
基于大数据技术之电视收视率企业项目实战(hadoop+Spark) 网盘地址:https://pan.baidu.com/s/1bEeSB1Y9nmjzctnbJMcBkg 密码:dohg 备用地址( ...
- 大数据技术之Spark(一)——Spark概述
大数据技术之Spark(一)--Spark概述 文章目录 前言 一.Spark基础 1.1 Spark是什么 1.2 Spark VS Hadoop 1.3 Spark优势及特点 1.3.1 优秀的数 ...
- 大数据技术之_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. ...
- Spark大数据技术与应用 第一章Spark简介与运行原理
Spark大数据技术与应用 第一章Spark简介与运行原理 1.Spark是2009年由马泰·扎哈里亚在美国加州大学伯克利分校的AMPLab实验室开发的子项目,经过开源后捐赠给Aspache软件基金会 ...
最新文章
- 20151020sql2
- 怎么将jenkins打包后的war自动部署到jetty上? 1
- 斯坦福大学机器学习第六课“逻辑回归(Logistic Regression)”
- python 判断线程状态_Python线程指南
- Windows10选择文件打开方式没有始终允许的解决方案
- DotnetSpider (二) Downloader的设置 Request自定义数据字典
- 单臂路由配置命令_如何通过单臂路由实现VLAN间通信?(配置篇)
- 网络虚拟化技术(一): linux网络虚拟化,网络虚拟化技术(一): Linux网络虚拟化...
- Qt读取TXT文件时,GBK与UTF-8编码判断
- java 保存文件在服务器_java文件保存至服务器
- java线程 stop()_java 多线程5: java 终止线程及中断机制 (stop()、interrupt() 、interrupted()、isInterrupted())...
- fstream与 C 风格(例如fread 和 fwrite )两种读写文件方法的效率比较
- CCF NOI1006 捡石头
- 利用泛型与反射更新实体(ADO.NET Entity Framework)
- Intellij IDEA 看源码必备的技能!
- NumPy中文文档搬砖学习笔记(1)
- conda 安装完了之后安装torch总是失败
- 三本郑大计算机考研,三本跨专业考研985,初试排名第一,结果竟被导师拒绝!寒心呀!...
- Unsupported class file major version 55
- ListView 上下移动行
热门文章
- 高校教师称大学生宿舍关系整体更趋冷漠
- NVIDIA 显卡温度提示过高,显卡温度高99度怎么办?
- python gui Gooey 报错 error: argument command: invalid choice:
- Intellij IDEA设置中文界面(汉化)
- 能影响未来十年的十项新技术
- itk中itkSetMacro/itkGetMacro中含义
- 抢鲜看“嫦娥一号”探月卫星成功发射全过程!!!!!!!
- jQuery SuperSlide插件制作72个种常用的网页特效
- 基础数论(3)同余、逆元
- 【转载】Concent-Type大全