10

嗨,我是 hbase 和 hadoop 的新手。我找不到为什么我们将 hadoop 与 hbase 一起使用。我知道 hadoop 是一个文件系统,但我读到我们可以在没有 hadoop 的情况下使用 hbase,那么我们为什么要使用 hadoop?
谢谢

4

8 回答 8

12

Hadoop是一个允许我们以并行方式跨机器集群存储处理大量数据的平台。它是一个批处理系统,我们不必担心数据存储或处理的内部结构。

它不仅提供HDFS (用于可靠数据存储的分布式文件系统),还提供处理框架 MapReduce,允许以并行方式跨机器集群处理大量数据集。

Hadoop 的最大优势之一是它提供了数据局部性。我的意思是,移动大量数据的成本很高。因此 Hadoop 将计算转移到数据上。Hdfs 和 MapReduce 都经过高度优化,可以处理非常大的数据。

HDFS 通过数据复制确保高可用性和故障转移,因此如果您的集群中的任何一台机器由于某些灾难而停机,您的数据仍然是安全且可用的。

另一方面,HBase是一个NoSQL database.我们可以将其视为分布式、可扩展的大数据存储。它用于克服 Hdfs 的“无法随机读写”等陷阱。

如果我们需要对我们的数据进行随机、实时的读/写访问, Hbase是一个合适的选择。它以 Google 的“BigTable”为模型,而 Hdfs 则以 GFS(Google 文件系统)为模型。

不必仅在顶级 Hdfs 上使用 Hbase。我们可以将 Hbase 与“S3”或“EBS”等其他持久存储一起使用。如果您想详细了解 Hadoop 和 Hbase,您可以访问各自的主页 -“hadoop.apache.org”和“hbase.apache.org”。

如果想深入学习《Hadoop.The.Definitive.Guide》和《HBase.The.Definitive.Guide》,还可以翻阅以下书籍。

于 2012-05-22T13:54:19.653 回答
10

名为HDFS的Hadoop分布式文件系统为我们提供了多个作业。实际上,我们不能说 Hadoop 只是一个文件系统,但它也为我们提供了资源,所以我们可以通过提供一个主从架构来执行分布式处理,我们可以从中轻松地管理我们的数据。

至于 HBase 的问题,我简单地告诉你,如果不使用 HDFS,你就无法远程连接到 HBase,因为 HBase 不能创建集群并且它有自己的本地文件系统。


我认为您应该查看此链接以了解hadoop的良好介绍!

于 2012-05-19T11:59:43.600 回答
4

我已经说过的话几乎没有什么可补充的。Hadoop 是分布式文件系统 (HDFS) 和 MapReduce(分布式计算框架)。HBase 是建立在 Hadoop 之上的键值数据存储(意思是在 HDFS 之上)。

使用 HBase 而不是普通的 Hadoop 的原因主要是为了做随机读写。如果您使用的是普通 Hadoop,则无论何时要运行 MapReduce 作业,都必须读取整个数据集。

如果我正在处理数千个小文件,我还发现将数据导入 HBase 很有用。

我向您推荐 Todd Lipcon (Cloudera) 的演讲:“Apache HBase:介绍” http://www.slideshare.net/cloudera/chicago-data-summit-apache-hbase-an-introduction

于 2012-11-11T22:28:11.787 回答
2

HBase 可以在没有 Hadoop 的情况下使用。以独立模式运行 HBase 将使用本地文件系统。

Hadoop 只是一个分布式文件系统,具有冗余性并且能够扩展到非常大的大小。无法在 Hadoop 上运行任意数据库的原因是 HDFS 是仅附加文件系统,不符合 POSIX。大多数 SQL 数据库都需要能够查找和修改现有文件。

HBase 的设计考虑了 HDFS 的限制。CouchDB 理论上可以移植到 HDFS 上运行,因为它也使用仅附加文件格式。

于 2012-05-19T12:04:37.777 回答
2

我会尝试以更严格的顺序排列条款。
Hadoop 是一组集成技术。最值得注意的部分是:
HDFS - 专为海量数据处理而构建的分布式文件系统
MapReduce - 实现分布式文件系统的 Map Reduce 范例的框架,其中 HDFS - 其中之一。它可以在其他 DFS 上运行 - 例如 Amazon S3。
HBase - 建立在 DFS 之上的分布式排序键值映射。据我所知,HDFS 只是与 HBase 兼容的 DFS 实现。HBase 需要附加功能来写入其预写日志。例如,亚马逊 s3 上的 DFS 不支持它。

于 2012-05-19T14:06:37.423 回答
1

它的唯一目的是分发和读取速度。在 Hbase 中发生的情况是数据会自动“分片”(分区),由您的行键分配驱动。选择智能行键很重要,因为它们是二进制排序的。请记住,数据的“分片”子集被拆分到称为区域服务器的东西上。集群中的每台机器上都可以有多个区域服务器。如果您不将数据分布在多节点 hadoop 集群上,您将无法利用多台机器的处理能力并行搜索它们各自的数据子集,从而将结果返回给您的客户端查询应用程序。希望这可以帮助。

于 2012-06-08T21:58:27.837 回答
1

您应该记住的一件事 - HBase 尚不支持 ACID 属性。HBase 确实支持 ROW LEVEL 上的原子性。您应该尝试阅读 MVCC 实现。

另外,阅读 RDBMS 中的 LSM 与 B+ 树。

于 2012-10-19T23:21:11.400 回答
1

Hadoop 由 2 个主要组件组成。

  1. 高清文件系统。
  2. 地图减少。

两者的解释如下,

  1. HDFS 是一种文件系统,它通过将数据分布在一组节点上来提供具有高容错性(使用复制)的可靠存储。它由 2 个组件组成,NameNode(存储有关文件系统的元数据的位置。)和 datanodes(这些可以是多个。它们是存储实际分布式数据的位置。)

  2. Map-Reduce 是一组 2 种类型的 java 守护进程,称为“Job-Tracker”和“Task-Tracker”。通常,Job-Tracker 守护进程管理要执行的作业,而 Task-tracker 守护进程是在数据分布的数据节点之上运行的守护进程,以便它们可以计算用户提供的程序执行逻辑特定于相应数据节点中的数据。

因此,总而言之,HDFS 是存储组件,Map-Reduce 是执行组件。

另一方面,HBase 再次由 2 个组件组成,

  1. HMaster-再次由元数据组成。

  2. RegionServers - 这些是运行在 HDFS 集群中数据节点之上的另一组守护进程,用于在 HDFS 集群中存储和计算与数据库相关的数据(我们将其存储在 HDFS 中,以便我们利用 HDFS 的核心功能即数据复制和容错)。

Map-Reduce 守护进程和 Hbase-RegionServer 守护进程在 HDFS 之上运行的区别在于,Map-Reduce 守护进程只执行 Map-Reduce(聚合)类型的作业,而 Hbase-RegionServer 守护进程执行与数据库相关的功能,例如读、写等

于 2014-12-15T05:36:28.757 回答