Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。作为一种分布式数据和计算的框架,Hadoop很擅长存储大量的半结构化的数据集。但是只擅长处理“线下”数据。
HDFS (Hadoop Distributed File System): 存储系统,主要支持以流(stream)的形式访问写入的大型文件。
MapReduce:编程模型,将多数据来源整合读写问题进行抽象,转换为计算一个由成对键、值(key,value)组成的数据集。计算由两部分组成:Map和Reduce。
HBase(Hadoop Database):Hadoop对随机读写并不有好,而HBase就是为了解决这个问题。HBase是一个可伸缩的(scalable)分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。该技术来源于 Fay Chang 所撰写的Google论文“Bigtable: A Distributed Storage System for Structured Data”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。
Hive:Hive是基于Hadoop的一个数据仓库构架,可以将结构化的数据文件映射为一张数据库表,通过提供简单的SQL查询功能(HQL),将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。,最佳使用场合是大数据集的批处理作业,例如,网络日志分析。但是,Hive 构建在基于静态批处理的Hadoop 之上,Hadoop 通常都有较高的延迟并且在作业提交和调度的时候需要大量的开销。因此,Hive 并不适合那些需要低延迟的应用(例如,联机事务处理(OLTP))。
Hive和Hbase的区别是:Hive是为了简化编写MapReduce程序而生的,使用MapReduce做过数据分析的人都知道,很多分析程序除业务逻辑不同外,程序流程基本一样。在这种情况下,就需要Hive这样的用戶编程接口。Hive本身不存储和计算数据,它完全依赖于HDFS和MapReduce,Hive中的表纯逻辑,就是些表的定义等,也就是表的元数据。使用SQL实现Hive是因为SQL大家都熟悉,转换成本低,类似作用的Pig就不是SQL。所以说,Hive是面向数据分析的;HBase为查询而生的,它通过组织起节点內所有机器的內存,提供一個超大的內存Hash表,它需要组织磁盘和內存中的数据结构,而Hive是不做这个的,表在HBase中是物理表,而不是逻辑表,搜索引擎使用它來存储索引,以满足查询的实时性需求。因此,HBase是面向数据捕获的。直白的说,Hive可以认为是Map-Reduce的一个包装。**Hive的意义就是把好写的hive的sql转换为复杂难写的MapReduce程序。而**Hbase可以认为是HDFS的一个包装。他的本质是数据存储,是个NoSql数据库;Hbase部署于HDFS之上,并且克服了HDFS在随机读写方面的缺点。
Pig:是一种数据流语言(dataflow language),辅助处理海量数据。主要由两部分构成: PigInterpreter 和 PigLatin。PigLatin负责查询。
Mahout:一个数据挖掘库,它包含了最流行的一些数据挖据算法,并且以MapReduce模型来实现他们。
Apache Storm:Storm是一个任务并行连续计算引擎。 Storm本身并不典型在Hadoop集群上运行,它使用Apache ZooKeeper的和自己的主/从工作进程,协调拓扑,主机和工作者状态,保证信息的语义。无论如何, Storm必定还是可以从HDFS文件消费或者从文件写入到HDFS。
Apache Spark:Spark是一个数据并行通用批量处理引擎。Spark比传统Hadoop MapReduce的更能干。Apache Spark有其流API项目,该项目通过短间隔批次允许连续处理。Apache Spark本身并不需要Hadoop操作。但是,它的数据并行模式,需要稳定的数据优化使用共享文件系统。
参考:
1. http://blog.youkuaiyun.com/yangzhenping/article/details/41826163
2. Hadoop权威指南—中文版
3. 百度百科——Hive
4. Hive与HBase的区别
5. Bigtable: ADistributedStorageSystemforStructuredData
6. The google file system
7. MapReduce: Simplified Data Processing on Large Clusters
8. http://stackoverflow.com/questions/13911501/when-to-use-hadoop-hbase-hive-and-pig
9. http://smartdatacollective.com/mtariq/120791/hadoop-toolbox-when-use-what