为什么要使用Hadoop?

时间:2015-08-12 05:29:15

标签: java hadoop

我对Hadoop的使用感到困惑。我不明白什么时候&在哪里使用Hadoop。

  

Hadoop是一个允许存储和处理的开源框架   跨计算机集群的分布式环境中的大数据   使用简单的编程模型。它旨在扩大规模   单台服务器到数千台机器,每台机器都提供本地服   计算和存储。

根据定义,这项工作也可以通过其他数据库来完成,例如Oracle,MSSQL等,即存储&跨群集处理数据。那么使用Hadoop还有什么优势呢?

3 个答案:

答案 0 :(得分:5)

Hadoop基本上是一个分布式文件系统(HDFS) - 它允许您在云计算机上存储大量文件数据,处理数据冗余等。

在该分布式文件系统之上,Hadoop提供了一个用于处理所有存储数据的API - Map-Reduce。 基本思想是,由于数据存储在许多节点中,因此您最好以分布式方式处理数据,其中每个节点都可以处理存储在其上的数据,而不是花费大量时间在网络上移动数据。

与您可以实时查询的RDMS不同,map-reduce过程需要时间并且不能立即产生结果。

除了这个基本方案之外,您还可以构建一个列数据库,如HBase。 列数据库基本上是一个哈希表,允许对行进行实时查询。

据我所知,存在很多差异。请阅读以下差异。

  1. Hadoop不是数据库。 Hbase或Impala可能被认为是数据库,但Hadoop只是一个内置冗余,并行的文件系统(hdfs)。
  2. 传统数据库/ RDBMS具有ACID属性 - 原子性,一致性,隔离性和持久性。使用Hadoop,您无法获得这些功能。因此,如果您必须编写代码以从一个银行帐户获取资金并将其放入另一个银行帐户,则必须(痛苦地)编码所有方案,例如如果取出资金但在其移入另一个帐户之前发生故障会发生什么情况
  3. Hadoop以极低的RDBMS成本提供大规模的处理能力和存储。
  4. Hadoop提供了巨大的并行处理能力。您可以并行运行作业以处理大量数据。
  5. 有些人认为传统数据库不适用于非结构化数据,但并不像那样简单。有许多使用传统RDBMS构建的应用程序使用了大量非结构化数据或视频文件或PDF,这些都是我遇到过的。
  6. 通常,RDBMS将管理其缓存中的大块数据,以加快处理速度,同时保持跨会话的读取一致性。我认为Hadoop在使用内存缓存处理数据方面做得更好,而不提供任何其他项目,如读取一致性。
  7. Hive SQL几乎总是比您在传统数据库中运行的SQL慢一点。因此,如果您认为Hive中的SQL比数据库中的SQL更快,那么您会感到非常失望。它根本无法进行复杂分析。
  8. Hadoop非常适合并行处理问题 - 比如在大量文档中查找一组关键字(此操作可以并行化)。但是,对于可比数据集,RDBMS实现通常会更快。

答案 1 :(得分:1)

RDBMS无法以经济高效的方式处理大数据。随着数据大小的增加,使用垂直可伸缩性技术的RDBMS系统将无法正常工作。在这个地方,像hadoop这样的大数据处理框架以经济有效的方式运行良好。 大多数大数据处理框架都是开源的,旨在在商用硬件上运行。因此,与相同设置所需的RDBMS相比,成本将非常低。

简单来说,由于数据大小和复杂性,bigdata从RDBMS停止的地方开始。 另一点是RDBMS主要处理结构化数据。但是大多数大数据框架都可以处理结构化,非结构化和半结构化数据。大多数大数据框架都是为处理任何类型的大数据而设计的。

答案 2 :(得分:0)

分发数据和计算。数据本地计算可防止网络过载。任务是独立的,因此很容易处理部分故障。这里整个节点都可以失败并重新启动。

它避免了爬行失败和容忍同步分布式系统的恐怖。理想情况下的线性扩展。它曾用于设计廉价的商品硬件。简单的编程模型。最终用户程序员只编写map-reduce任务。