因此通常对于20节点集群提交作业来处理3GB(200个分裂)的数据大约需要30秒,实际执行大约需要1m。 我想了解工作提交过程中的瓶颈是什么,并了解下一个报价
每MapReduce开销很重要:开始/结束MapReduce作业成本时间
我知道一些过程: 数据分裂 2. jar文件共享
答案 0 :(得分:13)
有关HDFS和M / R的一些有助于理解这种延迟的事情:
如果要处理1000行内容的文件,那么最好使用普通的文件读取和处理程序。在分布式系统上生成进程的Hadoop基础结构不会产生任何好处,但只会导致定位包含相关数据块的数据节点,启动处理程序,跟踪和收集结果的额外开销。
现在将其扩展到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个映射器。这是一个真正的浪费,因为与处理小型文件所花费的时间相比,每个程序开销都很重要。
答案 1 :(得分:5)
据我所知,没有单一的瓶颈会导致作业延迟;如果有的话,它很久以前就已经解决了。
有许多步骤需要时间,并且有充分理由说明这个过程很慢。我会尝试列出它们并估计我可以在哪里:
答案 2 :(得分:0)
我已经看到了类似的问题,我可以通过以下步骤说明要解决的问题:
尝试使用数据节点和名称节点:
尝试安装较低版本的hadoop(hadoop 2.5.2),该版本在两种情况下工作,并且在命中和试用中都有效。