Hadoop 这个名词比较有意思,通常我们聊到 Hadoop 根据场景会有有狭义和广义两种理解,
狭义上,Hadoop 指的是 Hadoop 项目,这个项目中又包含三大块,分别为存储、调度和计算:
广义上讲,有时候说 Hadoop 聊的是整个 Hadoop 生态圈里的东西,包括 Hive、HBase、Spark 等大数据框架。当然,我猜测题主这里指的是 Hadoop 项目。
我们先从开源项目网站中看一下三者分别是什么(摘自项目网站的介绍)
- Hadoop : The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models. It is designed to scale up from single servers to thousands of machines, each offering local computation and storage. Rather than rely on hardware to deliver high-availability, the library itself is designed to detect and handle failures at the application layer, so delivering a highly-available service on top of a cluster of computers, each of which may be prone to failures.
- HDFS: The Hadoop Distributed File System (HDFS) is a distributed file system designed to run on commodity hardware.
- YARN: The fundamental idea of YARN is to split up the functionalities of resource management and job scheduling/monitoring into separate daemons.
- Hadoop MapReduce is a software framework for easily writing applications which process vast amounts of data (multi-terabyte data-sets) in-parallel on large clusters (thousands of nodes) of commodity hardware in a reliable, fault-tolerant manner.
这里可以看到,Hadoop 项目主要强调了三个方面,分别为 Programming Model,Scalability 和 High-Availability。而三个子项目中,HDFS 提供了分布式存储,YARN 提供了集群中大规模多任务的调度,MapReduce 提供了分布式的编程模型库。
- Hive : The Apache Hive ™ data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage using SQL.
Hive 利用 SQL 的形式支持在分布式存储中数据集的读写操作,这里提到了分布式存储,并没有涉及调度和计算,是因为 Hive 的计算引擎是可插拔的,完全可以使用 Tez、Spark、Flink 等计算引擎和对应的集群进行计算和调度。而这里的分布式存储,事实上,工业界使用 Hive 的企业几乎都是使用的是 Hadoop 项目中的 HDFS。
- HBase : Apache HBase™ is the Hadoop database, a distributed, scalable, big data store. ... Apache HBase provides Bigtable-like capabilities on top of Hadoop and HDFS.
HBase 这里就写的简单明了,直接讲明了是在 HDFS 之上的一个非关系型数据库。而 HBase 和 Hive 相比从介绍中也可直接看出,HBase 的定位是非关系型数据库,所以更加关注于数据库侧的一些内容,比如 CRUD、索引构建、文件格式管理等。而 Hive 显得就相对简单,对管理的文件几乎没有任何的侵入,所以新增任何一种文件格式,只需要在 Hive 中新增对应的 Format 就可以兼容,而导入 HBase 必须通过代码的清洗转换为 HFile,Hive 的简单便利性能够让用户更快的上手使用,但同时将过多的脏活累活直接交给了用户(比如文件格式的校验等)。 |