大数据 频道

Oracle与Hadoop对比:一致性和高性能不可兼得!

  【IT168 评论】提起Hadoop,我们就可以想到大数据;提起Oracle,我们就可以想到数据库。国内确实有不少企业习惯于将Hadoop作为数据库使用,因此将其与数据库领域同样占据重要位置的Oracle进行对比是有意义的。

  Hadoop不是数据库,而是一个开源软件集合,通过底层的分布式存储框架(HDFS)来管理庞大的数据集,其主要目的是分析、存储、管理和交付数据。因为Hadoop的核心是HDFS(分布式文件系统),所以从这一点就可以看出它的本质是一个非常强大的文件系统。

  Hadoop底层架构中的HDFS和MppReduce给它带来了两大优势——可扩展性和大规模并行处理(MPP)能力。下图是一个典型的数据库体系架构,用户对单个大型数据库服务器执行SQL查询。尽管已经有了各种复杂的缓存技术,但大多数商业智能应用程序的瓶颈依然出现在数据从磁盘提取到内存的过程,这限制了系统的处理和扩展能力,使其难以应对快速增长的庞大数据集。由于只有一台服务器,因此还需要昂贵的冗余硬件来保证系统的高可用性,整体拥有成本进一步提升。

下图是Hadoop分布式架构图,在此解决方案中,用户对服务器集群执行SQL查询,并且整个过程并行运行。由于任务分布在多台计算机上,因此磁盘瓶颈不再是问题。随着数据量的增长,解决方案可通过额外的服务器扩展到数百甚至数千个节点。

Hadoop内置故障恢复能力,如果一台服务器不可用,任务将自动在幸存节点之间重新分配,从而避免了购买备用系统的巨大成本开销,在可用性层面的优势也十分明显,单个机器的维护或操作系统升级不会造成整个系统停摆,整个系统的停机时间为零。

  传统关系型数据库和Hadoop在云计算层面的优势比较!

  与传统关系型数据库相比,Hadoop具有几个潜在的优势,这些优势通常被总结为“3V”:

  Volume (规模)- Hadoop的分布式MPP架构使其成为处理大量数据的理想选择,多TB数据集可以跨多个服务器自动分区(扩展)并行处理。

  Variety (种类)- 与需要在加载数据之前定义数据结构的传统关系型数据库不同,在HDFS中,加载数据可以像复制文件一样简单——可以是任何格式。 这意味着Hadoop可以轻松地管理、存储和集成数据,文本文档、JSON或XML格式、照片,甚至是电子邮件中的数据都可以。

  Velocity(速度)- MPP架构和功能强大的内存工具(包括Spark、Storm和Kafka)构成了Hadoop框架的一部分,使其成为处理实时或近实时流式传输的理想解决方案。

  云计算的出现让Hadoop的优势更加明显,这体现在Elasticity(弹性)层面。

  基于云的服务器提供按需、可扩展处理工作负载的能力,这意味着整个机器网络可以根据需要进行调整,以应对海量数据处理挑战,同时硬件成本受到按需付费模式的限制而不会太高。当然,在具有高度敏感数据的监管行业(例如金融服务)中,云计算可能会受到怀疑,在这种情况下,我们也可以考虑基于内部部署基于云的解决方案来保护数据。

  基于列的存储VS基于行的存储方式

  硬件优势似乎并不足够引人注目,毕竟现在的硬件成本已经不是非常高了。但是,基于列的存储方式与传统的基于行的存储方式存在明显差异,Hadoop本身支持基于列的存储,这为分析查询提供了巨大的性能和压缩优势,这一点恐怕是传统关系型数据库不可及的。

上图说明了这两种方法之间的区别。使用传统的基于行的存储可以快速识别和获取单行,这对于需要获取或更新单行值的事务处理系统非常有用。但是,分析查询倾向于获取、汇总和处理数百万甚至数十亿行数据。

  例如:

  SELECT team, sum(value) FROM sales GROUP by team;

  在基于行的系统上,此查询需要将每行的每一列提取到内存中并按照team分组。在具有100列和数十亿行的表中,这样做的效率是极其低下的。但是,在基于列的解决方案中,相同的查询仅需要处理约2%的数据,具有巨大的性能优势。在压缩层面,TEAM列中的重复值可以用简单的字典编码技术代替以压缩数据。

  在对十亿行文本进行的简单测试中,基于列的存储方式节省了50%的成本,使用Parquet数据格式可以将56Gb文本文件减少到26Gb。

  Hadoop比Oracle便宜!

  当然,这里的便宜并不是单纯得指Hadoop开源版本不需要购买,而Oracle只有商用成本必须购买,这里计算的是二者的整体拥有成本。虽然部署Hadoop的成本越来越高,但开源软件和廉价硬件的好处意味着托管大型Hadoop系统比Oracle数据库要便宜得多。

  在一个存储168 TB数据并考虑到硬件、许可证成本、IT人员支持和维护的系统上,研究发现Oracle的成本比相应的Hadoop解决方案高出约200%。当然,这并没有考虑将数据从数据仓库迁移到Hadoop的成本。

  虽然,Hadoop看起来似乎更加优秀,但是它并不适合处理ACID事务。在很多情况下,Hadoop没有办法保证所有数据的强一致性。事实上,Hadoop牺牲了部分ACID合规性而提高系统吞吐量。

  Hadoop可以处理大量数据,最小的典型工作单元大约为128Mb,如果将其与大约8千字节的典型Oracle数据块进行比较,Oracle可以管理一系列OLTP和OLAP,使用单行查找处理大量短期运行事务,而Hadoop更适合单进程批处理操作。大多数数据仓库都面向批处理、获取并存储海量数据集,Hadoop就是专门为此用例而构建的。

  在Hadoop生态系统中,Cloudera Impala、Apache Hive和Spark SQL等产品在大规模数据集上添加了低延迟的SQL查询和分析工具,同样,在商业智能系统中,ACID合规性往往不那么重要,99.9%的准确性通常只是口号,而不是业务最关键的要求。

  结论

  当然,Oracle在企业数据库领域耗时30多年建立起来的核心地位并不会很快消失。实际上,Oracle已经采用Oracle Big Data Appliance,Exadata Appliance和Oracle 12c In-Memory等适应新的需求和挑战。但是,整个数据仓库架构变化让Hadoop及其附带的众多技术产品成为最适合整个堆栈的工具。与此同时,我们需要注意是需求驱动开发而不是CV驱动的解决方案。

1
相关文章