你好,游客 登录 注册 搜索
背景:
阅读新闻

Google为什么能在0.15秒找到数十万笔资料?认识搜寻霸主的核心技术

[日期:2014-12-03] 来源:科技橘报  作者: [字体: ]

google

    当你在浏览器上输入想要搜寻的字串时,Google会检视数十亿个网页,并依据索引值从中找出内容相符合的网页,再依据相关的规则列出先後次序,而搜寻引擎会将结果以最快的时间回传。

    但是,网络上的资料量不但庞大,而且内容随时都在变化,甚至同一个网页的内容都会一天数变,因此,Google就必须时时进行更新的动作,这个动作叫「爬行」(Crawling),而执行爬行动作的程式一般俗称「爬虫」(Crawler)或「网络蜘蛛」(Spider),除了搜寻引擎之外,常见的应用还有比价系统,像是FindPrice、背包客栈国际订房中心比价等都是。

    而Google之所以能成为其中的霸主,当然是有其过人之处。本篇文章就跟各位读者简单地分享一下Google所开发的三个核心技术:GFS、BigTable与MapReduce演算法。

1.Google FileSystem,用来用以储存大数据

    Google FileSystem(GFS或GoogleFS)是由数百个丛集(Cluster)所组成。每一个丛集有多达数千台的伺服器,是一种分散式容错档案系统,主要的任务是储存网页、影片、照片、Email和GoogleMap等资料,而这些档案极少被删除或异动,大多数时候都是新增或读取,因此,对其进行最佳化的管理就非常重要了。

    储存在GFS的档案会被切割成64MB左右的资料块(Chunk),分别放在三台称为Chunkserver的伺服器内,当Chunkserver发生问题时,主伺服器(MasterServer)就会将资料复制到另一个Chunkserver上。

2.BigTable,利用成对的Key-Value,快速读取资料

    BigTable就字面上的意思看来,就是「大型的资料表」,它主要负责管理GFS的机制,属於分散式资料储存系统,可以管理分布在数千台伺服器上的大数据,就像是一张资料表(Table),资料表上注明了每一台伺服器所有的资料,包括GoogleAnalytics、GoogleEarth、Gmail、GoogleReader、GoogleMap、GoogleFinance以及YouTube等。

    由於上述这些产品的应用对於BigTable的需求与所组成的结构各不相同,因此BigTable采用了键与值Key-Value的资料架构,其具有水平扩充的能力,只要空间不足就可以立即新增资料库,而它的储存容量属於PB等级(1Petabyte(PB)=1024TB)。

    当然对Google而言,系统的回应时间仍是首要考量,因此,BigTable设计时的主要目标就着重於「可靠地处理大量的数据」,因而采用了丛集平行处理技术。


3.MapReduce,用来处理与分析大数据

    MapReduce用来进行大数据的计算,其包含了Map和Reduce两个部份,主要用於大规模资料集的平行运算。

    简单来说,MapReduce在处理资料时,Map函数会把原始资料映射成新的一组键与值(Key-Value)的序对,并切割成有规律性的小资料,并经过Shuffle做排序,最後再透过Reducer函数依相同的Key整合结果,最後才能将整体的结果输出。

    例如,上网查MapReduce这个字串,会透过Map函数计算网页上出现「MapReduce」的次数,如果出现10次就用(MapReduce,10)来表示;再用Reduce函数汇整所有具有相同Key值的资料,并统计它们出现的次数。





收藏 推荐 打印 | 录入:Cstor | 阅读:
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款