草庐IT

caching - 缓存是 spark 相对于 map-reduce 的唯一优势吗?

coder 2024-01-05 原文

我已经开始学习 Apache Spark,并且对该框架印象深刻。尽管一直困扰我的一件事是,在所有 Spark 演示中,他们都在谈论 Spark 如何缓存 RDD,因此需要相同数据的多个操作比 Map Reduce 等其他方法更快。

所以我的问题是,如果是这种情况,那么只需在 Yarn/Hadoop 等 MR 框架内添加一个缓存引擎即可。

为什么要完全创建一个新框架?

我确定我在这里遗漏了一些东西,您将能够向我指出一些文档,这些文档可以让我更多地了解 spark。

最佳答案

在内存计算中缓存+对于spark来说绝对是个大事情,但是还有其他事情。


RDD(Resilient Distributed Data set):RDD是spark的主要抽象。它允许通过重新计算 DAG 来恢复故障节点,同时还通过检查点支持与 Hadoop 更相似的恢复方式,以减少 RDD 的依赖性。将 Spark 作业存储在 DAG 中允许对 RDD 进行惰性计算,还可以允许 Spark 的优化引擎以对性能产生重大影响的方式安排流程。


Spark API:Hadoop MapReduce 有一个非常严格的 API,不允许那么多的通用性。由于 spark 抽象出了许多低级细节,因此它可以提高工作效率。此外,广播变量和累加器之类的东西比 DistributedCache 和计数器 IMO 更通用。


Spark Streaming:Spark Streaming 基于论文 Discretized Streams,该论文提出了一种使用微批处理对流进行窗口化计算的新模型。 Hadoop 不支持这样的东西。


作为内存计算的产物,spark 有点像它自己的流调度器。而使用标准 MR,您需要一个外部作业调度程序,如 Azkaban 或 Oozie 来调度复杂的流程


hadoop项目由MapReduce、YARN、commons和HDFS组成;然而,spark 正试图创建一个统一的大数据平台,其中包含用于机器学习、图形处理、流媒体、多个 sql 类型库的库(在同一个 repo 中),我相信深度学习库正处于起步阶段。虽然这些都不是 spark 的严格特性,但它是 spark 计算模型的产物。 Tachyon 和 BlinkDB 是另外两种围绕 Spark 构建的技术。

关于caching - 缓存是 spark 相对于 map-reduce 的唯一优势吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24705724/

有关caching - 缓存是 spark 相对于 map-reduce 的唯一优势吗?的更多相关文章

  1. ruby - 为什么 SecureRandom.uuid 创建一个唯一的字符串? - 2

    关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?

  2. ruby - 如何在 Ubuntu 中清除 Ruby Phusion Passenger 的缓存? - 2

    我试过重新启动apache,缓存的页面仍然出现,所以一定有一个文件夹在某个地方。我没有“公共(public)/缓存”,那么我还应该查看哪些其他地方?是否有一个URL标志也可以触发此效果? 最佳答案 您需要触摸一个文件才能清除phusion,例如:touch/webapps/mycook/tmp/restart.txt参见docs 关于ruby-如何在Ubuntu中清除RubyPhusionPassenger的缓存?,我们在StackOverflow上找到一个类似的问题:

  3. ruby-on-rails - Ruby on Rails 计数器缓存错误 - 2

    尝试在我的RoR应用程序中实现计数器缓存列时出现错误Unknownkey(s):counter_cache。我在这个问题中实现了模型关联:Modelassociationquestion这是我的迁移:classAddVideoVotesCountToVideos0Video.reset_column_informationVideo.find(:all).eachdo|p|p.update_attributes:videos_votes_count,p.video_votes.lengthendenddefself.downremove_column:videos,:video_vot

  4. ruby - Sinatra set cache_control to static files in public folder编译错误 - 2

    我不知道为什么,但是当我设置这个设置时它无法编译设置:static_cache_control,[:public,:max_age=>300]这是我得到的syntaxerror,unexpectedtASSOC,expecting']'(SyntaxError)set:static_cache_control,[:public,:max_age=>300]^我只想将“过期”header设置为css、javaascript和图像文件。谢谢。 最佳答案 我猜您使用的是Ruby1.8.7。Sinatra文档中显示的语法似乎是在Ruby1.

  5. ruby - 在 ruby​​ 中使用 .try 函数和 .map 函数 - 2

    我需要从json记录中获取一些值并像下面这样提取curr_json_doc['title']['genre'].map{|s|s['name']}.join(',')但对于某些记录,curr_json_doc['title']['genre']可以为空。所以我想对map和join()使用try函数。我试过如下curr_json_doc['title']['genre'].try(:map,{|s|s['name']}).try(:join,(','))但是没用。 最佳答案 你没有正确传递block。block被传递给参数括号外的方法

  6. ruby - 数组数组中的唯一元素 - 2

    我想通过内部数组中的第一个元素从数组数组中找到唯一元素。例如a=[[1,2],[2,3],[1,5]我想要类似的东西[[1,2],[2,3]] 最佳答案 uniq方法需要一个block:uniq_a=a.uniq(&:first)或者如果您想就地进行:a.uniq!(&:first)例如:>>a=[[1,2],[2,3],[1,5]]=>[[1,2],[2,3],[1,5]]>>a.uniq(&:first)=>[[1,2],[2,3]]>>a=>[[1,2],[2,3],[1,5]]或者>>a=[[1,2],[2,3],[1,5]

  7. ruby - 不能将 `each` 的所有或大多数情况替换为 `map` 吗? - 2

    Enumerable#each和Enumerable#map的区别在于返回的是接收者还是映射后的结果。回到接收者是微不足道的,你通常不需要在each之后继续一个方法链,比如each{...}.another_method(我可能没见过这样的案例。即使你想回到接收者那里,你也可以通过tap来实现)。所以我认为所有或者大部分使用Enumerable#each的情况都可以用Enumerable#map代替。我错了吗?如果我是对的,each的目的是什么?map是否比each慢?编辑:我知道当您对返回值不感兴趣时​​使用each是一种常见的做法。我对这种做法是否存在不感兴趣,但感兴趣的是,除了从

  8. ruby - caches_page :all - 2

    有什么方法可以告诉Rails3在给定的Controller中缓存所有页面,而不必在调用caches_page时列出所有页面?我尝试了caches_page:all,但它不起作用。 最佳答案 有点像实现的错误,但我刚刚尝试过它并且它适用于Rails3.0.6:caches_page:except=>[] 关于ruby-caches_page:all,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/que

  9. ruby-on-rails - ApplicationController :Class 的未定义方法 `caches_action' - 2

    我正在尝试升级到Rails4beta1,但遇到了一些问题。简而言之,这就是我的应用程序Controller的样子。classApplicationControllercaches_action在Rails4中移到了它自己的gem中,因此包含gem应该可以解决问题。gem"actionpack-action_caching",github:"rails/actionpack-action_caching"但是当我运行我的请求规范或在浏览器中访问该应用程序时,我收到此错误。app/controllers/application_controller.rb:3:in`':undefinedm

  10. ruby - `map` 比 `each` 快吗? - 2

    map遍历数组是否比each更快?两者有速度差异吗?mapresult=arr.map{|a|a+2}每个result=[]arr.eachdo|a|result.push(a+2)end 最佳答案 我认为是的。我试过这个测试require"benchmark"n=10000arr=Array.new(10000,1)Benchmark.bmdo|x|#Mapx.reportdon.timesdoresult=arr.map{|a|a+2}endend#Eachx.reportdon.timesdoresult=[]arr.each

随机推荐