Hadoop 中通过拆分任务到多个节点运行来实现并行计算,但某些节点运行较慢会拖慢整个任务的运行,Hadoop 采用什么机制应对这个情况
Speculative Execution 推测执行
(1)推测执行(Speculative Execution)是指在分布式集群环境下,因为程序 BUG,负载不均衡或者资源分布不均等原因,造成同一个 job 的多个 task 运行速度不一致,有的 task 运行速度明显慢于其他 task(比如:一个 job 的某个 task 进度只有 10%,而其他所有 task 已经运行完毕),则这些 task 拖慢了作业的整体执行进度,为了避免这种情况发生,Hadoop 会为该 task 启动备份任务,让该 speculativetask 与原始 task 同时处理一份数据,哪个先运行完,则将谁的结果作为最终结果
(2)推测执行优化机制采用了典型的以空间换时间的优化策略,它同时启动多个相同 task(备份任务)处理相同的数据块,哪个完成的早,则采用哪个 task 的结果,这样可防止拖后腿 Task 任务出现,进而提高作业计算速度,但是,这样却会占用更多的资源,在集群资源紧缺的情况下,设计合理的推测执行机制可在多用少量资源情况下,减少大作业的计算时间。