Hadoop和MongoDB的区别
Hadoop旨在存储和分析多个计算机集群中的大量数据。它是一组构建数据处理框架的软件程序。这个基于Java的框架可以快速,廉价地处理大量数据。
Hadoop的核心元素包括HDFS,MapReduce和Hadoop生态系统。Hadoop生态系统由许多模块组成,这些模块有助于系统编码,集群管理,数据存储和分析操作。Hadoop MapReduce有助于分析大量有组织和非结构化的数据。Hadoop的并行处理使用MapReduce,而Hadoop是Apache软件基金会的商标。
数百万人使用MongoDB,一个开源的NoSQL文档数据库。这些用户包括初创公司和跨国公司。MongoDB功能被行业领先的公司和消费技术初创公司使用。
MongoDB是一个面向文档的C++数据库。它解决了基于 SQL 架构的数据库的性能、可用性和可伸缩性问题。这是一个像网络一样工作的数据库。与其他NoSQL数据库一样,MongoDB不使用表,行或列。它将其数据存储在BSON文档中,这些文档将相关信息捆绑在一个标题下。
阅读本文以了解有关Hadoop和MongoDB的更多信息,以及它们之间的区别。
什么是Hadoop?
Apache Hadoop是一个开源的Java平台。它管理数据密集型应用程序的处理和存储需求。Hadoop平台必须首先在计算机集群的节点之间分配大数据和分析作业。然后将这些任务分成可以同时完成的合理工作负载。
Hadoop可以处理结构化和非结构化数据,并在不牺牲可靠性的情况下从一台服务器扩展到数千台服务器。基于Hadoop的程序运行在具有大量数据收集的商品机器集群上。这些机器以更低的成本提供更多的处理能力。Hadoop使用称为Hadoop分布式文件系统(HDFS)的分布式文件系统来存储其数据。这就像将数据保存在PC的本地文件系统上一样。
在其基础,Hadoop由两个主要层组成,它们是 -
-
处理和计算图层,也称为地图缩减图层。
-
存储层也称为Hadoop分布式文件系统。
地图缩减图层
Google开发了用于创建分布式应用程序的MapReduce。它旨在对商用硬件的巨大集群(数千个节点)上的多 TB 数据集进行可靠和容错处理。Hadoop是一个Apache管理的开源平台,其中实现了MapReduce。这就像将数据保存在PC的本地文件系统上一样。
Hadoop 分布式文件系统
Hadoop分布式文件系统(HDFS)基于谷歌文件系统(GFS),它在商用硬件上运行。它就像其他分布式文件系统一样。但是,该系统与其他系统有很大不同。它具有容错能力,可在低成本硬件上运行。它为访问应用程序数据提供了高吞吐量,适用于大型数据集。
除了两个主要组件之外,Hadoop框架还包括以下两个模块。
-
另一个资源协商器 (YARN) - 它管理群集的节点和资源。它安排工作。
-
Hadoop Common - 提供适用于所有模块的标准Java库,并且可以被任何模块使用。
什么是MongoDB?
MongoDB是一个面向文档的开源数据库,可以有效地存储和操作数据。任何人都可以使用它。MongoDB是一个NoSQL数据库,因为它的数据不是在表中结构化的。
MongoDB Inc.于2009年2月首次公开该数据库。服务器端公共许可证管理其使用。它提供对 C、C++ 和 C# 的官方驱动程序支持。支持的编程语言包括Net,Go,Java,Node.js,Perl,PHP,Python,Motor,Ruby,Scala,Swift和Mongoid。使用这些语言设计应用。Facebook,诺基亚,eBay,Adobe,Google和其他公司使用MongoDB存储大量数据。
MongoDB的组件
-
_id:_ MongoDB 文档必须有一个 id 字段。MongoDB的_id字段存储一个唯一的值。_id就像文档的主键。MongoDB将构造一个_id字段,如果你创建一个没有一个新文档。
-
集合:这是MongoDB中的一组文档。在任何其他RDMS(如Oracle或MS SQL)中,表与集合相同。一个数据库可以有多个集合。
-
游标:指向查询结果集的指针。客户端可以来回移动光标以获得结果。
-
数据库:这是集合的容器,就像RDMS是表的容器一样。在文件系统上,每个数据库都有自己的一组文件。MongoDB服务器上可以有多个数据库。
-
文档:文档基本上是MongoDB集合中的记录。反过来,文档将由字段名称和值组成。
-
字段:文档中的名称/值对。文档中可能有零个或多个字段。在关系数据库中,字段就像一列。
Hadoop和MongoDB的区别
下表突出显示了Hadoop和MongoDB之间的主要区别 -
比较基础 | Hadoop | 蒙戈数据库 |
---|---|---|
数据存储 | 它适用于结构化和非结构化数据。由于Hadoop的分布式文件系统,向集群添加更多节点会增加存储空间。 | 在MongoDB中,使用CSV或JSON格式。MongoDB使用一种称为分片的技术,通过将数据分布在不同的节点上来使其水平扩展。 |
目的 | 它的主要功能将被视为数据库。 | 它是专门为评估和处理大量数据而开发的。 |
使用的语言 | Hadoop是用java编写的。 | MongoDB是用C++编写的。 |
数据处理 | Hadoop使用MapReduce来处理庞大的数据集。一次处理一条数据时,此算法运行良好。当需要连接变量时,MapReduce可能会减慢速度。 | 您可以使用MongoDB的聚合管道框架处理和更新数据。Atlas Search 的聚合管道和全文搜索有助于限制搜索。 |
内存管理 | 另一方面,Hadoop主要关注光盘存储。它在优化磁盘空间的使用方面更有效,但由于需要从驱动器读取,查询结果的传递将延迟。 | MongoDB充分利用其内存,以便可以快速发送数据。它将索引和一些数据保存在内存中,以便可以预测延迟。 |
RDBMS 支持 | 它不是为了替代关系数据库管理系统(RDBMS),而是在数据归档方面为RDBMS提供额外的支持,同时也为其提供了各种各样的用例。 | 它的开发目的是取代或增强RDBMS,并为其提供广泛的潜在应用。 |
结论
与传统数据库相比,Hadoop和MongoDB具有许多优势,使其成为管理大量数据的绝佳选择。
MongoDB可以执行传统上与数据库相关的所有功能。由于其结构的灵活性,MongoDB使得存储数据变得简单,在可以使用数据之前不需要大量的先前转换。由于其查询语言,它可以快速有效地获取数据,甚至可以即时处理数据。