我是大数据技术的新手,我有一个关于hbase如何与hadoop集成的问题。 “Hbase 位于 HDFS 之上”是什么意思? .我的理解是 HDFS 是分布在多个节点上的结构化和非结构化数据的集合,而 HBase 是结构化数据。
Hbase 如何与 Hadoop 集成以提供对底层数据的实时访问。我们是否必须编写特殊的作业来构建索引等?换句话说,在 Hbase 和 hdfs 之间是否有一个附加层,它具有 HBase 理解的结构中的数据
最佳答案
HDFS 是一个分布式文件系统;可以对它执行大多数常规 FS 操作,例如在目录中列出文件、写入常规文件、读取文件的一部分等。它不再是简单的“结构化或非结构化数据的集合”,而不是 EXT4 或 NTFS 文件系统。
HBase 是内存中的键值存储,可以持久化到 HDFS(这不是硬性要求,您可以在任何分布式文件系统上运行 HBase)。对于向 HBase 请求的任何读取 key 请求,它会首先检查其运行时内存缓存,看是否缓存了值,否则访问其在 HDFS 上的存储文件以查找并读出具体值。 HBase 中提供了各种配置来控制缓存的使用方式,但 HBase 的速度来自于缓存和索引持久性(更快的搜索文件读取)的组合。
HBase 在 HDFS 上的基于文件的持久化在写入时自动进行键索引,因此用户不需要手动索引。这些文件是常规的 HDFS 文件,但专门用于 HBase 使用的格式,称为 HFiles。
这些文章有些过时,但仍然非常反射(reflect) HBase 使用的架构:http://blog.cloudera.com/blog/2012/06/hbase-write-path/和 http://blog.cloudera.com/blog/2012/06/hbase-io-hfile-input-output/ ,如果您想深入挖掘,应该会有所帮助。
关于Hadoop 和 HBase 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36249463/