jjzjj

java - mapreduce.reduce.shuffle.memory.limit.percent、mapreduce.reduce.shuffle.input.buffer.percent 和 mapreduce.reduce.shuffle.merge.percent

coder 2024-01-06 原文

我只是想验证我对这些参数及其关系的理解,如果我错了请通知我。

  • mapreduce.reduce.shuffle.input.buffer.percent 告诉分配给 reducer 的整个洗牌阶段的内存总量。

  • mapreduce.reduce.shuffle.memory.limit.percent 告诉单个 shuffle 可以从 mapreduce.reduce.shuffle.input 消耗的内存限制的最大百分比.buffer.percent.

  • mapreduce.reduce.shuffle.merge.percent 是启动内存中合并的使用阈值,表示为总内存的百分比(mapreduce .reduce.shuffle.input.buffer.percent) 分配用于存储内存映射输出。

  • 但是 Hadoop-2.6 有一个限制,即 mapreduce.reduce.shuffle.merge.percent 应该大于 mapreduce.reduce.shuffle。内存.limit.percent。这意味着单个洗牌具有相同类型的所有键,否则此限制的目的是什么,这三者之间的关系是什么?

最佳答案

我想分享一下我对这些属性的理解,希望对您有所帮助。如果有任何问题,请告诉我。

mapreduce.reduce.shuffle.input.buffer.percent 说明要分配给循环缓冲区的 reducer 堆内存的百分比,用于存储从多个映射器复制的中间输出。

mapreduce.reduce.shuffle.memory.limit.percent 说明单个洗牌(从单个 Map 任务复制的输出)应该占用的上述内存缓冲区的最大百分比。超过此大小的 shuffle 不会复制到内存缓冲区,而是直接写入 reducer 的磁盘。

mapreduce.reduce.shuffle.merge.percent 说明内存合并线程将运行以将内存缓冲区上的可用洗牌内容合并到单个文件中并立即运行的阈值百分比将合并后的文件溢出到磁盘中。

很明显,内存合并线程应该要求内存缓冲区中至少有 2 个 shuffle 文件才能启动合并。所以在任何时候 mapreduce.reduce.shuffle.merge.percent 都应该高于内存中由 mapreduce.reduce.shuffle.memory.limit.percent 控制的任何单个洗牌文件> 属性,它规定在合并过程的缓冲区中至少应该有一个以上的洗牌文件。

关于java - mapreduce.reduce.shuffle.memory.limit.percent、mapreduce.reduce.shuffle.input.buffer.percent 和 mapreduce.reduce.shuffle.merge.percent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29874766/

有关java - mapreduce.reduce.shuffle.memory.limit.percent、mapreduce.reduce.shuffle.input.buffer.percent 和 mapreduce.reduce.shuffle.merge.percent的更多相关文章

  1. ruby-on-rails - 在默认方法参数中使用 .reverse_merge 或 .merge - 2

    两者都可以defsetup(options={})options.reverse_merge:size=>25,:velocity=>10end和defsetup(options={}){:size=>25,:velocity=>10}.merge(options)end在方法的参数中分配默认值。问题是:哪个更好?您更愿意使用哪一个?在性能、代码可读性或其他方面有什么不同吗?编辑:我无意中添加了bang(!)...并不是要询问nobang方法与bang方法之间的区别 最佳答案 我倾向于使用reverse_merge方法:option

  2. ruby-on-rails - 事件记录 : Select max of limit - 2

    我正在尝试将以下SQL查询转换为ActiveRecord,它正在融化我的大脑。deletefromtablewhereid有什么想法吗?我想做的是限制表中的行数。所以,我想删除少于最近10个条目的所有内容。编辑:通过结合以下几个答案找到了解决方案。Temperature.where('id这给我留下了最新的10个条目。 最佳答案 从您的SQL来看,您似乎想要从表中删除前10条记录。我相信到目前为止的大多数答案都会如此。这里有两个额外的选择:基于MurifoX的版本:Table.where(:id=>Table.order(:id).

  3. ruby-on-rails - 在 Ruby 或 Rails 中,hash.merge({ :order => 'asc' }) can return a new hash with a new key. 什么可以返回带有已删除键的新散列? - 2

    在Ruby(或Rails)中,我们可以做到new_params=params.merge({:order=>'asc'})现在new_params是一个带有添加键:order的散列。但是是否有一行可以返回带有已删除key的散列?线路new_params=params.delete(:order)不会工作,因为delete方法返回值,仅此而已。我们必须分3步完成吗?tmp_params=paramstmp_params.delete(:order)returntmp_params有没有更好的方法?因为我想做一个new_params=(params[:order].blank?||para

  4. ruby - Formtastic,拥有 :as input type - 2

    如何将自己的字段类型添加到formtastic中?例如,我需要一个自定义的日期时间输入,我想要这样的东西::my_date%>这显然是行不通的,因为formtastic不知道:my_date(只有:boolean、:string、:datetime等等...)但是我怎样才能添加额外的输入类型呢? 最佳答案 您需要添加自定义输入法:classMyCustomFormtasticFormBuilder这非常适合新的HTML5输入类型。你可以这样使用它:MyCustomFormtasticFormBuilderdo|f|%>:my_dat

  5. ruby Mechanize : multiline value for textarea gets merged - 2

    编辑:经过进一步测试,问题似乎是站点特定的,理论上应该可以正常工作。本应位于多行的Textarea值正在一行中全部提交。textarea_values="value1\nvalue2"form=page.form_with(:id=>'form_id_here')form['my_textarea']=textarea_valuessubmit=form.button_with(:value=>'Submit')form.click_button(submit)提交的值是value1\nvalue2而不是预期的多行。有没有我可以尝试的另一种添加表单值的方法?

  6. ruby - 用 map reduce 解决一个问题 - 2

    我想在ruby​​中模拟我对像hadoop这样的系统的map和reduce函数的实现,以验证这个想法至少有效。我有以下问题。我有两个元素列表:List13-A4-B5-C7-D8-FList22-A8-B6-C9-D4-E我需要构建一个公共(public)列表,其中包括与两个列表中公共(public)字母关联的数字总和:commonList5-A12-B11-C16-D我想用map和reduce操作制作一个ruby​​脚本来解决这个问题。我不确定如何解决这个问题或在ruby​​脚本中模拟这个问题要遵循什么程序。感谢任何帮助。 最佳答案

  7. ruby - 与 block 一起使用时,ruby Hash#merge 的行为是什么 - 2

    它似乎没有被记录很多:hsh.merge(other_hash){|key,oldval,newval|block}→a_hashhttp://ruby-doc.org/core/classes/Hash.html#M002880 最佳答案 正如预期的那样,生成的散列将包含一个block返回的值,该block针对存在于两个正在合并的散列中的每个键:>>h1={:a=>3,:b=>5,:c=>6}=>{:a=>3,:b=>5,:c=>6}>>h2={:a=>4,:b=>7,:d=>8}=>{:a=>4,:b=>7,:d=>8}>>h1

  8. ruby-on-rails - Rails - 如何 'merge' 或将值附加到 URL 中的数组? - 2

    我试图在URL中传递一个数组,它工作正常,但我想知道我如何才能插入或删除某些值?例如,我有一个看起来像这样的链接:http://localhost:3000/pins?genre_ids[]=1,2,3我想构建一组链接,可以从这个URL数组中插入或删除数字。目前,我拥有的每个链接都只是完全更改了genre_ids[]值,我想在其中添加或根据需要删除。这是我建立链接的代码...[genre[0].id]}))%>我认为我所追求的是params.merge()但对于params[:genre_ids]的值希望你能明白我的意思?如果当前URL读取/pins?genre_ids[]=1,2,3

  9. ruby-on-rails - `merge' :string <%= form_for %> helper 的未定义方法 '####' - 2

    我有一个表单,在发布时呈现另一个表单。我想做的是将参数从第一种形式传递到第二种形式的某些隐藏字段中。第二种形式是使用form_for形式助手,而我试图做的是让它接受传递给它的参数。表单如下所示:"btnbtn-largebtn-success"%>当我做类似的事情时这个Action给我错误:NoMethodErrorinFind_numbers#createShowingC:/Sites/dentist/app/views/phones/new.html.erbwhereline#17raised:undefinedmethod`merge'for"1231231234":String

  10. ruby - update(other_hash) 和 merge(other_hash) 的区别 - 2

    更新代码:irb(main):001:0>h1={"a"=>100,"b"=>200}=>{"a"=>100,"b"=>200}irb(main):002:0>h2={"b"=>254,"c"=>300}=>{"b"=>254,"c"=>300}irb(main):003:0>h1.update(h2)=>{"a"=>100,"b"=>254,"c"=>300}合并代码:irb(main):001:0>h1={"a"=>100,"b"=>200}=>{"a"=>100,"b"=>200}irb(main):002:0>h2={"b"=>254,"c"=>300}=>{"b"=>254,

随机推荐