假设我有 15 个数据 block 和两个集群。第一个集群有 5 个节点,复制因子为 1,而第二个集群的复制因子为 3。如果我运行我的映射作业,我应该期望映射作业的性能或执行时间有任何变化吗?
换句话说,复制如何影响集群上映射器的性能?
最佳答案
当 JobTracker 将作业分配给 HDFS 上的 TaskTracker 时,作业会根据数据的位置分配给特定节点(优先选择相同的节点,然后是相同的网络交换机/帧)。通过具有不同的复制因子,您限制了 JobTracker 分配数据本地节点的能力(JobTracker 仍将分配任务节点,但没有本地化的好处)。效果是限制数据本地的 TaskTracker 节点的数量(任务节点上的数据,或同一交换帧上的数据),从而影响任务工作的性能(减少并行化)。
您的较小集群可能只有一个交换机,因此数据在网络/框架中是本地的,因此您可能遇到的唯一瓶颈是数据从一个 TaskTracker 传输到另一个,因为 JobTracker 是可能会将作业分配给所有可用的 TaskTracker。
但是对于更大的 hadoop 集群,复制因子 = 1 会限制数据本地的 TaskTracker 节点数量,从而能够有效地操作您的数据。
有几篇论文支持数据局部性,http://web.eecs.umich.edu/~michjc/papers/tandon_hpdic_minimizeRemoteAccess.pdf ,您引用的这篇论文也支持数据局部性,http://assured-cloud-computing.illinois.edu/sites/default/files/PID1974767.pdf ,还有这个,http://www.eng.auburn.edu/~xqin/pubs/hcw10.pdf (测试了一个 5 节点集群,与 OP 相同)。
本文引用了数据局部性的显着优势,http://grids.ucs.indiana.edu/ptliupages/publications/InvestigationDataLocalityInMapReduce_CCGrid12_Submitted.pdf ,并观察到复制因子的增加会提供更好的局部性。
请注意,本文声称网络吞吐量和本地磁盘访问之间的差异很小 (8%),http://www.cs.berkeley.edu/~ganesha/disk-irrelevant_hotos2011.pdf ,但报告了本地内存访问与磁盘或网络访问之间的性能差异数量级。此外,该论文引用了大部分工作 (64%) 发现他们的数据缓存在内存中 “这在很大程度上是由于工作负载的重尾性质”,因为大多数工作 “仅访问一小部分块”。
关于hadoop - 映射集群上的作业性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19372303/
我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问
我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新rubygems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems
我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que
1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模
我有一个.pfx格式的证书,我需要使用ruby提取公共(public)、私有(private)和CA证书。使用shell我可以这样做:#ExtractPublicKey(askforpassword)opensslpkcs12-infile.pfx-outfile_public.pem-clcerts-nokeys#ExtractCertificateAuthorityKey(askforpassword)opensslpkcs12-infile.pfx-outfile_ca.pem-cacerts-nokeys#ExtractPrivateKey(askforpassword)o
是否可以在所有delayed_job任务之前运行一个方法?基本上,我们试图确保每个运行delayed_job的服务器都有我们代码的最新实例,所以我们想运行一个方法来在每个作业运行之前检查它。(我们已经有了“check”方法并在别处使用它。问题只是关于如何从delayed_job中调用它。) 最佳答案 现在有一种官方方法可以通过插件来做到这一点。这篇博文通过示例清楚地描述了如何执行此操作http://www.salsify.com/blog/delayed-jobs-callbacks-and-hooks-in-rails(本文中描述
我了解instance_eval和class_eval之间的基本区别。我在玩弄时发现的是一些涉及attr_accessor的奇怪东西。这是一个例子:A=Class.newA.class_eval{attr_accessor:x}a=A.newa.x="x"a.x=>"x"#...expectedA.instance_eval{attr_accessor:y}A.y="y"=>NoMethodError:undefinedmethod`y='forA:Classa.y="y"=>"y"#WHATTT?这是怎么回事:instance_eval没有访问我们的A类(对象)然后它实际上将它添加到
我有一个集合选择:此方法的单选按钮是什么?谢谢 最佳答案 Rails3中没有这样的助手。在Rails4中,它是collection_radio_buttons. 关于ruby-on-rails-rails上的ruby:radiobuttonsforcollectionselect,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/18525986/
如果names为nil,则以下中断。我怎样才能让这个map只有在它不是nil时才执行?self.topics=names.split(",").mapdo|n|Topic.where(name:n.strip).first_or_create!end 最佳答案 其他几个选项:选项1(在其上执行map时检查split的结果):names_list=names.try(:split,",")self.topics=names_list.mapdo|n|Topic.where(name:n.strip).first_or_create!e
我正在使用Ruby解决一些ProjectEuler问题,特别是这里我要讨论的问题25(Fibonacci数列中包含1000位数字的第一项的索引是多少?)。起初,我使用的是Ruby2.2.3,我将问题编码为:number=3a=1b=2whileb.to_s.length但后来我发现2.4.2版本有一个名为digits的方法,这正是我需要的。我转换为代码:whileb.digits.length当我比较这两种方法时,digits慢得多。时间./025/problem025.rb0.13s用户0.02s系统80%cpu0.190总计./025/problem025.rb2.19s用户0.0