大数据技术发展 (一):大数据技术的起源
大家好,这里是抖码课堂,抖码课堂专注提升互联网技术人的软硬实力。在抖码课堂的公众号中可以听这篇文章的音频,体验更好~~~~
今天我们来聊聊大数据技术的起源,这里我先告诉大家,大数据技术实际上是起源于搜索引擎技术的,所以我们需要先简单了解下搜索引擎的工作原理。
网络搜索引擎
我们都用过 google 和百度,我们在 google 和百度上可以通过关键字搜索到在网络上所有我们想要的内容。那你有没有想过下面的问题:
当我们输入关键字,然后点击搜索的时候,google 和百度为什么能在很短的时间内返回我们想要的结果呢?
搜索返回的结果有很多条,它们又是按照什么规则排序的呢?为什么第一条结果就得排在第一位呢?
上面的两个问题其实就是网络搜索引擎技术需要解决的问题,google 和百度本质上都是通过搜索引擎来建立用户和网页之间的连接。
接下来,我们先来思考上面第一个问题的解决方案。我们要解决的问题就是用户通过搜索关键词,然后得到这个关键词所在的所有网页。
方案一
要解决这个问题,我们能想到的最简单的解决方案就是:当用户发起关键词查询的时候,google 和百度就去全网搜索每一个网页,然后找出包含用户需要的关键词的那些网页,然后返回给用户。
方案二
既然访问全网的网页非常的慢,那我们可以事先将全网的网页内容抓取过来,然后存储到内部的服务器中,这样,每次用户搜索关键词的时候只需要搜索我们内部的服务器上的内容就可以了,这样的优化措施就可以提高搜索的速度了,这个就是方案二了。
实际上,google 和百度每天要做的事情就是不断的抓取全网的网页然后存储到他们内部服务器中,这个动作称为爬取网页,使用的技术就是爬虫技术。
方案三
虽然把全网网页的数据都存储在自己的服务器上,但是,当数据量越来越大的时候,用户搜索某个关键词所在的网页的速度也会很慢,因为要从全部的网页中去匹配有没有包含指定的关键词也是一个很慢的动作。接下来就得解决这个查询慢的问题。
以上查询慢的原因在于我们需要对每一个网页数据进行匹配,如果我们事先知道用户需要查询的关键词在哪些网页上的话,那么当用户查询这个关键词的时候,我们就可以直接将这个关键词对应的所有网页返回给用户了,就不用在用户搜索的时候,拿着关键词去匹配每一个网页了,这样的话,查询就可以在很短的时间内得到结果了。
所以,现在的问题就变成了怎么样得到每一个关键词出现在哪一些网页上。这个问题我们可以通过先对所有网页内容进行分词,然后同时记录每一个词所在的网页的 url,这样将全网网页数据按照这个逻辑处理完后,就可以得到每个词及其出现的所有网页了。这个过程叫做倒排索引,本质上就是给每一个词建立索引,在计算的过程中记录这个词所在的网页的 url。
至此,我们就可以通过爬取网页数据 + 倒排索引的技术使得用户和网页之间能够快速的建立连接了,也就解决了开篇提到的第一个问题。
接下来,我们看看第二个问题。一个关键词一般会出现在多个网页中,那么这些网页是以什么顺序排列在用户的面前呢?要对网页进行排序的话,那么首先要解决的问题就是使得网页之间可以排序,我们可以通过给每一个网页计算一个权重值,然后就可以根据权重值来排序了。
那这个权重值怎么计算呢?google 研发出了一个非常著名的算法 PageRank,它可以计算每个网页的权重 (也就是网页的重要性),在这里,我们不打算深入研究 PageRank,我们就举一个简单的例子:一个网页如果被很多的网页引用了,那么这个网页相对来说就比较重要,它的权值就比较高了。所以说,重要的网页排名靠前这个是比较自然的。
大数据技术起源
前面我们了解了搜索引擎的实现原理,接下来我们来关注另一个非常重要的问题,那就是数据量。
搜索引擎需要爬取全网的网页数据,这个数据量得多大呢?我们先看下面一张图片,这张图片是从 1991 年以来全网网站的数量的统计:
从上图我们可以看到以下几点:
第一个网站是 1991 年 8 月份出现的
google 是在 1998 年成立的
在 google 成立的第三年,也就是 2000 年,网站的数量呈爆炸式增长,相比 1999 年增加了 438%
网站数量的增多,导致网页的数量增多,那么 google 需要爬取的网页的数量就增多,爬取过来的网页的数据量已经超过了一台服务器可以存储的大小了。这个时候 google 就需要解决数据量越来越大的问题了。要解决这个问题有两种方式:
对单台服务器进行优化,不断增加磁盘大小,提升性能,也就是寻找更好的服务器
部署一个超大规模的服务器集群,这个服务器集群由大量的普通的商用服务器组成,可以将爬取过来的数据通过分块分布式的存储在这个集群中
以上方案一需要的服务器太贵,成本太高,所以 google 选择了方案二,google 将普通的服务器组织到一起,形成一个集群就解决了这个数据量大的问题,成本相对较低。
为了支持将所有网页数据进行分块,然后分布式的存储在集群中的所有机器上,google 研发了一个分布式存储文件系统,那就是 GFS (The Google File System 的缩写)。GFS 是为了解决大量数据分布式存储的问题。
数据存储的问题是解决了,那么怎么样基于分布式存储的数据进行计算呢?比如怎么对分布式存储的数据进行倒排索引和 PageRank 的计算呢?为了解决这个问题,google 研发了基于分布式存储的分布式计算技术,即 MapReduce
至此,google 在多台服务器组成的集群上,使用 GFS 分布式存储爬取过来的网页数据,然后使用 MapReduce 对分布式存储的数据进行倒排索引和网页权重的计算,这样解决了数据量越来越大的问题。
GFS 和 MapReduce 是 2000 年左右研发出来的,当时还没有大数据的概念,但是这两个技术及其背后解决问题的思想为后面的大数据发展奠定了基础。所以说大数据技术起源于 google 的搜索引擎技术中。
为什么是 google ?
至此,朋友们有没有想过一个问题,那就是为什么是 google 率先研发出大数据技术呢?其实原因有两点:
google 内部有厉害的软件工程师,也就是说具有很多人才
随着互联网的发展,google 所处的搜索引擎行业率先遇到了大量数据的存储和计算问题
所以,google 研发出了 GFS 和 MapReduce 解决了大量数据的存储和计算问题。
那么,随着互联网的发展,各行各业都会遇到这个大量数据的存储和计算的问题,特别是已经到来的 5G 时代,能收集到的数据越来越多,所以说各行各业和大数据技术的结合势在必行。
这篇文章就分享到这里,感谢你的阅读和收听,如果你觉着这篇文章对你有所帮助的话,你可以分享给你更多的朋友哟~~
系统学习大数据技术:http://douma.ke.qq.com/
版权声明: 本文为 InfoQ 作者【抖码算法】的原创文章。
原文链接:【http://xie.infoq.cn/article/54cba3994760a021bb109d1aa】。文章转载请联系作者。
评论