赞
踩
目录
前言:大数据技术诞生之初,就是为了解决海量数据的存储和计算问题。
大数据起源于Google。
Google是当时世界上(尽管目前也是)最大的搜索引擎公司,由于互联网时代的到来,Google积累了海量的用户,海量用户意味着海量的数据,谷歌需要将这些数据保存下来,传统的保存数据的方式已经满足不了Google的需求了。
首先我们需要了解,海量数据的存储面临着三个困难:
①:数据能够存储的容量足够大;
②:数据的读写速度要足够的快;
③:数据要要有可靠性的保证,也即数据备份。
首先看一个问题:
当一个仓库无法装载更多的货物的时候,我们如何解决更多的货物的存储问题?
没错,我们可以扩建仓库,如果我们想存储更多的数据,我们可以不断的升级计算机,通过升级内存,磁盘,CPU等将一台计算机变得更强大,比如商业服务器不够用,升级为小型机,中型机,大型机,甚至超级计算机。以扩建“仓库”的方式来升级存储能力的方式也称作是:“垂直伸缩”,拜摩尔定律所赐,计算机发展的早期,每过一年半,工程师们总能将计算机的性能提升一倍
倘若升级了计算机之后,依然无法存储待存储的数据,可以使用另外一种垂直伸缩的技术:独立磁盘冗余队列,也即RAID技术,如果本科专业是计算机相关专业,应该都会在教材里面看到该技术,RAID技术有很多种类型,比如RAID1,是在数据写入磁盘的时候,将一份数据同时写入到两块磁盘,任何一块新的磁盘损坏,数据依然是安全的。剩余的其他的RAIDx 读者可以根据兴趣自行了解。
一言以蔽之:RAIDx 技术能够实现海量数据的存储面临的三个困难。
但是进入了互联网时代,垂直伸缩的路子有些难走了,一方面是升级计算机带来的成本问题,另一方面由于有些巨头公司(例如Google,Alibaba)即便是世界上最牛X的超级计算机,也无法满足其需求。
Google作为这个世界技术最牛的公司解决这一问题,责无旁贷。工程师们想:如果扩建仓库遇到了瓶颈,那么就新建更多的仓库,也即一台计算机存储不了如此庞大的数据,那么就用N台,就形成分布式集群,再将RAID运用到分布式服务集群上(其实就是HDFS的思想),如此就解决了海量数据的存储问题。
这种通过不断添加计算机来提高数据存储能力的方式也称作是“水平伸缩“,垂直伸缩总会遇到天花板,但是水平伸缩理论上却没有尽头!
当一匹马拉不动车的时候?也即:由数据存储引发的数据计算的问题:
大数据的鼻祖Google,它存储着几乎全世界所有可访问的网页,数以万亿的规模,消耗的磁盘可达万块,为了将这些文件存储起来,Google开发了GFS(Google 文件系统)将数千台服务器上万块磁盘统一管理起来,然后作为一个文件系统,存储所有这些网页文件。
Google将这些网页文件存储起来之后,需要构建索引,然后对文件中的单词进行词频统计,然后根据PageRank算法计算网页的排名,也即Google需要对这数万计磁盘上的文件进行计算处理,这并不是一般场景的计算问题。
我们先来看看一般的计算,也即传统的软件处理模型:
输入 --> 计算 --> 输出 模型,一个程序给它传入一些数据,或者是程序从文件中读取数据,然后对这些数据进行处理,最后得到输出结果。一个程序能够调度的网络带宽,常常以MB(通常百MB),内存容量以GB(通常几十个GB)来计量,但是在互联网大数据时代,例如一个稍微大一些的互联网企业,需要计算处理的数据常常以PB计算,可以发现,传统的计算处理模型并不能满足大数据场景下的计算要求。也就是说,这么大的数据量,计算机根本算不动!
一匹马拉不动车的时候,我们想过更换更好的马,商业级的服务器不够用,就升级为小型机,小型机不够用,就升级中型机,实在不行就升级大型机,超级计算机。和前面的海量数据存储遇到一样的问题,光靠升级硬件,是不能够满足像Google这样每天需要处理几十亿用户请求的计算需求的。
那么应该如何解决呢?
应该多添加几匹马。
前面我们提到海量的数据存储于分布式文件系统中,也即存储在分布式服务器集群中,和海量数据的分布式存储的思路一致,海量数据的计算,使用数千台甚至上万台计算机构建大数据处理集群(MapReduce分布式计算框架),利用更多的网络带宽,内存资源 ,CPU核心数去执行计算。
由于数据量巨大,而按照MapReduce编程框架编写的MR程序较之于数据量却非常的小,所以大数据场景下的计算原则是:移动计算大于移动数据。道理非常简单,因为移动程序更划算。
大数据的主要应用场景是:数据分析,数据挖掘与机器学习。其中数据分析主要使用Hive,Spark-SQL等SQL处理引擎完成,而数据挖掘和机器学习则由专门的框架如TensorFlow等内置了主要的数据挖掘和机器学习的算法。
在以前,我们在进行数据分析时候,只能针对数据库中的数据进行分析和统计,受到数据量和计算能力的限制也只能对重要的数据(例如财务相关的数据)进行统计,但是大数据技术出现之后,能够存储的数据更多,计算能力也有更大的提升,因此我们可以对记录更多的数据,然后对其计算和分析。
正是因为对海量数据的存储和计算问题得以解决,才使得很多公司能够更加详解的采集用户的行为数据,形成了数据仓库,因为老板知道,自己的服务器(数据仓库)存的下,也能应付海量数据的计算,这一切都得益于大数据计算。
由于数据仓库和分布式计算框架的存在,使得数据挖掘也进入了大数据时代。以前,受到存储能力和计算能力的限制,“数据挖掘机”,只能挖掘 ”小小的数据山“,而现在,可以使用更大的数据挖掘机(更好的计算能力),去挖掘更大的数据山(真正海量的数据),如此一来就能够挖掘到更多的数据的价值。比如挖掘到两个商品之间的关系,就可以进行关联分析,最终让用户尽可能的看到想要购买的商品;还可以挖掘到人和人之间的关系,将各自购买过的商品出现在对方的推荐列表中;还能够将每一个人身上不同的特性挖掘出来,形成用户画像,对同一类人推荐可能购买的商品。
我们知道机器学习实际就是使用数据训练出来一个模型,然后将带输入值输入到该模型中,然后得到该值的输出值。
在没有大数据的时候,我们受到数据采集,存储,计算能力的限制,只能通过抽样的方式获取小部分数据,无法得到完整的,全局的,细节的规律,有了大数据技术之后,我们能够把全部的历史数据收集起来,统计其规律,进而预测正在发生的事情。这就是大数据时代的机器学习。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。