2013-07-03 322 views
6

好吧,我已经尝试搜索网络和本网站,为这个问题的答案,这似乎是一个非常基本的问题。我完全不知道大数据处理。Hadoop和数据库之间的关系

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

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

回答

0

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

+0

它确实有帮助。谢谢。我没有考虑Hadoop复制数据这一点,所以是的,这让我认为SQL数据库与本地数据库不兼容。 – crossvalidator

1

你真的想要达到什么目标,这是不明确的问题。

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

那么,你想做什么?

当您有大量数据尚未汇总和/或构建到某个更高级别处理所需的模型中时,Hadoop和HDFS通常很有用。有时候(尽管可能被迫的次数比真正需要的次数多),Hadoop可以用于执行更高级别的处理,通常在另一种利用体面模型的处理/存储技术中完成。想想谷歌即时搜索引擎创建过去在MapReduce上运行,然后他们开发了一个模型,现在使用更好的方法..不能单独在MapReduce上执行Google Instant。

+0

我真的只想知道什么样的数据库可以直接与Hadoop一起使用,即没有任何连接程序可能会改变数据格式。基本上,我不明白为什么SQOOP存在。为什么我们不能直接在Hadoop上使用SQL数据。正如Dan博士指出的,数据的复制对于SQL来说是不可行的。我想知道是否还有其他问题? – crossvalidator

+0

@crossvalidator:请参阅编辑回答以回应此评论。这是不可能的。 – Tariq

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

没有relation为2之间,例如如果您仍然希望找到一些相似性,这是常见的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。您显然可以让数据库与HDFS一起工作。人们经常在HDFS上使用NoSQL DB。有几种选择,如Cassandra,HBase等。完全由您决定使用哪一个。

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

没有OOTB功能允许这样做。而且,在Hadoop中使用RDBMS并没有什么意义。 Hadoop是在RDBMS不适合的时候开发的,例如处理数据PB,处理非结构化数据等等。既然如此,你不能想到Hadoop是RDBMB的替代品。两者都有完全不同的目标。

编辑:

通常人们使用的NoSQL DB中(如HBase的,卡桑德拉)用Hadoop。将这些数据库与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 :) – Trialcoder