Hadoop和HBase

时间:2012-05-19 11:52:09

标签: hadoop hbase

嗨,我是hbase和hadoop的新手。我找不到为什么我们使用hadoop和hbase。我知道hadoop是一个文件系统,但我读到我们可以使用没有hadoop的hbase,为什么我们使用hadoop?
THX

8 个答案:

答案 0 :(得分:9)

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

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

我认为你应该看到这个链接的良好介绍 hadoop

答案 1 :(得分:9)

Hadoop是一个平台,允许我们以并行方式跨机器集群存储和处理大量数据。这是一个批处理系统,我们不必担心数据存储的内部它不仅提供HDFS,用于可靠数据存储的分布式文件系统,还提供了一个处理框架MapReduce,它允许以并行方式跨机器集群处理大量数据集.Hadoop的一大优势是它提供了数据局部性。我的意思是移动数据做得很大是昂贵的。所以Hadoop将计算转移到数据.Hdfs和MapReduce都经过高度优化,可以处理非常大的数据.Hdfs通过数据复制确保高可用性和故障转移,因此,如果群集中的任何一台机器由于某些灾难而停机,那么您的数据仍然是安全且可用的。   另一方面,Hbase是一个NoSQL数据库。我们可以把它看作一个分布式,可扩展的大数据存储。它用于克服Hdfs的缺陷,例如"无法随机读写"。如果我们需要对数据进行随机,实时的读/写访问,Hbase是一个合适的选择。它是以Google的BigTable"为模型,而Hdfs是在GFS(Google文件系统)之后建模的。没有必要仅在顶级Hdfs上使用Hbase。我们可以将Hbase与其他持久存储一起使用,例如" S3"或者" EBS"。如果你想了解deatil中的Hadoop和Hbase,你可以访问各自的主页 - " hadoop.apache.org"和" hbase.apache.org"。如果你想深入学习,你也可以阅读以下书籍。#Hadoop.TheDefinitive.Guide"和" HBase.TheDefinitive.Guide"。

答案 2 :(得分:3)

我已经说过的话几乎没有什么可说的。 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

答案 3 :(得分:2)

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

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

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

答案 4 :(得分:2)

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

答案 5 :(得分:1)

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

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

答案 6 :(得分:1)

Hadoop由2个主要组件组成。

  1. HDFS。
  2. 地图,减少。
  3. 两者的解释如下,

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

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

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

      另一只手上的HBase又包含2个成分,

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

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

      3. 在HDFS之上运行的Map-Reduce守护程序和Hbase-RegionServer守护程序之间的区别在于,Map-Reduce守护程序仅执行Map-Reduce(Aggregation)类型的作业,而Hbase-RegionServer守护程序执行DataBase相关的功能,如读,写等。

答案 7 :(得分:0)

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