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性能好的因素主要分为如下几点:

  1. Spark是基于内存进行数据处理,对比MapReduce基于磁盘进行数据处理性能当然是更为优秀,MapReduce需要将中间结果保存在磁盘上,而Spark将中间结果缓存在内存中,在进行迭代计算时,大量的中间结果导致两者运行时差尤为明显。
  2. Spark中具有DAG有向无环图计算模型,DAG对shuffle操作的优化,有效减少了中间文件数和落地磁盘的次数。
  3. 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学习-入门介绍相关推荐

  1. 独家 | 集成学习入门介绍

    作者:Jason Brownlee 翻译:wwl 校对:王琦 本文约3300字,建议阅读8分钟. 本文介绍了我们在生活中的许多决定包括了其他人的意见,由于群体的智慧,有的时候群体的决策优于个体.在机器 ...

  2. 干货 :集成学习入门介绍

    作者:Jason Brownlee   翻译:wwl    校对:王琦 本文约3300字,建议阅读8分钟. 本文介绍了我们在生活中的许多决定包括了其他人的意见,由于群体的智慧,有的时候群体的决策优于个 ...

  3. 【强化学习】深度强化学习入门介绍

    深度强化学习是一种机器学习,其中智能体(Agent,也翻译作代理)通过执行操作(Action)和查看结果(Reward)来学习如何在环境中采取最佳的动作或策略. 自 2013 年Deep Q-Lear ...

  4. 深度强化学习入门介绍

    深度强化学习是一种机器学习,其中智能体(Agent,也翻译作代理)通过执行操作(Action)和查看结果(Reward)来学习如何在环境中采取最佳的动作或策略. 自 2013 年Deep Q-Lear ...

  5. Spark 学习入门教程

    转载请注明作者,谢谢支持! 一.环境准备 测试环境使用的cdh提供的quickstart vm hadoop版本:2.5.0-cdh5.2.0 spark版本:1.1.0 二.Hello Spark ...

  6. Spark大数据开发学习:Spark基础入门

    在诸多的大数据技术框架当中,Spark可以说是占据了非常重要的地位,继Hadoop之后,基于实时数据处理需求的不断上升,Spark开始占据越来越大的市场份额,而Spark,也成为大数据的必学知识点.今 ...

  7. oracle入门学习(3) 所用的学习环境介绍与设置

    oracle入门学习(3) 原文见我的QQ空间:http://user.qzone.qq.com/284648964?ptlang=2052 由于原文是写在我的QQ空间,文章转过来的过程中造图片丢失, ...

  8. 深度学习入门之PyTorch学习笔记:深度学习介绍

    深度学习入门之PyTorch学习笔记:深度学习介绍 绪论 1 深度学习介绍 1.1 人工智能 1.2 数据挖掘.机器学习.深度学习 1.2.1 数据挖掘 1.2.2 机器学习 1.2.3 深度学习 第 ...

  9. AI Studio 飞桨 零基础入门深度学习笔记4-飞桨开源深度学习平台介绍

    AI Studio 飞桨 零基础入门深度学习笔记4-飞桨开源深度学习平台介绍 深度学习框架 深度学习框架优势 深度学习框架设计思路 飞桨开源深度学习平台 飞桨开源深度学习平台全景 框架和全流程工具 模 ...

最新文章

  1. 乐在其中设计模式(C#) - 责任链模式(Chain of Responsibility Pattern)
  2. Dubbo实现原理之基于SPI思想实现Dubbo内核
  3. 外设驱动库开发笔记4:AD9833函数发生器驱动
  4. golang编译工具LiteIDE的调试使用方法(F5)
  5. matlab 工业相机 曝光时间_工业相机与普通相机的差别
  6. date工具类 DateUtils.java
  7. 软件工程概论第十六周学习进度表
  8. 离散数学及其应用(英文版 第7版)及答案
  9. IDEA .java with UTF-8: MALFORMED[1] [error] Please try specifying another one usi
  10. MCGS图库 触摸屏组态图库 触摸屏图库 昆仑通态触摸屏专用CGS
  11. 【设计模式从青铜到王者】第八篇:创建型模式之建造者模式(BuilderPattern)
  12. ACM题解——贪心——卫星安装
  13. 宕机怎么读?服务器宕机是什么意思?
  14. unity-shader-延迟渲染
  15. Word去除目录主页页码
  16. Android 优质精准的用户行为统计和日志打捞方案
  17. 领导艺术-八项管理定律
  18. 【面向对象】小游戏“终结者”程序的设计与实现
  19. 关于AIOT简易理解.
  20. 计算机网络题库——第6章 应用层

热门文章

  1. MySQL主从同步的原理
  2. 服务器怎么修改内存大小,服务器怎么改内存大小
  3. js数字转字符串和字符串转数字的方法
  4. QQ IDKey生成
  5. Android 第三方库AgentWeb的使用
  6. 判断一个多边形是否是凸多边形
  7. 软件需求规格说明书样例
  8. u盘linux 修复grub,CentOS修复Grub
  9. 【JS笔记】JS中的DOM对象以及通过JS获取DOM结点,操作DOM属性、DOM增删改查
  10. Android开发基础规范(一)