zoukankan      html  css  js  c++  java
  • spark为什么比mapreduce运行速度快很多

    • 比较重要的2个原因

    –            1、基于内存

                   mapreduce任务每次都会把结果数据落地到磁盘,后续有其他的job需要依赖于前面job的输出结果,这里就需要进行大量的磁盘io操作,获取前面job的输出结果。性能非常低

        例如:select name,age from ( select * from user where address = 'beijing')
            ------------job2--------  ------------------job1-----------------------
        spark任务的输出结果可以保存在内存中,后续有其他的job需要依赖于前面job的输出结果,这里就只需要直接从内存中获取得到,大大减少磁盘io操作。

        spark框架适合于迭代计算
        job1----->job2----->job3----->job4----->job5----->jobN......

    –            2、进程和线程

                   mapreduce任务它是以进程的方式运行在yarn集群中,比如说一个mapreduce任务有100个MapTask,后期需要运行这100个task,就需要启动100个进程。
        spark任务它是以线程的方式运行在worker节点的executor进程中,比如说一个spark任务有100个MapTask,这里后期需要运行100个线程就可以了。
        可以这样极端一点:只需要启动一个进程,在一个进程中运行100个线程就可以了.开启一个进程比开启一个线程需要的时间和资源调度肯定是不一样,开启一个进程需要的时间远远大于线程.

  • 相关阅读:
    布局重用 include merge ViewStub
    AS 常用插件 MD
    AS 2.0新功能 Instant Run
    AS .ignore插件 忽略文件
    AS Gradle构建工具与Android plugin插件【大全】
    如何开通www国际域名个人网站
    倒计时实现方案总结 Timer Handler
    AS 进行单元测试
    RxJava 设计理念 观察者模式 Observable lambdas MD
    retrofit okhttp RxJava bk Gson Lambda 综合示例【配置】
  • 原文地址:https://www.cnblogs.com/starzy/p/12057804.html
Copyright © 2011-2022 走看看