Hadoop 和 HBase 集成

Hadoop and HBase integration

我是大数据技术的新手,我有一个关于hbase如何与hadoop集成的问题。 "Hbase sits on top of HDFS" 是什么意思? .我的理解是 HDFS 是分布在多个节点上的结构化和非结构化数据的集合,而 HBase 是结构化数据。

Hbase 如何与 Hadoop 集成以提供对底层数据的实时访问。我们是否必须编写特殊的作业来构建索引等?换句话说,在 Hbase 和 hdfs 之间是否有一个附加层,它具有 HBase 理解的结构中的数据

HDFS is a distributed file system, and HBase is a NoSQL 依赖于 HDFS 文件系统来存储其数据的数据库。

您应该阅读这些技术,因为您的 structured/unstructured 比较不正确。

更新

如果您对这些技术的起源感兴趣,您应该查看 Google 文件系统、MapReduce 和 Bigtable 论文。

  • Ghemawat、Sanjay、Howard Gobioff 和 Shun-Tak Leung。 “Google 文件系统。”ACM SIGOPS 操作系统评论。第 37 卷第 5 期。 美国计算机学会,2003.

  • Dean、Jeffrey 和 Sanjay Ghemawat。 "MapReduce: simplified data processing on large clusters." ACM 通讯 51.1 (2008): 107-113.

  • Chang、Fay 等人。 “Bigtable:分布式存储系统 结构化数据。”ACM 计算机系统交易 (TOCS) 26.2 (2008): 4.

HDFS 是一个分布式的文件系统;可以对它执行大多数常规 FS 操作,例如在目录中列出文件、写入常规文件、读取文件的一部分等。它不仅仅是 "a collection of structured or unstructured data" 比你的 EXT4NTFS 文件系统是。

HBase 是内存中的键值存储,可能 persistHDFS (这不是硬性要求,您可以在任何分布式文件系统上 运行 HBase)。对于任何向HBase请求的读key请求,它都会先检查它的运行time内存缓存,看是否有缓存的值,否则访问它在HDFS上的存储文件,寻找并读出具体的值。 HBase 中提供了各种配置来控制缓存的使用方式,但 HBase 的速度来自缓存和索引持久性(更快的搜索文件读取)的组合。

HBase 在 HDFS 上的基于文件的持久化在写入时自动进行键索引,因此用户不需要手动索引。这些文件是常规的 HDFS 文件,但专门用于 HBase 使用的格式,称为 HFiles。

这些文章有些过时,但仍然非常反映了 HBase 使用的体系结构:http://blog.cloudera.com/blog/2012/06/hbase-write-path/ and http://blog.cloudera.com/blog/2012/06/hbase-io-hfile-input-output/,如果您想深入研究,应该会有所帮助。

很容易理解:

HDFS 是一个分布式文件系统,通过应用模型提供写入和读取。

Hbase 是建立在 HDFS 文件系统上的 NOSQL 数据库,必须依赖于它。

可以在这里阅读:Apache hbase document