目前,在数据处理上的一个挑战是,我们输入数据的速度往往比我们处理数据的速度快得多。在大数据的环境下,随着数据量的继续增长,以及相应的需要更多的复杂的数据处理,这个问题正变得更加明显。
帮助批处理
Hadoop的目的是通过以下几种方式应对这一挑战:
1. 使用一个分布式的文件系统:这使我们能够分散负载,并根据需要壮大我们的系统。
2. 优化写入速度:为了能够快速写入设计的Hadoop架构,需要在第一次登录时写入并处理。这可让写入速度相当快。
3. 使用批处理(Map/Reduce)来用处理速度平衡数据馈送的速度
批处理的挑战
批量处理所面临的挑战是它假定数据量突然增加。如果我们的数据在一个连续的基础上稳定到来,那么假设将导致整个批量处理背后的架构开始崩溃。
如果我们增加了批处理窗口,结果是在数据到来的这段时间里的更高的延迟,直到我们真正得到它并纳入我们的报告和见解里。此外,在许多系统中,每天进行的批处理窗口时间是有限的。通常情况下,假设大部分的处理可以在非高峰时段来进行,但是,体积变大,处理的数据所花费的时间变长,直到有一天它达到时间极限,然后我们面临处理一个不断增长的积压的问题。此外,如果我们的处理过程发生失败,我们可能没有足够的时间来重新处理。
通过基于流的处理来加快速度
基于流的处理概念是相当简单的。我们可以在数据进来的同时处理它,而不是先记录再处理。
用生产线这个很好的比喻来解释其中的差别。想想一家汽车制造线:一种方法是把所有的部件放在一起,然后一件一件地组装;另一种方法是让制造商包装各个部件,并只发送包装好的部件到制造线上。哪种方法更快?
Hadoop批处理系统和制造业的生产线是一样的道理。
在制造业中,即使我们在制造商那里预先包装零部件,我们仍然需要把所有的部件一起组装起来。同样的道理,基于流的处理并不意味着要取代我们的Hadoop系统,而是减少系统需要处理的大量工作,并让进入Hadoop的过程变得更容易,从而让数据处理更快。