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进程。

对Spark的理解的更多相关文章

  1. 【Spark工作原理】Spark任务调度理解

    Spark内部有若干术语(Executor.Job.Stage.Task.Driver.DAG等),需要理解并搞清其内部关系,因为这是性能调优的基石.   节点类型有: 1. Master 节点: 常 ...

  2. spark partition 理解 / coalesce 与 repartition的区别

    一.spark 分区 partition的理解: spark中是以vcore级别调度task的. 如果读取的是hdfs,那么有多少个block,就有多少个partition 举例来说:sparksql ...

  3. Spark 快速理解

    转自:http://blog.csdn.net/colorant/article/details/8255958 ==是什么 == 目标Scope(解决什么问题) 在大规模的特定数据集上的迭代运算或重 ...

  4. spark机制理解(一)

    一  基本术语 Application:  基于Spark的用用户程序,包含了Driver程序和集群上的Executor. Driver Program: 运行行main函数并且新建SparkCont ...

  5. Spark RDD理解

    目录 ----RDD简介 ----RDD操作类别 ----RDD分区 ----宽依赖和窄依赖作用 ----RDD分区划分器 ----RDD到调度 返回顶部 RDD简介 RDD是弹性分布式数据集(Res ...

  6. Spark RDD理解-总结

    1.spark是什么 快速.通用.可扩展的分布式计算引擎. 2. 弹性分布式数据集RDD RDD(Resilient Distributed Dataset),是Spark中最基本的数据抽象结构,表示 ...

  7. Spark里边:Worker源代码分析和架构

    首先由Spark图表理解Worker于Spark中的作用和地位: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYW56aHNvZnQ=/font/5a6L ...

  8. Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例【附详细代码】

    http://blog.csdn.net/xiefu5hh/article/details/51707529 Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例[附 ...

  9. Spark处理日志文件常见操作

    spark有自己的集群计算技术,扩展了hadoop mr模型用于高效计算,包括交互式查询和 流计算.主要的特性就是内存的集群计算提升计算速度.在实际运用过程中也当然少不了对一些数据集的操作.下面将通过 ...

随机推荐

  1. linux命令学习笔记(28):tar命令

    通过SSH访问服务器,难免会要用到压缩,解压缩,打包,解包等,这时候tar命令就是是必不可少的一个功能强大的 工具.linux中最流行的tar是麻雀虽小,五脏俱全,功能强大. tar命令可以为linu ...

  2. visual assist(VA)设置快捷键(其它安装的插件设置快捷键也在这里)

    安装完visual assist后发现快捷键无法使用纠结,然后找如何去设置快捷建以此记录一下: 在Tools-->customize-->Keyboard-->Add-ins 常用的 ...

  3. Mybatis_generator自动化生成代码

    1.Run as 2.ok

  4. Js中获取键盘的事件

    使用方法: <script type="text/javascript" language=JavaScript charset="UTF-8"> ...

  5. winrm service

    今天看脚本忽然发现一个服务,叫winRM服务,这是个PowerShell的远程管理.开启它可以很大程度的方便用PowerShell操控! 下面是我找到的一些资料: 在Linux中,我们可以使用安全的S ...

  6. QrCode C#生成二维码 及JavaScript生成二维码

    一 C#的二维码    示例: class Program { static void Main(string[] args) { QrEncoder qrEncoder = new QrEncode ...

  7. 使用内省的方式操作JavaBean

    import java.beans.BeanInfo; import java.beans.Introspector; import java.beans.PropertyDescriptor; im ...

  8. mysql 异常宕机 ..InnoDB: Database page corruption on disk or a failed,,InnoDB: file read of page 8.

    mysql 测试环境异常宕机 系统:\nKylin 3.3 mysql版本:5.6.15--yum安装,麒麟提供的yum源数据库版本 error日志 181218 09:38:52 mysqld_sa ...

  9. json 工具处理类

    package com.js.ai.modules.pointwall.util; import java.lang.reflect.Type; import java.net.URLDecoder; ...

  10. bash姿势-没有管道符执行结果相同于管道符

    听起来比较别口: 直接看代码: shell如下: [root@sevck_linux ~]# </etc/passwd grep root root:x:::root:/root:/bin/ba ...