所以通常对于20个节点集群提交作业处理3GB(200个分裂)的数据需要约30秒,实际执行约1m。 我想了解的是在作业提交过程中的瓶颈,并了解未来报价为什么提交工作到mapreduce需要这么多时间在一般?
每MapReduce的开销是显著:开始/结束MapReduce工作耗费时间
有些过程我知道: 1.数据分割 2. jar文件共享
所以通常对于20个节点集群提交作业处理3GB(200个分裂)的数据需要约30秒,实际执行约1m。 我想了解的是在作业提交过程中的瓶颈,并了解未来报价为什么提交工作到mapreduce需要这么多时间在一般?
每MapReduce的开销是显著:开始/结束MapReduce工作耗费时间
有些过程我知道: 1.数据分割 2. jar文件共享
有几件事情要了解有关HDFS和M/R,有助于理解这种延迟:
如果您要处理1000行内容的文件,那么您最好使用普通的文件读取和处理程序。 Hadoop基础架构在分布式系统上产生一个进程不会产生任何好处,但只会导致额外的开销,包括定位包含相关数据块的datanode,启动其上的处理程序,跟踪和收集结果。
现在将其扩展到100个Peta字节的数据,与处理它们所需的时间相比,这些开销看起来完全不重要。处理器(映射器和缩减器)的并行化将在这里显示出优势。
因此,在分析您的M/R的性能之前,您应该先考虑对您的群集进行基准测试,以便更好地了解这些开销。
在集群上执行无操作map-reduce程序需要多长时间?
使用MRBench为了这个目的:
运行此程序,请尝试以下(检查最新版本的正确方法:
hadoop jar /usr/lib/hadoop-0.20/hadoop-test.jar mrbench -numRuns 50
令人惊讶的对我们的开发集群之一是是22秒。
另一个问题是文件大小。
如果文件大小小于HDFS块大小,则Map/Reduce程序会产生大量开销。 Hadoop通常会尝试为每个块产生一个映射器。这意味着如果您有30个5KB文件,那么即使文件大小很小,Hadoop最终可能每个块最终产生30个映射器。这是一个真正的浪费,因为与处理小型文件相比,每个程序开销都很大。
当太多的小文件出现时,请看[小文件问题](http://www.cloudera.com/blog/2009/02/the-small-files-problem/)文章。 – 2012-07-07 03:30:24
是否可以将我自己的mapreduce作业jar文件用于mrbench? – 2015-06-18 08:36:20
据我所知,没有一个瓶颈导致作业运行延迟;如果有的话,它会在很久以前解决。
有很多步骤需要时间,并且有些原因会导致过程缓慢。我会尝试列出它们并估计我可以在哪里:
我也有类似的问题,我能说出该解决方案在下面的步骤被打破:
尝试与数据节点和节点名称:
尝试安装在两种情况下起作用的hadoop(hadoop 2.5.2)的较低版本,它在hit和trial中工作。
有多少文件组成3GB的数据? jobtracker使用多少地图任务来运行这项工作? – 2012-07-06 21:40:21
@ yura:30秒或30分钟? – FourOfAKind 2012-07-06 23:17:11
30秒和约300个映射器即分裂 – yura 2012-07-07 00:18:32