为什么要使用Hadoop?

Har*_*ava -1 java hadoop

我对Hadoop的使用感到困惑.我不明白何时何地使用Hadoop.

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

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

Dur*_*tel 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实现通常会更快.