您现在的位置是:首页 > IT基础架构 > 计算存储 >
闲聊Oracle Exadata与Hadoop
摘要本文也不是写给专业技术人员看的技术类文档,只是本人因为工作需要,在学习Oracle Exadata系统架构的过程中,自己的一些感触和体会,只是想分享给对Oracle Exadata和其他计算机技术感兴趣的人们,希望大家能一起探讨。...
在文章开始前先作个声明,本人并非专业技术人员,充其量只能算IT从业人员和技术爱好者。本文也不是写给专业技术人员看的技术类文档,只是本人因为工作需要,在学习Oracle Exadata系统架构的过程中,自己的一些感触和体会,只是想分享给对Oracle Exadata和其他计算机技术感兴趣的人们,希望大家能一起探讨。因此本文在谈到技术细节问题时,一定漏洞百出,敬请专业人士指正。
Oracle Exadata是Oracle公司研发的一款Oracle数据库一体机,关于Exadata的介绍文档,在网上能找到很多,它有很多特性,Smart scan,Smart Flash cache,HCC,Storage index等等,在本文中不对这些特性作详细说明。本文探讨的只是Oracle在设计这款一体机时,借鉴了Hadoop HDFS(Google Gfs的开源实现)等分布式计算集群的一些设计理念,使Oracle数据库的运行环境突破了传统基于共享存储的scale-up架构,创新的使用了基于scale-out的智能存储节点的架构,从而极大地提高了Oracle数据库在海量数据分析类应用的性能。
一、Hadoop 项目简单介绍:
由于本文探讨的是Exadata和Hadoop的相似处,因此先简单介绍下Hadoop。
Hadoop是Apache开源软件基金会的一个项目的总称,它包含了HDFS,MapReduce,Hive,Hbase,Pig等组件,它是基于Googel GFS和MapReduce的论文发展起来的开源软件项目,而HDFS和Hadoop MapReduce是它的核心。
HDFS是一个开源的分布式文件系统,和单机文件系统一样,它也使用目录树结构,和单机文件系统不同的是,它的文件系统是跨越整个Hadoop集群的,下图是它的架构
HDFS集群是主从架构,它由一台Namenode节点(Master)和多台Datanode节点(Slaver)构成。Namenode节点和Datanode节点都是标准的x86。Datanode节点采用DAS存储的方式,即x86内置多块大容量硬盘,Datanode节点可以多达上千台。
HDFS通常用于存储大文件,在HDFS中每个文件都被切割为固定大小的数据块,然后被分散存放于多台Datanode的硬盘上。并且每个数据块都会有副本存放于远端机架的Datanode上,副本数一般设置为三个。Namenode节点不存放实际的文件,而只存放整个文件系统的目录树等元数据。当客户端需要访问存储于HDFS的某个文件时,首先需要访问Namenode节点,以取得文件存放的位置信息(哪几台Datanode,以及在Datanode硬盘上的具体地址),然后根据这些目的地址对各Datanode上存放的数据并行地进行访问。
HDFS的这种分布式存储架构,主要有几个好处:1、当存储空间不够时,只要简单增加Datanode节点,而系统自动会把数据块分配到新Datanode节点上,而无需人工干预。从而使得Hadoop集群存储的扩展性非常好。2、当客户访问某一文件时,由于该文件存放于多台设备上,因此是由多台Datanode并行处理的,这样大大增加了整个系统的吞吐量。3、HDFS的数据都有多个副本,HDFS 系统在后台自动检测数据的一致性,并能在发生错误时,自动恢复数据,因此系统有很好的可用性。4、由于Hadoop中硬盘是顺序读写的,因此读写硬盘的性能很好。
但是需要注意的是:Namenode节点为了加快对客户端的响应速度,是把文件目录树等元数据缓存于主内存中的,因此整个文件系统的容量受限于Namenode节点的内存大小,所以说理论上Hadoop集群的扩展性也并非无限的,但相对于传统存储系统,Hadoop的容量已经很大了,据说目前Facebook已经有容量超过100PB的HDFS集群。
(本文不涉密)
责任编辑: