MapReduce根本上是一个批处理系统,它并不适用于交互式分析。你不可能在几秒
或更少的时间内得到查询结果。典型的查询需要耗时几分钟甚至更长,所以它最好是
线下使用,不需要一个人坐在那里等循环处理的结果。
尽管如此,由于它的独创性,HADOOP比批处理更好。其实,HADOOP有时候是指
一个大的项目生态系统,而不仅仅指HDFS和MapReduce,它们都在分布式计算和大数据
处理的基础设施的庇护下。它们都由APACHE软件基金会管理,它为开源社区提供支持,
包括一个原始的HTTP服务器,并由它得到了名字(appache http server)。
第一个提供线上访问的组件是HBase,一个键-值存储,使用HDFS作为底层存储。HBase
同时提供了读/写特定行和大批量数据读/写,使它成为一个创建应用程序的好的解决方案。
HADOOP的新的处理模式的真正推动者是在HADOOP 2中引入了YARN(Yet Another Resource Negotiator)。
YARN是一个集群资源管理系统,它可以让任何分布式程序(不仅仅是MapReduce)运行在
HADOOP的集群上。
最近几年,与HADOOP相关的各种处理模式已很繁荣。例如:
- 交互式SQL
摒弃MapReduce而使用一个分布式查询引擎(如Impala)或容器复用(如Tez上的Hive),
在HADOOP上使用SQL查询大数据时可以达到低延迟。
- 迭代处理
许多算法--比如机器学习中的算法--都是迭代的,所以在内存中存储中间数据,与每次迭代都从
硬盘上加载相比是更有效的。MapReduce不允许这样做,但是可以直接使用Spark来做这件事。
- 流处理
流处理系统如Storm,Spark Streaming,或Samza,使实时计算分布式的大数据流成为可能,并返回
处理结果给HADOOP存储或其它的外部系统。
- 查询
Solr查询平台可以运行在HADOOP集群上,他们添加文档索引在HDFS上,根据索引提供查询服务。
尽管在HADOOP上出现了不同的处理框架,但是MapReduce在批处理领域还是占有一席之地,理解它
的工作原理是非常有用的,它引入了一些被广泛接受的观点(像输入格式化,或数据集合拆分)。