MapReduce——理论到编程

(一)前言

对于大数据处理,传统的企业解决方式是:
一个企业将有一个计算机存储和处理大数据。对于存储而言,程序员会自己选择的数据库厂商,如Oracle,IBM等的帮助下完成,用户交互使用应用程序进而获取并处理数据存储和分析。
在这里插入图片描述

特点:

这种方式对结构化数据的处理非常方便,如今,每天网络上都会产生非常庞大的数据量。这些数据有很大一部分是由**关系数据库管理系统(RDBMS)**来处理的。通过应用实践证明,关系模型非常适合于客户服务器编程,如今它是结构化数据存储在网络和商务应用的主导技术。

但是,当代典型的关系数据库在一些数据敏感的应用中(例如为巨量文档创建索引、高流量网站的网页服务,以及发送流式媒体时)表现出的是糟糕的性能。

关系型数据库的典型的主要用于执行规模小而读写频繁,或者大批量极少写访问的事务中。

当涉及到处理大量的可伸缩数据,这是一个繁忙的任务,只能通过单一的数据库瓶颈来处理这些数据。

谷歌的解决方案

通过使用一种称为MapReduce的算法,谷歌解决了这个问题。这个算法将任务分成小份,并将它们分配到多台计算机,并且从这些机器收集结果并综合,形成了结果数据集。

在这里插入图片描述

Hadoop

使用谷歌提供的解决方案,后来诞生了一个开源项目叫做HADOOP。
Hadoop是一个能够对大量数据进行分布式处理的软件框架,并且是以一种可靠、高效、可伸缩的方式进行处理的。
Hadoop使用的MapReduce算法运行,其中数据在使用其他并行处理的应用程序。总之,Hadoop用于开发可以执行完整的统计分析大数据的应用程序。

(二)MapReduce

MapReduce背景

在 Google,每天在需要处理大量的原始数据,比如网页爬取文件、网络日志文件等等.庞大的数据输入量和计算量是一台或者几台机器难以承受的,只有将任务分配到成百上千台处理机上去并行处理,才能在合理时间内完成计算。

MapReduce 思想来源于 Lisp 函数式语言中的设计思想,提供了 Map 和 Reduce 两种函数来实现并行化操作。

MapReduce模型简介

  • MapReduce将复杂的、运行于大规模集群上的并行计算过程高度地抽象到了两个函数:MapReduce
  • 编程容易,不需要掌握分布式并行编程细节,也可以很容易把自己的程序运行在分布式系统上,完成海量数据的计算
    • MapReduce 将分布式系统中如何分布、调度、监控以及容错等逻辑从复杂的细节中抽象出来,使得程序员不需要太多并发处理或者分布系统的经验,就可以处理超大的分布式系统的资源。
  • MapReduce采用“分而治之”策略,一个存储在分布式文件系统中的大规模数据集,会被切分成许多独立的分片(split),这些分片可以被多个Map任务并行处理
  • MapReduce设计的一个理念就是“计算向数据靠拢”,而不是“数据向计算靠拢”,因为,移动数据需要大量的网络传输开销
  • MapReduce框架采用了Master/Slave架构,包括一个Master和若干个Slave。Master上运行JobTracker,Slave上运行TaskTracker
  • Hadoop框架是用Java实现的,但是,MapReduce应用程序则不一定要用Java来写
  • MapReduce 是一种简化的分布式编程模型,它可以自动解决输入数据的分布细节,跨越机器集群的程序执行调度,处理机器的时效,并且管理机器之间的通信请求。

MapReduce模型

上面提到MapReduce 中的操作只有两种:Map 和 Reduce,而这两种操作都是由用户定义的.Map 和 Reduce 的输入与输出数据都是键值对〈key/value〉,可以用两个公式对它们进行简单的描述.
M a p ( k 1 , v 1 ) → l i s t ( k 2 , v 2 ) ; Map (k1,v1)→list(k2,v2); Map(k1,v1)list(k2,v2);
R e d u c e ( k 2 , l i s t ( v 2 ) ) → l i s t ( v 2 ) . Reduce (k2,list(v2))→list(v2). Reduce(k2,list(v2))list(v2).

MapReduce如何工作

让我们用一个wordcount(词频统计)例子来理解这一点 :

  • 输入:一个包含大量单词的文本文件
  • 输出:各个单词的词频(按单词字母排序,每个单词及频数各占一行)

比如:

</
输入 输出
Hello World
Hello Hadoop
Hello MapReduce
Hadoop 1
Hello 3
MapReduce 1
World 1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值