Spark学习-入门介绍
Spark入门
- 概述
- 特性
- 快速性
- 易用性
- 通用性
- 兼容性
- 集群模式
- 运行流程
- 基本概念
概述
Spark是加州大学伯克利分校AMP实验室使用Scala语言开发的大数据分布式计算引擎,Spark为Java、Python和R编程语言提供了支持。Spark为大数据应用提供了一体化四大组件,包括了Spark SQL、机器学习、图计算、流式处理。
迷思小贴士:
建议尽量使用原生语言Scala来玩Spark,因为使用Java会编写冗长的匿名内部类代码来适应==函数式编程==的风格,在Java8 lamda表达式推出后情况稍有改善,而对于Python和R,始终存在"支持度"一说和性能差距,所以推荐使用Scala。 |
## 大数据生态
Spark作为一个高效、通用的大数据处理引擎,它在大数据生态中具有较为完备的数据计算体系,在一定程度上取代了Hadoop中的MapReduce作业,但并非完全独立于Hadoop之外,而是与Hadoop中的Yarn集群资源调度器和Hdfs分布式文件存储系统进行了有效结合,Spark能够应对绝大部分的数据计算场景,例如大数据下的机器学习任务、小批量数据流式计算以及数据关系图计算等,Spark对大数据生态中的计算整合是其成为主流趋势的重要因素。
特性
快速性
Spark是基于内存的分布式计算引擎,从官网截图中可以看出Spark和Hadoop同时运行逻辑回归算法,存在巨大的时间差异,Spark几乎比Hadoop快100倍左右。Spark性能好的因素主要分为如下几点:
- Spark是基于内存进行数据处理,对比MapReduce基于磁盘进行数据处理性能当然是更为优秀,MapReduce需要将中间结果保存在磁盘上,而Spark将中间结果缓存在内存中,在进行迭代计算时,大量的中间结果导致两者运行时差尤为明显。
- Spark中具有DAG有向无环图计算模型,DAG对shuffle操作的优化,有效减少了中间文件数和落地磁盘的次数。
- Spark消除了冗余的Hdfs读写和MapReduce阶段,并进行了JVM优化,在技术架构上具有一定的性能优势。
易用性
相比编写冗长的MapReduce计算,Spark封装了80多个针对数据处理的抽象算子,开发者们能够方便快捷的运用这些算子来构建应用,Spark还提供了标准化SQL支持以及统一整合的API风格,这些都极大地提高了应用程序开发效率。
通用性
Spark作为大数据分析通用框架,为大数据分析业务场景提供了统一的解决方案,包括交互式查询、离线计算、实时流处理和机器学习挖掘等。
兼容性
至2013年以来,Spark进入了高速发展期,其社区活跃度位于Apache基金会开源项目前列,Spark正不断的与大数据生态融合,运行模式可独立运行,也可运行在Hadoop YARN、EC2、Mesos和Kubernetes中。支持的数据源包括HDFS、Alluxio、Cassandra、Hbase、Hive、Kafka以及传统关系型数据库等。
集群模式
集群模式 | 说明 | 适应场景 | master url |
---|---|---|---|
本地模式 | 在本地运行,只有一个工作进程,无并行计算能力 | 测试环境 | local |
本地模式 | 在本地运行,有 K 个工作进程,通常设置 K 为机器的CPU 核心数量 | 测试环境 | local[K] |
Standalone | 以 Standalone模式运行,这是 Spark 自身提供的集群运行模式,默认端口号: 7077 | 正式环境 | spark://HOST:PORT |
Mesos | 在 Mesos 集群上运行,Driver 进程和 Worker 进程运行在 Mesos 集群上,部署模式必须使用固定值:–deploy-mode cluster | 正式环境 | mesos://HOST:PORT |
yarn-client | 在 Yarn 集群上运行,Driver 进程在本地,Work 进程在 Yarn 集群上,部署模式必须使用固定值:–deploy-modeclient。Yarn 集群地址必须在相关配置变量中定义 | 正式环境 | yarn-client |
yarn-cluster | 在 Yarn 集群上运行,Driver 进程在 Yarn 集群上,Work 进程也在 Yarn 集群上,部署模式必须使用固定值:–deploy-mode cluster。Yarn 集群地址必须在相关配置变量中定义 | 正式环境 | yarn-cluster |
运行流程
开发人员编写好Spark的Application应用后,将应用jar包通过spark-submit脚本提交到不同的集群资源管理器中,Driver进程构建DAG图并分解执行计划,将并行任务分发到多个工作节点的执行器进程中计算,运行完毕后收集应用的结果,并释放所有资源。
基本概念
术语 | 说明 |
---|---|
Application | 基于spark的用户程序,包含了一个driver program 和集群中多个 executor |
Driver program | 运行application的main()函数并自动创建SparkContext。通常SparkContext 代表driver program |
Executor | 为某个Application运行在worker node 上的一个进程。该进程负责运行task并负责将数据存储在内存或者硬盘上,每个application 都有自己独立的 executors |
Cluster Mannager | 在集群上获得资源的外部服务(spark standalon,mesos,yarm) |
Worker Node | 集群中任何可运行application 代码的节点 |
RDD | spark 的基本运算单元,通过scala集合转化,读取数据集生成或者由其他RDD进过算子操作得到 |
Job | 可以被拆分成task并行计算的单元,一般为spark action 触发的一次执行作业 |
Stage | 每个job会被拆分成很多组task,每组任务被称为stage,也可称TaskSet,该属于经常在日志中看到 |
task | 被送到executor上执行的工作单元 |
Spark学习-入门介绍相关推荐
- 独家 | 集成学习入门介绍
作者:Jason Brownlee 翻译:wwl 校对:王琦 本文约3300字,建议阅读8分钟. 本文介绍了我们在生活中的许多决定包括了其他人的意见,由于群体的智慧,有的时候群体的决策优于个体.在机器 ...
- 干货 :集成学习入门介绍
作者:Jason Brownlee 翻译:wwl 校对:王琦 本文约3300字,建议阅读8分钟. 本文介绍了我们在生活中的许多决定包括了其他人的意见,由于群体的智慧,有的时候群体的决策优于个 ...
- 【强化学习】深度强化学习入门介绍
深度强化学习是一种机器学习,其中智能体(Agent,也翻译作代理)通过执行操作(Action)和查看结果(Reward)来学习如何在环境中采取最佳的动作或策略. 自 2013 年Deep Q-Lear ...
- 深度强化学习入门介绍
深度强化学习是一种机器学习,其中智能体(Agent,也翻译作代理)通过执行操作(Action)和查看结果(Reward)来学习如何在环境中采取最佳的动作或策略. 自 2013 年Deep Q-Lear ...
- Spark 学习入门教程
转载请注明作者,谢谢支持! 一.环境准备 测试环境使用的cdh提供的quickstart vm hadoop版本:2.5.0-cdh5.2.0 spark版本:1.1.0 二.Hello Spark ...
- Spark大数据开发学习:Spark基础入门
在诸多的大数据技术框架当中,Spark可以说是占据了非常重要的地位,继Hadoop之后,基于实时数据处理需求的不断上升,Spark开始占据越来越大的市场份额,而Spark,也成为大数据的必学知识点.今 ...
- oracle入门学习(3) 所用的学习环境介绍与设置
oracle入门学习(3) 原文见我的QQ空间:http://user.qzone.qq.com/284648964?ptlang=2052 由于原文是写在我的QQ空间,文章转过来的过程中造图片丢失, ...
- 深度学习入门之PyTorch学习笔记:深度学习介绍
深度学习入门之PyTorch学习笔记:深度学习介绍 绪论 1 深度学习介绍 1.1 人工智能 1.2 数据挖掘.机器学习.深度学习 1.2.1 数据挖掘 1.2.2 机器学习 1.2.3 深度学习 第 ...
- AI Studio 飞桨 零基础入门深度学习笔记4-飞桨开源深度学习平台介绍
AI Studio 飞桨 零基础入门深度学习笔记4-飞桨开源深度学习平台介绍 深度学习框架 深度学习框架优势 深度学习框架设计思路 飞桨开源深度学习平台 飞桨开源深度学习平台全景 框架和全流程工具 模 ...
最新文章
- 乐在其中设计模式(C#) - 责任链模式(Chain of Responsibility Pattern)
- Dubbo实现原理之基于SPI思想实现Dubbo内核
- 外设驱动库开发笔记4:AD9833函数发生器驱动
- golang编译工具LiteIDE的调试使用方法(F5)
- matlab 工业相机 曝光时间_工业相机与普通相机的差别
- date工具类 DateUtils.java
- 软件工程概论第十六周学习进度表
- 离散数学及其应用(英文版 第7版)及答案
- IDEA .java with UTF-8: MALFORMED[1] [error] Please try specifying another one usi
- MCGS图库 触摸屏组态图库 触摸屏图库 昆仑通态触摸屏专用CGS
- 【设计模式从青铜到王者】第八篇:创建型模式之建造者模式(BuilderPattern)
- ACM题解——贪心——卫星安装
- 宕机怎么读?服务器宕机是什么意思?
- unity-shader-延迟渲染
- Word去除目录主页页码
- Android 优质精准的用户行为统计和日志打捞方案
- 领导艺术-八项管理定律
- 【面向对象】小游戏“终结者”程序的设计与实现
- 关于AIOT简易理解.
- 计算机网络题库——第6章 应用层