在“大数据”时代数据存储和处理的事实标准Hadoop生态系统中,大多数人把它认为是数据仓库DW在大数据领域替代品,更多的人也是把Hadoop用到以数据挖掘和机器学习为代表的分析型应用的场景中。但是我感觉从整个生态系统中还是能看到数据库DB的影子的。下面这张图是Hadoop生态系统的主要组件,从架构上看是面向分析型应用的。但是其中的HBase已经在一些大公司用在实时在线数据的存储中了(Facebook的统一消息系统和Apple的iCloud)。HBase作为一个在线数据存储和访问的数据库主要的几个问题是:底层HDFS的HA还没有稳定下来;没有一个保证数据完整性的机制(例如事务或者类似的机制);没有一个统一的访问接口(类似SQL)。相信这些问题解决了,以HBase为代表的NoSQL数据库在在线数据存储访问方面会更进一步。
而在分析型应用市场,Hadoop可谓所向披靡,已经成为大数据分析的事实标准。目前用的最多的就是把RDBMS里面的关系型数据导入HDFS中,然后用MapReduce进行分析(淘宝会把用户的交易数据从RDBMS中导入HDFS上然后用MR进行分析和挖掘);或者把日志数据放到HDFS用MapReduce进行分析(百度的搜索日志分析)。但是目前对于这些半结构化或者非结构化数据的元数据管理还不太成熟和统一,图中的HCatalog就是为了完善这一部分功能而开发的,有了它Hive和Pig的使用会更加便捷。另外一种就是在HBase中产生的数据,直接用基于HBase的MapReduce进行处理和分析,这个就有点像Greenplum或者Teradata做的基于RDBMS的分布式数据库产品了。由于基于Hadoop的分析平台有很多机器学习的计算需求,而很多机器学习的算法是计算密集型或者是计算数据双密集型的,所以基于Hadoop的分析平台也有计算密集型的需求。同时由于MapReduce是为了离线分析而设计的,那么对于实时分析来说没有优势。而有些数据的时效性是很重要的,分析的实时性就很关键,所以我们还需要实时计算引擎。
基于上述需求,在后面的Hadoop的版本YARN中会把MapReduce做成统一的资源管理和任务调度层,会支持OpenMPI,Storm,S4,Spark,MapReduce等多种计算模型,横跨实时数据处理,离线数据处理,计算密集型和数据密集型应用。到那个时候整个Hadoop生态系统就是真正意义的统一数据存储和处理平台了。