Spark作为一个新的分布式计算引擎正慢慢流行起来,越来越来的企业也准备用它的替换MapReduce,根据自己在工作的一些体会谈谈的优势。

分布式计算归根到底还是一个Map和Reduce操作,Map操作对每个数据块进行计算,Reduce操作对结果进行汇总,现在一些NoSQL分布式数据库其实也是这么一套计算框架,只是map和reduce太基础,太简陋,实现相关的业务时开发比较复杂,不符合生产力发展的需求,这样Spark对map和reduce进行了抽象和封装提出了RDD的概念
 
RDD的提出是Spark的最大的进步,它让我们不再关注计算本身,以前我们老想着map,reduce啥的,RDD对数据集进行抽象,我们的关注点变成了数据集本身,又借鉴了函数式编程的一些思想,我们可以对数据集做各种各样的操作(spark的transformation和action),Spark框架底层转换了map和reduce的操作,大大的提高了生成力。当然还加入了一些优化,比如map的输出不需要落地,其实要做大数据的计算怎么可能不落地。做大数据的聚集操作时磁盘和网络IO依旧是制约速度的主要原因
 
 
Spark提供了更加灵活的DAG编程模型,在spark,每一个RDD用来描述数据集的一个状态,而这个状态是从上一个状态转换过来的,因此RDD之间会形成一个依赖关系,这种RDD的依赖链会触发一个job,而job会被切分成一个stage的DAG图。给了job很大的优化空间,目前DAG减少了数据的读写(缓冲在内存中)和网络的传输(宽依赖和窄依赖),用于迭代和交互计算支持。 传统的mapreduce为了进行迭代计算,需要多个job进行依赖,数据要不停的在HDFS上进行读写,性能大大降低。
 
还一个优化就是Spark的作业调度。Spark的job是线程级别的,而spark sql中一个sql就是一个job, sql的执行轻量很多。hive的job是进程级别的,一个sql就是一个job,需要启动多个jvm进程。

最新文章

  1. Spring @Autowired注解在utils静态工具类
  2. linux mysql root密码重置
  3. 译\Node.js应用的持续部署
  4. [python实现设计模式]-1. 单例模式
  5. JQuery源码分析(六)
  6. jQuery mobile 核心功能
  7. 实现HTTP跳转到HTTPS
  8. ReentrantLock(重入锁)以及公平性
  9. ASP.NET MVC相关
  10. ABAP中的AMDP(ABAP-Managed Database Procedures )
  11. Servlet--取得初始化配置信息
  12. POJ2398【判断点在直线哪一侧+二分查找区间】
  13. centos 7 linux系统默认ftp安装配置和部署(详细讲解)
  14. Java中常见的排序方式-选择排序(升序)
  15. day11_雷神_udp、多进程等
  16. 64位JDK+tomcat6+myeclipse 10安装与配置
  17. 第一弹:超全Python学习资源整理(入门系列)
  18. 缓存数据库-redis数据类型和操作(string)
  19. TensorFlow 简单实例
  20. PWA web应用模型

热门文章

  1. 一文搞定 Git 相关概念和常用指令
  2. C++对C语言的拓展(3)—— 默认参数和占位参数
  3. Ant能干什么,编译?打包!
  4. bzoj 3505 [Cqoi2014]数三角形——排列组合
  5. Spring Boot基本配置
  6. 把Azure专线从Class模式迁移到ARM模式
  7. 蓝桥杯 算法训练 ALGO-149 5-2求指数
  8. pom.xm首行报错Failure to transfer org.codehaus.plexus:plexus-components:pom:1.1.20
  9. UE4材质初探
  10. 数据库:MySQL索引背后的数据结构及算法原理【转】