好的..我已经尝试在网络和这个网站上搜索这个问题的答案,这似乎是一个非常基本的问题。我完全是大数据处理的菜鸟。
我想知道HDFS和数据库之间的关系。要使用 HDFS,数据是否总是需要采用某种 NoSQL 格式?使用 HDFS 时是否总是附加一个特定的数据库?我知道 cloudera 提供 Hadoop 解决方案,他们使用 HBase。
我可以使用关系数据库作为 Hadoop 的本机数据库吗?
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 数据库,以满足客户的实时需求。
高温高压
Hadoop 的优势在于它能够通过复制来存储数据,因此您不能让 Hadoop“工作”,例如 SQL Server,也没有多大意义。可以设置 HBase、Hive 和 Pig 环境(以及其他环境)以与 Hadoop 一起使用,它们的外观和感觉就像常规 SQL 语言。如果您想在 15 分钟内从 0 到大数据,请查看Hortonworks 的 Sandbox 。希望这可以帮助。
您真正想要实现什么,从您的问题中不清楚。
HDFS 和数据库之间只有间接的关系。HDFS 是文件系统,而不是数据库。Hadoop 是并行处理框架 (MapReduce) 和文件系统 HDFS 的组合。并行处理框架使用称为 InputFormat 的东西从 HDFS 文件系统中获取数据块。一些数据库,如:Oracle NoSQL 数据库 (ONDB)、Cassandra、Riak,其他数据库能够返回包含其数据的 InputFormat,因此它们可以作为 MapReduce 处理的源参与,就像来自 HDFS 的数据一样。
再说一遍,你想做什么?
当您有大量数据尚未聚合和/或结构化为更高级别处理所需的某些模型时,Hadoop 和 HDFS 通常很有用。有时(尽管可能比实际需要的更频繁),Hadoop 可用于执行更高级别的处理,而这通常会在另一种利用良好模型的处理/存储技术中完成。想想 Google Instant,搜索索引创建曾经在 MapReduce 上运行,然后他们开发了一个模型,现在使用更好的方法.. 不能单独在 MapReduce 上创建 Google Instant。