在处理海量数据的过程中,关系型数据库的局限性会较为突出,因为其二维表的存储结构有时并不适用于行与列的搜索和计算。在Hadoop体系下,人们可以用HBase,而MapReduce作为其底层的计算工具,这是常见的大数据处理模式。后来,Google对其进行了改进,放弃MapReduce,随之用Bigtable加以取代。相比于MapReduce而言,Bigtable对其计算性能和安全性能进行了改进,在吸收关系型数据库的基础上,Bigtable采用采用分布式存储技术、并发数据处理,动态伸缩性也大为加强,加强了用户对数据分布和格式的动态控制。
如果说Bigtable在海量数据计算方面较为突出,那么用于存储这些海量数据的就是GFS。GFS也是Google开发的大型分布式数据存储架构,其优点一个是数据量大,一个是可以在成本低廉的硬件上加以实施。其存储架构分为一个主服务器和多个分服务器。主服务器可用于记录存储位置、对文件系统进行运行和维护、回收其他服务器上的垃圾等。下面再详细说明一下GFS与MapReduce的关系。
通常GFS用于存储海量数据,文件系统将数据在各个节点冗余复制。在某种程度上MapReduce可以对GFS进行补充,以便充分利用GFS中廉价的服务器所提供的CPU。和GFS一起构成了处理海量数据的核心力量,构建类似于Google的搜索索引也是一样的。但是这两个系统都缺乏实时随机存取数据的能力,在web应用处理方面还有所欠缺。
GFS的不足之处除了上述以外,在这一系统中并不适合存储非常大的文件,而不适合存储成千数万的小文件,例如社交平台上的图片,因为文件的众多数据信息最终要存储在主节点的内存中,文件数量庞大会导致服务器运行缓慢。
针对上述存在的问题则需要一个能够驱动交互应用的解决方案,而且能同时利用以上两种基础架构和依靠GFS 存储的数据冗余和数据可用性较强的特点。可以将存储的数据进行拆分从而转换成较小的条目,然后由系统将这些小记录聚合到非常大的文件中,同时提供索引排序,使用户可以查找最少的磁盘就能够获得所需要的数据。尚学堂陈老师指出,做好这些工作的目的是要让它能够及时存储爬虫的结果,与MapReduce协作生成搜索索引。由于摒弃了一些关系型数据库的特性,所以可采用简单的API来进行增删改查操作,同时加一个扫描函数,以在较大的键范围或全表上迭代扫描,最终形成一个管理结构化数据的分布式存储系统BigTable。
以上介绍了Bigtable的形成过程,从而引出其与MapReduce和GFS之间的关系,这也是在了解Bigtable的过程中所必须掌握的常识。
领取专属 10元无门槛券
私享最新 技术干货