【摘要】:表9-1 Hadoop MapReduce与Spark MapReduce对同一资源测试结果对比结果表的第一行和第二行,Spark运行效率和成本相对于MapReduce方式的减少非常明显,其中,DAG模型减少了70%的HDFS读写及cache重复数据的读取,这两个优化既能减少作业运行时间又能降低成本;而资源调度次数的减少能提高作业的运行效率。对比结果表的第二行和第三行,增加一倍的Executor数目,作业运行时间减少约30%,成本增加约25%。
在测试中使用相同规模的资源,其中MapReduce方式包含200个map和100个reduce,每个map和reduce配置4GB的内存;由于Spark不再需要reduce资源,而MapReduce的主要逻辑和资源消耗在map端,因此使用200和400个Executor做测试,每个Executor包含4GB内存。测试结果如表9-1所示,其中输入记录约为38亿条。
表9-1 Hadoop MapReduce与Spark MapReduce对同一资源测试结果
(www.xing528.com)
对比结果表的第一行和第二行,Spark运行效率和成本相对于MapReduce方式的减少非常明显,其中,DAG模型减少了70%的HDFS读写及cache重复数据的读取,这两个优化既能减少作业运行时间又能降低成本;而资源调度次数的减少能提高作业的运行效率。
对比结果表的第二行和第三行,增加一倍的Executor数目,作业运行时间减少约30%,成本增加约25%。可以从这个结果中看到,增加Executor资源能有效地减少作业的运行时间,但并没有做到完全线性增加。这是因为每个Task的运行时间并不是完全相等的,例如某些Task处理的数据量比其他Task多;这可能导致Stage的最后时刻某些Task未结束而无法启动下一个Stage,另一方面作业是一直占有Executor的,这时候会出现一些Executor空闲的状况,于是导致了成本的增加。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。