我正在研究Hadoop的硕士论文,Hadoop 1.1.2。
我正在研究一种新的推测任务算法,因此在第一步中我尝试在代码中应用一些更改。
可悲的是,同样使用2节点,我不能引起推测性执行。我在类DefaultTaskSelector中编写了一些代码行作为Log(这是推测任务的类),但是这个类在初始化之后永远不会被FairScheduler类调用。我也在配置文件中激活了“推测”选项(mapred-site ... xml),但没有。
所以问题是:我如何导致/强制推测执行?
问候
答案 0 :(得分:0)
当有多个映射器正在运行且其中一个或多个映射器落后于其他映射器时,通常会发生推测执行。实现目标的好方法:
现在你可能会看到推测执行。
如果没有,请随时回到这里。我可以提供进一步的建议(例如,制作一些可能导致SE的中等复杂查询)
修改强>
Hive对你来说可能有点紧张。但您也可以将策略的“精神”应用于常规HDFS文件。使用故意偏斜的自定义分区程序编写map / reduce程序:即它使单个映射器执行大量工作。
记住要有几十个hdfs块(至少)给任务跟踪器一些相当大的工作量来咀嚼。
答案 1 :(得分:0)
您应该能够使用setMapSpeculativeExecution(boolean)和setReduceSpeculativeExecution(boolean)这两种方法进行推测性执行,您可以使用Job,MapReduce job configuration来指定。