好的..我已经尝试在网站和本网站上搜索这个问题的答案,这似乎是一个非常基本的问题。我是大数据处理的完全noob。
我想知道HDFS和数据库之间的关系。是否总是需要使用HDFS,数据是否采用某种NoSQL格式?使用HDFS时是否始终附加特定的数据库?我知道cloudera提供Hadoop解决方案,他们使用HBase。
我可以使用关系数据库作为Hadoop的本机数据库吗?
答案 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。