大数据 第三章 Google的思想之一 二GFS和MapReduce

本文介绍了大数据处理中的关键概念,如OLTP与OLAP的区别、事务处理的特点及其在数据库中的作用,探讨了数据仓库的重要性,并分析了为何传统的关系型数据库不适合大数据处理。同时,还深入讲解了Google的低成本数据处理策略,包括GFS和MapReduce的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在进行大数据之前需要了解两个概念

        OLTP:online transaction processing 联机事物处理。也称为面向交易的处理过程,其基本特征是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,是对用户操作快速响应的方式之一。OLTP 是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易
    什么是事物?事物的特性?
    是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性。
    事物是由多个DML(data munipulation lauguage 数据操作语言)这些操作要么都成功,要么都失败.
    事物的特性
        原子性: 事务是数据库的逻辑工作单位,事务中包括的诸操作要么全做,要么全不做。
        隔离性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
        一致性:一个事务的执行不能被其他事务干扰。
        持久性 一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。
OLAP(online analytic processing)联机事物处理
OLAP 是 数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
数据仓库
数据仓库,英文名称为 Data Warehouse,可简写为 DW 或 DWH。数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。
为什么不使用Oracle,Mysql,SqlServer等关系性数据库存储数据
1.费用太高 Oracle 用于商用一年的价格是 50万 ~ 60万
2.关系型数据库一般适合处理结构化数据(structed data),而大数据中的数据是多样化的,不固定的

Google的基本思想

Google的低成本之道
    不使用超级计算机,不使用存储(淘宝的去 i,去 e,去 o 之路
    大量使用普通的 pc 服务器(去掉机箱,外设,硬盘),提供有冗余的集群服务
    全世界多个数据中心,有些附带发电厂
    运营商向 Google 倒付费
Google的思想之一 GFS Google File System
    GFS:谷歌的文件系统
        是一个分布式的文件系统,最主要的事解决数据存储问题
分布式文件系统的原理?为什么可以解决数据存储问题?
    在我们日常生活中常用的网盘的功能就是一个典型的分布式的文件系统
    一张图解释分布式系统的原理

这里写图片描述

    图中最左侧的圆圈代表在客户端的任何数据,可以是MP3,电影,文件,想要把数据存储下来我们应该怎么做?很简单,直接寻找到一块硬盘便可以了,这样便解决了数据的存储问题
    但是我们如果直接存储在硬盘上会带来哪些问题?
        1.假设现在数据有10G大小,但是我们的硬盘只有6G大小,就存在着数据存储不下的问题。
        2.假设硬盘足够大,能够存的下10G的文件 甚至是100G,但是如果有一天我们的硬盘坏掉,那么所有的数据都将消失,这样就带来了数据不够安全的问题
    接下来我们来解决上面的问题
        1.硬盘的容量不够大 一块硬盘的容量不够大,我们就多购买几块硬盘边可以存下更大的文件,在一个分布式的文件系统来说。无论是Google的文件系统还是在Hadoop中的文件系统,都会使用多个接点不止一个节点来保存数据,相当于我们的多块硬盘,在看google的文件系统 ,在google的服务器中,会去掉机箱,外设,硬盘,所有的数据都存储在内存中,内存的读取的数据非常快,但是在停电之后,数据就会丢失,这就跟我们所遇到的第二个硬盘上的数据不够安全是一回事
        2.数据不够安全的问题,在GFS的这篇论文中google提出了数据冗余的思想,就是将数据分开存放,将数据多复制几分,存储在别的服务器上,Hadoop的文件系统的默认冗余度是3,就是将同一份数据在不同的服务器上存储三份

HDFS文件中数据块概念
    问题:如果客户端的文件是1G的大小,用户在上传到900M的时候网络突然断开,这样就产生了错误,这样网络连通之后用户又只能从新上传,这样效率便比较的低,如何才能解决这样的问题?
    在一个分布式的文件系统中,并不是讲数据一次性的上传,或者一次性的下载,它安装HDFS的数据块的大小进行传输,在Hadoop1.x的版本中数据块的默认大小是64M,在Hadoop2.x的版本中数据块的默认大小是128M
    数据以数据块的大小上传到服务器的时候,数据节点会通过自己的水平复制功能让数据量打到冗余度的要求,数据在水平复制的时候采用机甲感知的方式
实际上HDFS就是一个GFS的盗版,HDFS采用主从式的结构,主节点NameNode,从节点 DataNode,加上处理日志(edits),元信息(fsimage)的SecondaryNameNode 这些在后面的章节再介绍
Google的思想之二 MapReduce
MapReduce问题的来源 —->PageRank的问题
PageRank通过网络浩瀚的超链接关系来确定一个页面的等级。Google把从A页面到B页面的链接解释为A页面给B页面投票,Google根据投票来源(甚至来源的来源,即链接到A页面的页面)和投票目标的等级来决定新的等级。简单的说,一个高等级的页面可以使其他低等级页面的等级提升。

简单理解

这里写图片描述

    如图:图片的左边,存在四个网页,指向关系如图所示,在4个网页中如何知道哪一个网页是最重要的?在Google的向量矩阵中如图右边的矩阵便可得出网页三是最重要的网页,但是Google的网页何其大,这样下来会是一个超大的计算问题,就算是天河多少多少号来都是算不出来的,由此便产生了MapReduce的编程模型,如何运算这样大量的值
MapReduce的编程模型

这里写图片描述

如图所示,将1+2+3+4+....+10 比喻成一个超级大的任务,一般的计算机无法处理, 但是我们却可以将它拆分成一个一些列的小任务,1+2+3+4和5+6+7和8+9+10,然后分别计算出他们的结果10 18 27 然后相加得出我们想要得到的最后的结果55
这样的编程模型一般有两部分组成,一部分是Mapper 图中 蓝色框圈中的部分,一部分是 Reducer的部分,如中红色框中的部分,由图中可知在分隔任务到产生最后的结果我们一共参数了4组数据 以key value 的方式 
1.key1 value1 Mapper的输入 相当于 Google要处理的所用网页
2.key2 value2 Mapper的输出 想当于将所用要处理的网页分隔成小任务之后的数据
3.key3 value3 reducer的输入 reducer的value是一个集合
4.key4 value4 reducer的输出
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值