我正在为我的硕士论文hadoop1.1.2研究hadoop。
我正在研究一种新的算法,用于推测性任务,因此在第一步中,我尝试在代码中应用一些更改。
遗憾的是,同样使用2节点,我不能引起推测执行。我在defaulttaskselector类(这是用于推测性任务的类)中编写了一些代码作为日志,但是在初始化之后,fairscheduler类从未调用过这个类。
我在配置文件(mapred site…xml)中也激活了“推测”选项,但什么都没有。
所以问题是:我怎样才能引起/迫使投机性执行?
当做
我正在为我的硕士论文hadoop1.1.2研究hadoop。
我正在研究一种新的算法,用于推测性任务,因此在第一步中,我尝试在代码中应用一些更改。
遗憾的是,同样使用2节点,我不能引起推测执行。我在defaulttaskselector类(这是用于推测性任务的类)中编写了一些代码作为日志,但是在初始化之后,fairscheduler类从未调用过这个类。
我在配置文件(mapred site…xml)中也激活了“推测”选项,但什么都没有。
所以问题是:我怎样才能引起/迫使投机性执行?
当做
2条答案
按热度按时间r1zhe5dt1#
推测性执行通常发生在多个Map器运行时,其中一个或多个Map器滞后于其他Map器。实现这一目标的好方法:
设置Hive
设置分区表
确保数据足够大,可以运行许多Map程序。这意味着:至少有几十个hdfs数据块
将数据输入到分区中:其中一个分区的数据高度倾斜,比其他分区多得多。
从表中运行select*
现在您可能会看到投机性执行正在运行。
如果没有,请随时回来。我可以提供进一步的建议(例如,提出一些可能导致se的中等复杂的查询)
编辑
Hive对你来说可能有点大。但您也可以将该策略的“精神”应用于常规hdfs文件。编写一个带有自定义分区器的map/reduce程序,该分区器是故意倾斜的:即,它会导致单个Map器执行过大比例的工作。
记住要有几十个hdfs块(至少)来给任务跟踪器一些体面的工作量。
rqmkfv5c2#
您应该能够使用setmaps投机性执行(boolean)和setreducespeculativeexecution(boolean)这两个方法引起投机性执行,这两个方法可以使用作业mapreduce作业配置指定。