• jon
    2019-05-13
    mr编程模型单一,维护成本高,多个job执行时每个都要数据落盘。而spark拥有更高的抽象级别rdd,一次读取数据后便可在内存中进行多步迭代计算,对rdd的计算是多线程并发的所有很高效。
    但是spark依然会存在数据倾斜的情况,在shuffle时有可能导致一个成为数据热点的情况

    作者回复: 这位同学的理解很对!

    
     22
  • 朱同学
    2019-05-13
    似乎数据倾斜是所有分布式计算引擎的通病
    
     15
  • aof
    2019-05-13
    Spark和MR的两个区别:
    1. MapReduce编程模型中,每一对map和reduce都会生成一个job,而且每一次都是写磁盘,这就造成老师所说的启动时间变长,而且维护起来比较复杂;而Spark是链式计算,像map、flatmap、filter等transformation算子是不会触发计算的,只有在遇到像count、collect、saveAsTable等Action算子时,才会真正触发一次计算,对应会生成一个job。
    2. MapReduce每次的MR结果都是保存到磁盘,所以时间开销大;而Spark在执行应用程序是,中间的处理过程、数据(RDD)的缓存和shuffle操作等都是在内存允许的情况下,放在内存中的,所以耗时短。
    展开

    作者回复: 很好的总结

    
     9
  • JohnT3e
    2019-05-13
    1. spark本质上还是批处理,只是通过微批处理来实现近实时处理。如果需要实时处理,可以使用apache flink;
    2. 小文件处理依然有性能问题;
    3. 仍需要手动调优,比如如何让数据合理分区,来避免或者减轻数据倾斜

    作者回复: 说的很好!

    
     7
  • 蒙开强
    2019-05-13
    老师,你好,我看你专栏里说到,MapReduce 是多进程模型。我有点疑惑,MapReduce的map阶段和reduce阶段都有并行task进行运行,它们的task不是线程级别么。

    作者回复: Map和Reudce的Task都是进程级别的,这也是MapReduce广为人诟病的原因

     1
     6
  • 涵
    2019-05-15
    老师讲到Hadoop的四个缺陷,前三个都讲到了Spark的解决方案,比如抽象层次更合理,易于使用,可用的方法更多,不限于map和reduce,还有将迭代的计算结果放入内存,提升迭代计算的效率,降低能耗。但是没有提到第四个只能批量处理数据的问题。这是不是Spark的局限?

    作者回复: 看过后边几讲你就明白了,Spark有Spark Streaming和Structured Streaming的流处理模块,所以它并不是只能做批量处理。

    
     3
  • 楚翔style
    2019-05-13
    sparkcontext不能在集群全局共享,比如我submit了100个spark任务,每个任务都要初始化自己的sc,还要销毁,每一次的创建销毁都很耗时。 这块有什么策略可以优化下吗? 谢谢
    
     3
  • 锦
    2019-05-13
    Spark是在MapReduce的基础上一点点通过工程和学术相结合做出来的,那么是不是意味着背后的理论模型都是分治思想?
    相对于MapReduce多进程模型来说,Spark基于多线程模型,启动速度更快,Cpu利用率更好和内存共享更好。
    MapReduce只提供Map和Reduce操作,而Spark中最基本的弹性分布式数据结构RDD,提供丰富的Api,对机器学习,人工智能更友好,更适用于现代数据处理场景。
    MapReduce计算后的中间数据需要落盘,而Spark的中间数据缓存在内存中用于后续迭代,速度更快。
    疑问:Spark相对于Storm在流计算中有哪些优势呢?
    展开

    作者回复: 看过后边讲Spark流处理的章节就明白了,Storm的优势是纯实时处理,延迟可以到毫秒级,所以试用于需要低延迟的实时场景。我认为Spark在纯流处理上唯一的优势是吞吐量要高。但是考虑使用Spark Streaming最主要的一个因素,应该是针对整个项目进行宏观的考虑,即,如果一个项目除了实时计算之外,还包括了离线批处理、交互式查询等业务功能,而且实时计算中,可能还会牵扯到高延迟批处理、交互式查询等功能,那么就应该首选Spark生态,用Spark Core开发离线批处理,用Spark SQL开发交互式查询,用Spark Streaming开发实时计算,三者可以无缝整合,给系统提供非常高的可扩展性

    
     3
  • 珅剑
    2019-06-09
    Spark在Shuffle阶段依然有可能产生大量的小文件,大量的随机读写造成磁盘IO性能下降,
    
     2
  • Geek_59
    2019-05-14
    总用scala 写spring cloud项目,属于杀鸡用牛刀吗?
    
     2
  • miwucc
    2019-05-13
    感觉mapreduce遗留的问题还有
    1.数据分片分不好,导致数据过于集中在某机器导致整体处理速度慢或者无法处理问题。spark还是全靠使用者的分片函数还是自己有方法可以动态调度?
    2.对于实际复杂业务中的多job前后依赖,与业务紧密耦合的异常捕捉,处理机制是否有更好的解决方法?

    作者回复: 你说的很好,这两个问题都是分布式计算的痛点。用Spark的RDD API没有自动优化数据分区,很依赖开发者手动调优。后边讲到的Spark SQL的执行引擎会有这方面的优化,性能要显著优于RDD。

    
     2
  • 趁早
    2019-07-20
    k8s,mesos都知识编排工具吧,那具体数据存哪里呢
     1
     1
  • 启能
    2019-05-13
    spark和flink,这两个都是分布式数据处理框架,项目中应该怎么选?

    作者回复: 相信你看完21讲应该就知道了,Flink在流处理上有天然的优势,而Spark虽然有各种流处理的模块,但还是做批处理比较擅长。看完21讲中Spark和Flink的对比之后相信你可以做出选择

    
     1
  • 走小調的凡世林
    2019-11-30
    请教下老师,我们有个需求:根据各种自定义规则(比如分辨率、大小等)计算海量资源的分数(资源可以是图片、视频、音频)。总分100,图片分辨率太小或视频太大都要扣分,最后算出一个资源总分,这种需求可以用spark实现吗?主要考虑算分过程可能比较耗时,且资源数量较多。如果可以的话如何实现呢?老师是否可以提供下思路,感谢!
    
    
  • darren
    2019-07-02
    可以为每个进程设定使用资源,对每个线程就不好控制
    
    
  • 滩涂曳尾
    2019-06-30
    怎么感觉spark相比hadoop只是做了一些工程上的优化,多线程vs多进程(类比apache vs. nginx),内存缓存磁盘数据,... 学了后面的再看
    
    
  • 13311195819
    2019-06-19
    老师好,您文章中提到“MapReduce 状态机“,这个词该怎么理解呢?是不是类似于flink中state的概念?

    
    
  • 一
    2019-05-24
    老师好,“多进程模型便于细粒度控制每个任务占用的资源”这一句不太理解,进程不是粗粒度的概念吗?为什么以进程为单位的并发反而便于细粒度的控制每个任务占用的资源呢?
     1
    
  • 挖矿的小戈
    2019-05-13
    1. MR、Spark都有shuffle,shuffle难免出现数据倾斜
    2.流计算上的不足:MR就不说了,SparkStreaming只能算微批处理,尽管Spark的StructStreaming已经在这方面做了改进,但是思想貌似无法改变,spark就是以批处理的思想来处理流数据,这方面感觉没法跟flink比,不过交互式查询、ML以及生态上会比flink强

    作者回复: 很好的总结

    
    
  • 大鹏
    2019-05-13
    两者共存的数据热点问题,依然需要手工介入,一个方法是减少无用的信息,第二个就是单独处理且分而治之
    
    
我们在线,来聊聊吧