HBase 是不是有自己的结构化数据(在 HDFS 上)或者它可以在 HDFS 上的非结构化数据上执行

Posted

技术标签:

【中文标题】HBase 是不是有自己的结构化数据(在 HDFS 上)或者它可以在 HDFS 上的非结构化数据上执行【英文标题】:Does HBase have it's own structured data (on HDFS)or can it execute on unstructured data on HDFSHBase 是否有自己的结构化数据(在 HDFS 上)或者它可以在 HDFS 上的非结构化数据上执行 【发布时间】:2015-08-30 03:25:44 【问题描述】:

我正在切入 Hadoop 生态系统,并且对 MR、YARN 和 HDFS 有相当的了解。 我正在探索生态系统的其他部分。我相信 HiveQL 可以在 HBase 上以类似 SQL 的方式运行,并且几乎是实时的。如果是这样,我相信需要将 HDFS 上的非结构化数据转换为结构化数据,以便在 HQL 中运行相对快速的查询。这是否意味着数据以非结构化形式存在于 HDFS 中,然后以结构化形式复制到 HDFS 上以供 HBase 和 HQL 使用? 另外,HiveQL 是否可以直接在 HDFS 上以批处理模式(小时..与 Java 作为 MR 作业运行的时间相似)的非结构化数据上运行?

【问题讨论】:

【参考方案1】:

HBase 是一个键值对存储。它不支持 SQL。

【讨论】:

【参考方案2】:

回答您的问题 1:我认为需要将 HDFS 上的非结构化数据转换为结构化数据,以便在 HQL 中运行相对较快的查询

HIVE 可以通过将非结构化数据转换为结构化数据来处理这些数据。它提供了一种将结构应用于大量非结构化数据的简单方法,然后对这些数据执行类似 SQL 的批量查询。

可以从多种格式读取数据,从带有逗号或空格分隔文本的非结构化平面文件,到半结构化 JSON 文件,再到结构化 HBase 表。

看看这篇文章Log Analysis如何将非结构化日志文件转换为结构化数据并进行处理。

回答您的问题 2:HiveQL 能否以批处理模式直接在 HDFS 上的非结构化数据上运行(小时......与 Java 作为 MR 作业运行的时间相似)?

HiveQL 不能直接在非结构化数据上运行。数据在处理之前应转换为结构化形式。参考上面的日志分析示例。

【讨论】:

【参考方案3】:

HiveQL 不能在半结构化数据(一种以上格式的数据)上运行。 HDFS 上的所有数据必须采用相同的格式。该格式可以指定为 Hive 使用的数据库中的元数据,它用于计算 HDFS 中的数据结构。这是作为 HDFS 上的 map reduce 作业执行的,并且确实运行时间很长。 PIG 是在具有多种格式数据的 HDFS 上运行所需要的。蜂巢无法做到这一点。 PIG 可以做到,因为它是程序化风格。 您可以使用 map reduce 作业将半结构化数据加载到 HBase。然后在 HBase 上近乎实时地运行 Hive。

【讨论】:

以上是关于HBase 是不是有自己的结构化数据(在 HDFS 上)或者它可以在 HDFS 上的非结构化数据上执行的主要内容,如果未能解决你的问题,请参考以下文章

Hbase原理与架构

hbase的一些要点

hive vs hbase

Hbase数据库

hbase和hive的差别是啥,各自适用在啥场景中

分布式数据存储与管理[HDFS+HBase]