• vivi
    2018-12-25
    懂了原理,实战其实很简单,不用急着学部署啊,操作,原理懂了,才能用好,我觉得讲得很好

    作者回复: 👍🏻

    
     38
  • 落叶飞逝的恋
    2018-11-27
    总结:Spark的优点就是能够动态根据计算逻辑的复杂度进行不断的拆分子任务,而实现在一个应用中处理所有的逻辑,而不像MapReduce需要启动多个应用进行计算。
    
     18
  • My dream
    2018-11-28
    老师,你讲的理论看的我头晕脑胀的,能不能讲点实战操作,搭建spark环境,通过案例来讲的话,对于我们这些初学学生来说是最直观,最容易弄明白它为什么会那么快,像你这样一味的讲理论,不讲实战,我们实在是吸收不了,理解不了你讲的这些知识点
     2
     17
  • scorpiozj
    2018-11-28
    移动计算比移动数据划算 总结的真好 很多设计仔细想一想都是围绕这个中心

    关于开源
    1 准备好详细的使用 api文档并提供示例
    2 撰写设计思路 和竞品比较的优势 以及创新点
    3 提前联系若干团队使用产品 并请他们提供真实的提高效率的数据报告
    4 联系公关团队在知名技术论坛推广
    5 成立团队 及时响应开发者疑问 需求和pr等
    展开
    
     10
  • arn
    2018-11-28
    每一篇文章都认真的读了,有些东西还没真正的去在实际工作中体会到,但这种思维的启发还是受益匪浅。
    
     6
  • 纯洁的憎恶
    2018-11-27
    这两天的内容对我来说有些复杂,很多知识点没有理解透。针对“而 Spark 更细腻一点,将前一个的 Reduce 和后一个的 Map 连接起来,当作一个阶段持续计算,形成一个更加优雅、高效地计算模型”。这句话中“将前一个的 Reduce 和后一个的 Map 连接起来”在细节上该如何理解,这也是明显的串行过程,感觉不会比传统的MapReduce快?是因为不同阶段之间有可能并行么?

    作者回复: 引用楼下的评论回复

    落叶飞逝的恋
    总结:Spark的优点就是能够动态根据计算逻辑的复杂度进行不断的拆分子任务,而实现在一个应用中处理所有的逻辑,而不像MapReduce需要启动多个应用进行计算。

    
     5
  • gogo
    2018-11-27
    啊、老师现在的提问都好大,我现在是老虎吃天无从下爪啊 ^_^

    作者回复: 有些问题不一定要得到答案或者回答出来,只是关注到了思考一下,就会有收获~

    
     4
  • 海
    2019-03-07
    对于hbase和高速发展的es,不知道您怎么看,他们的优缺点是什么?
    
     3
  • 追梦小乐
    2018-11-27
    老师,我想请教几个问题:
    1、“根据每个阶段要处理的数据量生成相应的任务集合(TaskSet),每个任务都分配一个任务进程去处理”,是一个任务集合TaskSet启动一个进程,taskSet里面的任务是用线程计算吗?还是每个TaskSet里面的任务启动一个进程?

    2、task-time 图中红色密集的表示什么?

    3、Spark 的执行过程 的图中 Executor 中的 Cache 是表示内存吗?task和Executor不是在内存中的吗?
    展开

    作者回复: 每个任务一个进程

    很多红色线条,每条线代表一个任务

    cache理解成存储rdd的内存

    
     3
  • 落叶飞逝的恋
    2019-03-04
    现在回过头看,Spark的编程模型其实类似Java8的Steam编程模型
     1
     2
  • 张飞
    2019-03-01
    1.“而 Spark 更细腻一点,将前一个的 Reduce 和后一个的 Map 连接起来,当作一个阶段持续计算,形成一个更加优雅、高效地计算模型”,stage之间是串行的,即便前一个的reduce和后一个的map连接起来,也是要从前一个stage的计算节点的磁盘上拉取数据的,这跟mapreduce的计算是一样的,老师所说的高效在这里是怎么提现的呢?
    2. spark的内存计算主要体现在shuffle过程,下一个stage拉取上一个stage的数据的时候更多的使用内存,在这里区分出与mapreduce计算的不同,别的还有什么阶段比mapreduce更依赖内存的吗?
    3.我是不是可以这样理解,如果只有map阶段的话,即便计算量很大,mapreduce与spark的计算速度上也没有太大的区别?
    可能问题问的不够清晰,希望老师解答一下。
    展开

    作者回复: 1 Spark的map和reduce的划分要更优雅一点,比如宽依赖和窄依赖,编程上看不出明显的map和reduce,这种优雅还有很多,多写一些spark和MapReduce程序就能感受到。

    2 如果内存够用,Spark几乎总是使用内存。

    3 可以这么理解。

    
     2
  • Yezhiwei
    2019-01-14
    这里是学习过程中做的一些总结

    https://mp.weixin.qq.com/s/OyPRXAu9hR1KWIbvc20y1g

    作者回复: 👍👍👍

    
     2
  • ming
    2018-12-08
    老师,有一句话我不太理解,请老师指导。“DAGScheduler 根据代码和数据分布生成 DAG 图”。根据代码生产DAG图我理解,但是为什么生成DAG图还要根据数据分布生成,数据分布不同,生成的DAG图也会不同吗?

    作者回复: 数据分布删掉,谢谢指正。

    
     2
  • felix
    2018-11-28
    老师有了解过微软sql server analysis service的tabular吗,内存型列式存储的数据库,数据压缩比很高。如果光做数据库查询的话,比spark还快很多,因为spark还要把数据load进内存。我们自己写了一个服务来分布聚合,还用redis以维度为key做缓存。
    
     2
  • Jack Zhu
    2018-11-28
    1.确定做开源的商业模式,是羊毛出在猪身上,还是送小羊推大羊等等
    2.确定组织投入人员
    3.建立社区,定期together讨论,为迭代版本做计划
    4.做一些必要商业推广和免费客户服务
    
     2
  • Riordon
    2018-11-27
    为何Spark可以更高效?
    1)MR使用多进程模型,Spark使用多线程模型,这样Spark构建一个可重用的资源池,而MR往往不会,MR会耗费更多的构建资源池的启动时间,Spark在进程内线程会竞争资源,导致Spark相比MR不稳定;
    2)对于多次读取的中间结果可以Cache,避免多次读盘,对于迭代计算友好;
    另外shuffle过程,貌似不管是MR还是Spark都是需要写盘的吧
    
     2
  • 张小喵
    2019-12-09
    把12|13反复读了4、5遍,以下是我的感悟
    Spark再次理解:
        1:Spark计算框架编程和运行速度比MapReduce更加的简单和快
        编程更简单:Spark编程关注的数据是RDD,RDD是个抽象的,比较不好理解,我的理解RDD是一次计算阶段中 要操作的所有的数据的抽象,虽然它们是分片的,并且分布在HDFS的任意节点上,但是概念上,我们是针对这个抽象的RDD编程的。使用Scala编程,wordcount只需要三行代码,很简单是吧,但是背后的整体的计算过程是相当的复杂的。这样看我们在MapReduce中的编程要是关注所有的数据的,默认为map的数据输入的数据是整个要处理的数据,并不是说,其他的应用就不知道了,毕竟我们也可以在代码中感知到在文件中的偏移量这种东西。
        速度更快:MapReduce暴力的把计算阶段分为两个阶段,Map和Reduce阶段, 如果一个应用的计算实现只有两个阶段,那么MapReduce计算框架的速度不会比Spark慢多少,慢的地方只是在于Spark是不经过落盘的操作的,直接在内存中存储,但是如果一个应用的计算阶段变得很多的话,比如机器学习中的迭代计算,那么使用MapReduce的就非常慢了,如果这个应用的计算分为10000个计算阶段,如果用MapReduce实现,就需要启动5000次相关的应用,速度很慢,并且编码会很麻烦,如果 是Spark,那么在一次应用就可以解决该问题。

    Spark的多个计算阶段的理解:
        相比于MapReduce只有两个计算阶段, Spark理论上可以有无限个计算阶段, 这也是Spark的速度的优势
        Spark的计算阶段的表示中,DAG(有向无环图)是Spark的关键,DAG可以很好的表示每个计算阶段的关系,或者说依赖书序
        那么DAG是谁生成的呢,是根据什么生成的呢?
            DAG是有Spark计算框架根据用于所写的代码生成的,那怎么依据代码的什么生成的呢?
                类比MapReduce的两个计算阶段,两个阶段之间的过度是什么?是shuffle,Spark也是根据Spark中的代码中的转换函数是否是有shuffle操作进行划分阶段的!
        我的理解,Spark的每个计算阶段可以类比MapReduce中的Map阶段或者Reduce阶段。不同的是,Spark计算阶段关注的是RDD,但是又有相同的点,RDD中的数据组成也是一片一片的,Spark中的最小的任务也就是对于片的计算,原理和MapReduce一样,Spark中的片和MapReduce中的片是通一个东西,每个片都是分布于HDFS上的,对于每个片的计算大概率也是在片所在的计算节点的。所以Spark的计算也是分布式,并且原理和MapReduce是一样的。

    Spark中RDD上的操作函数:RDD上的操作函数分为两种类型,一种是转换函数,另一种是action函数
        转换函数:Spark编程中对于RDD的操作基本是用转换函数来完成的,转换函数是计算RDD,转换函数又分为两种
            只是改变RDD内容的转换函数:类似map,filter函数,RDD本身物理上没有变化,所有的操作都是针对于当前的分片
            会新生成RDD转换函数:类似于reduceByKey这种函数,会组合key生成新的RDD(所有的会生成新的RDD的函数都可以作为 计算阶段的分割函数吗?)
        action函数:aciton函数对于RDD的操作没有返回值,或者说不会改变RDD的内容,比如rdd.saveToPath等等

    Spark中一些关于应用的生命周期中的过程的名词、概念:
        Spark中的RDD函数主要有两种,一是转换函数,调用转换函数可以返回一个RDD(产生新的RDD?/会shuffle的函数分割计算阶段),RDD的计算逻辑主要是由转换函数完成

        另一种是action函数,调用这种函数不返回RDD,DAGScheduler在遇到shuffle的时候生成一个新的计算阶段,在遇到action函数的时候,产生一个作业。(我理解可以类似于,一次MapReduce程序对应Spark中的一个作业)
        在每个计算阶段都是针对RDD(包含很多片)的计算,每个分片Spark都会创建一个计算任务去处理,所以每个计算阶段会包含很多个计算任务
    展开
    
     1
  • 羊小看
    2019-07-02
    spark的有向无环图,将一个阶段的输出,直接给到另一个阶段的输入,不需要再次启动应用,避免多次访问HDFS,避免多次调度,尤其是机器学习,上万次迭代的场景,且优先使用内存存储中间结果。
    
     1
  • 数据化分析
    2018-12-14
    希望能讲讲实际怎么操作。
    
     1
  • Richard
    2018-12-14
    “DAGScheduler 根据程序代码生成 DAG,然后将程序分发到分布式计算集群,按计算阶段的先后关系调度执行。Worker 收到任务后,启动 Executor 进程开始执行任务。Executor 先检查自己是否有 Driver 的执行代码,如果没有,从 Driver 下载执行代码,通过 Java 反射加载后开始执行。” 针对这一段话,我想多请教老师一些,我理解的DAGScheduler 根据程序代码生成 DAG,类似于关系型数据库优化器根据SQL生成执行计划,然后spark计算引擎根据这些计划去做计算,我的疑惑的是:DAG已经是根据代码生成的了,那Worker 还要从 Driver 下载执行代码去执行,我无法想象worker是如何执行代码的,能否帮忙解疑一下?

    作者回复: SQL的执行计划和spark的dag,都是执行描述,可以用文本查看的,不包括执行代码。

    worker下载应用程序的jar包,反射加载执行。第三模块spark源码优化有详细描述。

    
     1
我们在线,来聊聊吧