@[toc]


1. hadoop

它是一个分布式计算 + 分布式文件系统,前者其实就是 MapReduce,后者是 HDFS 。后者可以独立运行,前者可以选择性使用,也可以不使用


2. hive

通俗的说是一个数据仓库,仓库中的数据是被 hdfs 管理的数据文件,它支持类似 sql 语句的功能,你可以通过该语句完成分布式环境下的计算功能,hive 会把语句转换成 MapReduce,然后交给 hadoop 执行。这里的计算,仅限于查找和分析,而不是更新、增加和删除。

它的优势是对历史数据进行处理,用时下流行的说法是离线计算,因为它的底层是 MapReduce,MapReduce 在实时计算上性能很差。它的做法是把数据文件加载进来作为一个 hive 表(或者外部表),让你觉得你的 sql 操作的是传统的表。


3. hbase

通俗的说,hbase 的作用类似于数据库,传统数据库管理的是集中的本地数据文件,而hbase 基于 hdfs 实现对分布式数据文件的管理,比如增删改查。也就是说,hbase 只是利用 hadoop 的 hdfs 帮助其管理数据的持久化文件(HFile),它跟 MapReduce 没任何关系。

hbase 的优势在于实时计算,所有实时数据都直接存入 hbase 中,客户端通过 API 直接访问 hbase,实现实时计算。由于它使用的是 nosql,或者说是列式结构,从而提高了查找性能,使其能运用于大数据场景,这是它跟 MapReduce 的区别。


总结

hadoop 是 hive 和 hbase 的基础,hive 依赖 hadoop,而 hbase 仅依赖 hadoop 的 hdfs 模块。

hive 适用于离线数据的分析,操作的是通用格式的(如通用的日志文件)、被 hadoop 管理的数据文件,它支持类 sql,比编写 MapReduce 的 java 代码来的更加方便,它的定位是数据仓库,存储和分析历史数据。

hbase 适用于实时计算,采用列式结构的 nosql,操作的是自己生成的特殊格式的 HFile、被 hadoop 管理的数据文件,它的定位是数据库,或者叫 DBMS。

hive 可以直接操作 hdfs 中的文件作为它的表的数据,也可以使用 hbase 数据库作为它的表。

感谢    赞同    分享    收藏    关注    反对    举报    ...