54down 发表于 2023-10-13 00:22:31

请问Hadoop、Hbase、Hive三者有什么关系?

请问Hadoop、Hbase、Hive三者有什么关系?

fta5925 发表于 2023-10-13 00:23:10

一方面有时候大家用 hadoop 代替整个大数据的统称。
hadoop 现在就其框架本身而言分为三块:
1.hdfs,是一个分布式存储系统,负责存储 hbase 和 hive 等大数据数据库的数据。
2.yarn 是一个调度框架,目前已经抽象出一个通用的调度框架,比如 mapreduce ,spark,flink 都是用它进行资源管理及调度的。
3.执行引擎。hadoop 也有自己的执行引擎 mapreduce,其也是 hive 的底层引擎。
hbase 是一个 分布式 key-value 存储系统,底层依赖于 hadoop 的 hdfs,lsm-log 的格式存储数据,与 redis 不同的是 hbase 自身也便于 scan。
hive 是一个类 sql 的数据库,底层默认支持 mr 执行引擎,也可以配置成 spark 或者 tez,数据存储在 hdfs 上,任务调度依赖与 yarn。

awdrgyjil 发表于 2023-10-13 00:23:59

最开始是hadoop ,yarn+hdfs+mr全套的大数据处理系统,后来mr写起来太费事了,能不能简单点完成数据分析工作,就有了hive, sql化方式完成数据处理过程。再后来觉得觉得需要一个低延时查询东西,就有了hbase.

yizhou 发表于 2023-10-13 00:24:59

一、Hadoop

Hadoop可以看成是由分布式文件系统(HDFS) 、 分布式计算框架(Mapreduce) 以及集群资源管理器(Yarn)构成的分布式大数据处理框架。
HDFS是 Hadoop 下的分布式文件系统,具有高容错、高吞吐量等特性,可以部署在低成本的硬件上。HDFS 遵循主/从架构,由单个 NameNode(NN) 和多个 DataNode(DN) 组成。
MapReduce 是一个分布式计算框架,用于编写批处理应用程序。编写好的程序可以提交到 Hadoop 集群上用于并行处理大规模的数据集。MapReduce 作业通过将输入的数据集拆分为独立的块,这些块由map以并行的方式处理,框架对map的输出进行排序,然后输入到reduce中。MapReduce 框架专门用于<key,value>键值对处理,它将作业的输入视为一组<key,value>对,并生成一组<key,value>对作为输出。输出和输出的key和value都必须实现Writable 接口。
YARN是 hadoop 2.0 引入的集群资源管理系统。用户可以将各种服务框架部署在 YARN 上,由 YARN 进行统一地管理和资源分配。
二、HBASE

HBase 是一个构建在 Hadoop 文件系统之上的面向列的数据库管理系统。Hadoop 可以通过 HDFS 来存储结构化、半结构甚至非结构化的数据,它是传统数据库的补充,是海量数据存储的最佳方法,它针对大文件的存储,批量访问和流式访问都做了优化,同时也通过多副本解决了容灾问题。
但是 Hadoop 的缺陷在于它只能执行批处理,并且只能以顺序方式访问数据,这意味着即使是最简单的工作,也必须搜索整个数据集,无法实现对数据的随机访问。实现数据的随机访问是传统的关系型数据库所擅长的,但它们却不能用于海量数据的存储。在这种情况下,必须有一种新的方案来解决海量数据存储和随机访问的问题,HBase 就是其中之一 。
HBase是 Hadoop 生态系统的一部分,它将数据存储在 HDFS 上,客户端可以通过 HBase 实现对 HDFS 上数据的随机访问。
三、Hive

Hive 是一个构建在 Hadoop 之上的数据仓库,它可以将结构化的数据文件映射成表,并提供类 SQL 查询功能,用于查询的 SQL 语句会被转化为 MapReduce 作业,然后提交到 Hadoop 上运行。

xjhtbyz 发表于 2023-10-13 00:25:38

Hadoop本质上是:分布式文件系统(HDFS) + 分布式计算框架(Mapreduce) + 调度系统Yarn搭建起来的分布式大数据处理框架。
Hive:是一个基于Hadoop的数据仓库,适用于一些高延迟性的应用(离线开发),可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能。
Hive可以认为是MapReduce的一个包装,把好写的HQL转换为的MapReduce程序,本身不存储和计算数据,它完全依赖于HDFS和MapReduce,Hive中的表是纯逻辑表。hive需要用到hdfs存储文件,需要用到MapReduce计算框架。
HBase:是一个Hadoop的数据库,一个分布式、可扩展、大数据的存储。hbase是物理表,不是逻辑表,提供一个超大的内存hash表,搜索引擎通过它来存储索引,方便查询操作。
HBase可以认为是HDFS的一个包装。他的本质是数据存储,是个NoSql数据库;HBase部署于HDFS之上,并且克服了hdfs在随机读写方面的缺点,提高查询效率。

pipile 发表于 2023-10-13 00:26:12

Hadoop 这个名词比较有意思,通常我们聊到 Hadoop 根据场景会有有狭义和广义两种理解,
狭义上,Hadoop 指的是 Hadoop 项目,这个项目中又包含三大块,分别为存储、调度和计算:

[*]HDFS
[*]YARN
[*]MapReduce
广义上讲,有时候说 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 的简单便利性能够让用户更快的上手使用,但同时将过多的脏活累活直接交给了用户(比如文件格式的校验等)。
页: [1]
查看完整版本: 请问Hadoop、Hbase、Hive三者有什么关系?