Hadoop与数据库之间的关系

时间:2013-07-03 21:16:32

标签: hadoop nosql rdbms

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

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

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

3 个答案:

答案 0 :(得分:14)

I want to know the relationship between HDFS and databases.

2之间没有relation。如果你仍想找到一些相似之处,那么2之间唯一共同的是提供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。显然,您可以使用DB来使用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之间移动数据。您可以将BigData移动到Hadoop集群中,在那里处理它,然后使用SQOOP将结果推回到SQL DB中,以满足客户的实时需求。

HTH

答案 1 :(得分:1)

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

答案 2 :(得分:1)

你真正想要实现的目标,你的问题并不清楚。

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

再说一遍,你想做什么?

当您有大量尚未聚合和/或结构化为更高级别处理所需的模型的数据时,Hadoop和HDFS通常很有用。有时候(尽管强制使用的频率超过实际需要),Hadoop可以用来进行更高级别的处理,通常在另一种利用正常模型的处理/存储技术中完成。想想谷歌即时,用于在MapReduce上运行的搜索索引创建,然后他们开发了一个模型,现在使用更好的方法..无法单独使用MapReduce上的Google Instant。