zoukankan      html  css  js  c++  java
  • 对Spark的理解

    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进程。
  • 相关阅读:
    Android Shape画圆,矩形
    Android 图片平铺效果实现的3种方法
    threadid=1: thread exiting with uncaught exception (group=0x40db8930)
    Facebook 调试工具Stetho配置入门
    Exception in MessageQueue callback: handleReceiveCallback
    EditText 双击才能获取点击事件
    2011年中国(大陆)地级以上(含省直辖县)行政区划表
    Android 应用接入广点通统计API 方案
    Android常用工具类封装---SharedPreferencesUtil
    IIS上发布站点后URL重写失效的解决方法
  • 原文地址:https://www.cnblogs.com/gaoxing/p/4916785.html
Copyright © 2011-2022 走看看