本文主要简单介绍下大数据、Hadoop 起源以及 Google 三篇论文
1PB 够大吗?
如果你没有直观印象,可以联想一下你的电脑硬盘容量,标配是 500G-1TB,大部分人用了一两年,可能这部分容量都没用完。而 1PB=1024TB=1048576GB。
在实际中,一个小有名气的游戏一天的数据量就在数十 TB 左右,甚至更多。
如果你以为 PB 单位已经是最大了?那就大错特错了!!!!
在 PB 之上,还有 EB(Exabyte 百亿亿字节 艾字节),ZB(Zettabyte 十万亿亿字节 泽字节),YB(Yottabyte 一亿亿亿字节 尧字节),而这些单位也只是为了方便统计海量数据所给出的当前单位,在未来还可能出现更大的单位。
当然,大数据并不只是数据量大而已,它还有其他更深的含义。
对于大数据,麦肯锡全球研究所给出的定义是:
“ 一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围的数据集合。”
大数据具有五大特点,称为 5V。
多样(Variety) 大数据的多样性是指数据的种类和来源是多样化的,数据可以是结构化的、半结构化的以及非结构化的,数据的呈现形式包括但不仅限于文本,图像,视频,HTML页面等等。
大量(Volume) 大数据的大量性是指数据量的大小,这个就是上面笔者介绍的内容,不再赘述。
高速(Velocity) 大数据的高速性是指数据增长快速,处理快速,每一天,各行各业的数据都在呈现指数性爆炸增长。在许多场景下,数据都具有时效性,如搜索引擎要在几秒中内呈现出用户所需数据。企业或系统在面对快速增长的海量数据时,必须要高速处理,快速响应。
低价值密度(Value) 大数据的低价值密度性是指在海量的数据源中,真正有价值的数据少之又少,许多数据可能是错误的,是不完整的,是无法利用的。总体而言,有价值的数据占据数据总量的密度极低,提炼数据好比浪里淘沙。
真实性(Veracity) 大数据的真实性是指数据的准确度和可信赖度,代表数据的质量。
1、 大数据核心的问题有:
1、海量数据如何存储? 2、海量数据如何计算?
2、 大数据技术主要解决以上两个问题。举两个例子:
1、大型电商网站的商品推荐:海量的历史的售卖数据如何存储?如何从海量的历史售卖数据中计算出盈利最大化的数据推荐给用户? 2、天气预报:海量的天气数据如何存储?如何从海量的历史数据中计算预测出未来的天气?
大数据的意义不仅仅在于生产和掌握庞大的数据信息,更重要的是对有价值的数据进行专业化处理。
人类从来不缺数据,缺的是对数据进行深度价值挖掘与利用。可以说,从人类社会有了文字以来,数据就开始存在了,现在亦是如此。这其中唯一改变的是数据从产生,到记录,再到使用这整个流程的形式。
随着数据库的增大,传统的数据处理无论是存储数据的能力还是处理数据的能力都瓶颈渐显。而大数据的诞生更好地处理了以上两个问题。传统数据处理体系与大数据体系的区别如下图:
** OLTP 与 OLAP **
谈到大数据,就不得不提 Google 的三驾马车:Google FS、MapReduce、BigTable。虽然 Google 没有公布这三个产品的源码,但是他发布了这三个产品的详细设计论文,奠定了风靡全球的大数据算法的基础!
1、《Google-File-System》
一个面向大规模数据密集型应用的、可伸缩的分布式文件系统;
中文翻译版:http://blog.csdn.net/xuleicsu/archive/2005/11/10/526386.aspx 中文版下载地址: https://pan.baidu.com/s/1i3verZJ
2、《Google-MapReduce》
一种处理和生成超大数据集的分布式计算模型;
中文翻译版:http://blog.csdn.net/active1001/archive/2007/07/02/1675920.aspx 中文版下载地址: https://pan.baidu.com/s/1hq7XBI8
3、《Google-BigTable》
一个用来处理海量数据的分布式、结构化数据存储系统;
中文翻译版:http://blog.csdn.net/accesine960/archive/2006/02/09/595628.aspx 中文版下载地址: https://pan.baidu.com/s/1eQxmrVc
谷歌三大论文(中英)百度云链接: https://pan.baidu.com/s/1nnn9vu41T9ARrRtJLBhV9Q 提取码: 6666
** 3.1.1 传统的文件系统存在如下问题:**
而 Google 提出的 GFS(Google File System)思想能解决以上问题。GFS 核心的思想是硬盘横向扩展以及数据冗余。
** 3.1.2 GFS 的优点:**
** 3.1.3 分布式文件系统 HDFS 体系结构如下图:**
其中上传数据到分布式文件系统的基本过程如下: 1、客户端上传数据块到其中一个硬盘。 2、分布式文件系统会根据机架感知计算出存储数据库的位置,通过水平复制冗余多份数据。
那么何为机架感知?如下图:
** 3.1.4 分布式文件系统如何提高查询速度?**
(HDFS 通过倒排索引存储元数据) 采用倒排索引,倒排索引本质上也是索引,那么什么是索引?
说到倒排索引能联想到正排索引。那么什么是正排索引和倒排索引。通过如下例子来说明:
正排索引:根据文件找到关键字(如所有引擎爬到一个文件,这个文件提取出 10 个关键字,根据这个文件找到这 10 个关键字)
倒排索引:在搜索引擎中输入一个关键字,需要搜索出相关的文件,如果使用正排索引,需要遍历所有文件,这是不可能去遍历的(效率太低)。就产生了倒排索引,倒排索引是记录关键字对应文件的位置,把文件的位置根据关键字存起来,那么输入一个关键字的时候,就知道这个关键字所对应的文件都在什么地方,从而快速搜索得到相关的文件。
如下图例子:
** 3.2.1 来源**
分布式计算模型来源于 PageRank(网页排名)
** 3.2.2 什么是 PageRank?**
Google 每天爬取海量的网页,那么如果按照重要程度来排名网页,应该如何排序? 如下图例子,下图说明的是 4 个网页之间如何排序,核心思想是把网页之间的关系转换成矩阵,因为矩阵是可以计算的,那么可以计算出各个网页的重要程度,用数据来表示,数字越大表示越重要。但是 Google 每天爬取的网页数量是非常庞大的,实际上不可能用一个矩阵来计算,因此分布式计算是来解决这个问题的。核心思想是把一个大的矩阵拆分成很多足够小的矩阵,计算每个小得矩阵,再合并各个小矩阵的结果,从而得出大矩阵的结果,而这个过程是在分布式环境中运行的,如下图:
** 3.2.3 分布式计算框架 MapReduce**
关于 MapReduce,有几点需要注意:
** 3.3.1 大表的基本思想**
把所有数据存入一张表,通过空间换取时间。
** 3.3.2 HBase** HBase 是 hadoop 生态中大表的实现,看下面一个例子,对比数据存储在关系型数据库 Oracle 和 HBase 中
via: