当前位置: 首页 > 科技观察

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

时间:2023-03-12 13:53:56 科技观察

一提到Hadoop,我们就可以想到大数据;一提到Oracle,我们就会想到数据库。国内很多企业习惯将Hadoop作为数据库使用,因此将其与同样在数据库领域占据重要地位的Oracle进行比较是有意义的。Hadoop不是一个数据库,而是一个开源软件的集合,通过底层的分布式存储框架(HDFS)来管理庞大的数据集。其主要目的是分析、存储、管理和传递数据。因为Hadoop的核心是HDFS(DistributedFileSystem),从这点可以看出它的本质是一个非常强大的文件系统。Hadoop底层架构中的HDFS和MppReduce为其带来两大优势——可扩展性和大规模并行处理(MPP)能力。下图是一个典型的数据库架构,用户对单个大型数据库服务器执行SQL查询。尽管有各种成熟的缓存技术,但大多数商业智能应用的瓶颈仍然出现在数据从磁盘提取到内存的过程中,这限制了系统的处理能力和可扩展性,难以应对庞大数据集的快速增长。由于只有一台服务器,还需要昂贵的冗余硬件来确保系统的高可用性,进一步增加了总体拥有成本。下图是一个Hadoop分布式架构图。在该方案中,用户在服务器集群上执行SQL查询,整个过程并行运行。磁盘瓶颈不再是问题,因为任务分布在多台计算机上。随着数据量的增长,该解决方案可扩展到数百甚至数千个节点并增加服务器。Hadoop具有内置的故障恢复功能。如果服务器不可用,任务将自动重新分配给幸存的节点,从而避免购买备份系统的巨大成本。在可用性方面的优势也非常明显,单机的维护或运行系统升级不会造成整个系统的停机,整个系统的停机时间为零。传统关系型数据库与Hadoop在云计算层面的优势对比!与传统关系型数据库相比,Hadoop有几个潜在的优势,这些优势通常被概括为“3V”:Volume(规模)——Hadoop的分布式MPP架构使其成为处理大量数据的理想选择,可以处理多TB的数据集跨多个服务器自动分区(缩放)以进行并行处理。多样性——传统的关系数据库需要在加载数据之前定义数据结构,而在HDFS中,加载数据就像复制文件一样简单——可以是任何格式。这意味着Hadoop可以轻松管理、存储和集成数据,无论是文本文档、JSON或XML格式、照片,甚至是电子邮件中的数据。Velocity-MPP架构和强大的内存工具(包括Spark、Storm和Kafka)构成了Hadoop框架的一部分,使其成为处理实时或近实时流的理想解决方案。云计算的出现使得Hadoop的优势更加明显,体现在Elasticity(弹性)层面。基于云的服务器提供按需、可扩展的处理工作负载,这意味着整个机器网络可以根据需要进行扩展,以满足海量数据处理的挑战,而硬件成本则受到即用即付模式的限制,不会过高。当然,在具有高度敏感数据的受监管行业(例如金融服务)中,云计算可能会受到怀疑,在这种情况下,我们还可以考虑使用本地基于云的解决方案来保护数据。列式存储VS行式存储的硬件优势似乎还不够引人注目,毕竟目前的硬件成本不是很高。但是,基于列的存储方式与传统的基于行的存储方式有明显的区别。Hadoop本身支持基于列的存储,这为分析查询提供了巨大的性能和压缩优势,这可能是传统关系型数据库无法企及的。的。上图说明了这两种方法之间的区别。使用传统的基于行的存储可以快速识别和获取单行,这对于需要获取或更新单行值的事务处理系统非常有用。然而,分析查询往往会获取、汇总和处理数百万甚至数十亿行数据。例如:SELECTteam,sum(value)FROMsalesGROUPbyteam;在基于行的系统上,此查询需要将每一行的每一列提取到内存中并按团队分组。在具有数百列和数十亿行的表中,这是非常低效的。然而,在基于列的解决方案中,同样的查询只需要处理大约2%的数据,具有巨大的性能优势。在压缩层面,TEAM列中的重复值可以用简单的字典编码技术代替,从而对数据进行压缩。在10亿行文本的简单测试中,基于列的存储方式节省了50%的成本,使用Parquet数据格式可以将56Gb的文本文件压缩到26Gb。Hadoop比Oracle便宜!当然,这里的便宜并不是简单的说开源版的Hadoop不用购买,而Oracle只需要购买商业成本。这里的计算是两者的总拥有成本。虽然Hadoop的部署成本越来越高,但开源软件和廉价硬件的优势意味着托管大型Hadoop系统比Oracle数据库便宜得多。在存储168TB数据并考虑硬件、许可成本、IT人员支持和维护的系统上,研究发现Oracle的成本比相应的Hadoop解决方案高出约200%。当然,这还没有考虑将数据从数据仓库迁移到Hadoop的成本。虽然Hadoop看起来更好,但它并不适合ACID事务。在很多情况下,Hadoop没有办法保证所有数据的强一致性。事实上,Hadoop牺牲了一些ACID合规性来提高系统吞吐量。Hadoop可以处理海量数据,最小的典型工作单元约为128Mb,如果将其与典型的约8KB的Oracle数据块进行比较,Oracle可以管理一系列OLTP和OLAP,使用单行查找来处理大短期运行事务的数量,而Hadoop更适合单进程批处理操作。大多数数据仓库都适合批处理、摄取和存储海量数据集,而Hadoop就是专门为这种用例构建的。在Hadoop生态中,ClouderaImpala、ApacheHive、SparkSQL等产品增加了针对大规模数据集的低延迟SQL查询和分析工具。同样,在商业智能系统中,ACID合规性通常不是那么重要。99.9%的准确率通常只是一个口号,而不是业务关键要求。结论当然,Oracle用了30多年时间才确立的企业数据库中心地位不会很快消失。事实上,Oracle已经采用了OracleBigDataAppliance、ExadataAppliance和Oracle12cIn-Memory来适应新的需求和挑战。然而,整个数据仓库架构发生变化,使Hadoop和它附带的许多技术产品成为最适合整个堆栈的工具。同时,我们需要注意需求驱动的开发,而不是CV驱动的解决方案。