8

好的..我已经尝试在网络和这个网站上搜索这个问题的答案,这似乎是一个非常基本的问题。我完全是大数据处理的菜鸟。

我想知道HDFS和数据库之间的关系。要使用 HDFS,数据是否总是需要采用某种 NoSQL 格式?使用 HDFS 时是否总是附加一个特定的数据库?我知道 cloudera 提供 Hadoop 解决方案,他们使用 HBase。

我可以使用关系数据库作为 Hadoop 的本机数据库吗?

4

3 回答 3

16
I want to know the relationship between HDFS and databases.

两者之间没有relation这样的东西。如果您仍然想找到一些相似之处,那么两者之间唯一的共同点就是提供store数据。但这类似于任何 FS 和 DB 组合。例如 MySQL 和 ext3。您说您将数据存储在 MySQL 中,但最终您的数据将存储在您的 FS 之上。通常人们在他们的 Hadoop 集群上使用 NoSQL 数据库,如 HBase,以利用 HDFS 提供的并行性和分布式行为。

Is it always necessary that to use HDFS, the data be in a some NoSQL format?

实际上没有什么像NoSQL format。您可以将 HDFS 用于任何类型的数据、文本、二进制文件、xml 等。

Is there a specific database that always comes attached when using HDFS?

不。唯一与 HDFS 相结合的是MapReduce framework. 您显然可以使数据库与 HDFS 一起使用。人们经常在 HDFS 之上使用 NoSQL DB。有多种选择,例如 Cassandra、HBase 等。完全由您决定使用哪一种。

Can I use a relational database as the native database for Hadoop?

没有允许这样做的 OOTB 功能。此外,将 RDBMS 与 Hadoop 一起使用没有多大意义。Hadoop 是在 RDBMS 不适合的时代开发的,例如处理 PB 数据、处理非结构化数据等。话虽如此,您不能将 Hadoop 视为 RDBMB 的替代品。两者都有完全不同的目标。

编辑 :

通常人们使用 NoSQL DB(如 HBase、Cassandra)和 Hadoop。将这些 DB 与 hadoop 一起使用只是配置问题。您不需要任何连接程序即可实现此目的。除了@Doctor Dan 提出的观点之外,选择 NoSQL DB 代替 SQL DB 的原因很少。一件事是size。这些 NoSQL DB 提供了出色的水平可扩展性,使您能够轻松存储 PB 的数据。您可以纵向扩展传统系统。另一个原因是complexity数据。使用这些数据库的地方主要处理高度非结构化的数据,这些数据使用传统系统不太容易处理。例如,传感器数据、日志数据等。

基本上,我不明白为什么存在 SQOOP。为什么我们不能直接在 Hadoop 上使用 SQL 数据。

尽管 Hadoop 非常擅长处理您的 BigData 需求,但它并不能满足您的所有需求。它不适合实时需求。假设您是一家拥有非常庞大数据集的在线交易公司。您会发现使用 Hadoop 可以非常轻松地处理这些数据。但问题是您无法使用 Hadoop 满足客户的实时需求。这就是 SQOOP 发挥作用的地方。它是一个导入/导出工具,允许您在 SQL DB 和 Hadoop 之间移动数据。您可以将您的大数据移动到您的 Hadoop 集群中,在那里对其进行处理,然后使用 SQOOP 将结果推送回您的 SQL 数据库,以满足客户的实时需求。

高温高压

于 2013-07-04T06:44:17.153 回答
1

Hadoop 的优势在于它能够通过复制来存储数据,因此您不能让 Hadoop“工作”,例如 SQL Server,也没有多大意义。可以设置 HBase、Hive 和 Pig 环境(以及其他环境)以与 Hadoop 一起使用,它们的外观和感觉就像常规 SQL 语言。如果您想在 15 分钟内从 0 到大数据,请查看Hortonworks 的 Sandbox 。希望这可以帮助。

于 2013-07-03T21:35:06.790 回答
1

您真正想要实现什么,从您的问题中不清楚。

HDFS 和数据库之间只有间接的关系。HDFS 是文件系统,而不是数据库。Hadoop 是并行处理框架 (MapReduce) 和文件系统 HDFS 的组合。并行处理框架使用称为 InputFormat 的东西从 HDFS 文件系统中获取数据块。一些数据库,如:Oracle NoSQL 数据库 (ONDB)、Cassandra、Riak,其他数据库能够返回包含其数据的 InputFormat,因此它们可以作为 MapReduce 处理的源参与,就像来自 HDFS 的数据一样。

再说一遍,你想做什么?

当您有大量数据尚未聚合和/或结构化为更高级别处理所需的某些模型时,Hadoop 和 HDFS 通常很有用。有时(尽管可能比实际需要的更频繁),Hadoop 可用于执行更高级别的处理,而这通常会在另一种利用良好模型的处理/存储技术中完成。想想 Google Instant,搜索索引创建曾经在 MapReduce 上运行,然后他们开发了一个模型,现在使用更好的方法.. 不能单独在 MapReduce 上创建 Google Instant。

于 2013-07-04T00:16:50.323 回答