【hadoop】MapReduce分布式计算框架原理
PS:实操部分就省略了哈,准备最近好好看下理论这块,其实我是比较懒得哈!!!
<?>MapReduce的概述
MapReduce是一种计算模型,进行大数据量的离线计算。
MapReduce实现了Map和Reduce两个功能:
其中Map是滴数据集上的独立元素进行指定的操作,生成键——值对形式中间结果。
其中Reduce则对中间结果中相同“键”的所有“值”进行规约(分类和归纳),以得到最终结果。
<?>如何进行并行分布式计算?
并行计算(如SPARK)
是相对于串行计算而言,一般可分为时间并行和空间并行。时间并行可以看做是流水线操作,类似CPU执行的流水线,而空间并行则是目前大多数研究的问题,例如一台机器拥有多个处理器,在多个CPU上执行计算,例如MPI技术,通常可分为数据并行和任务并行。
分布式计算(如HADOOP)
是相对单机计算而言的,利用多台机器,通过网络连接和消息传递协调完成计算。把需要进行大量计算的工程数据分区成小块,由多台计算机分别计算,再上传运算结果后,将结果统一合并得出最终结果。
<?>如何分发待处理数据?
在大规模集群环境下,如何解决大数据的划分、存储、访问管理
<?>如何处理分布式计算中的错误?
* 大数据并行计算系统使用,因此,节点出错或失效是常态,不能因为一个节点失效导致数据丢失、程序终止或系统崩溃。因此,系统需要有良好的可靠性设计和有效的失效检测和恢复计算。
* 设1万个服务器节点,每个服务器的平均无故障时间是1千天,则平均每天10个服务器出错!
<?>MapReduce是什么?
* 一种编程模型:不是一门语言,是一个模型
* 处理大数据集
* 部署于大规模计算机集群
* 分布式处理方式
MapReduce核心代码:
输入数据:
hello word bye world
hello china bye china 经过mapreduce处理后 :hello:3,bye:3,word:2,china:2,chongqing:2
hello chongqing bye chongqing Map核心代码:
Map(Key,Value){
for(each word ‘word’ in value)
collect(‘word’,1);
} Reduce核心代码: Map(Key,Value[]){
int count=0;
for(each w in value)
count++;
collect(Key,count);
}
图解如下:
MapReduce的优势:
1、通过MapReduce这个分布式处理框架,不仅能用于处理大规模数据,而且能将很多繁琐的细节隐藏起来,比如:自动并行化、负载均衡和灾备管理,这将极大地简化程序员的开发工作
2、MapReduce的伸缩性非常好,也就是:每增加一台服务器,就能将差不多的计算能力接入到集群中,而过去大部分分布式处理框架,在伸缩性方面都与MapReduce相差甚远
MapReduce的不足:
1、不适合事务/单一请求处理
MapReduce绝对是一个离线批处理系统,对于批处理数据应用的很好,MapReduce(不论是Google的还是Hadoop的)是用于处理不适合传统数据库的海量数据的理想技术,但它又不适合事务/单一请求。(Hbase使用了来自Hadoop核心的HDFS,在其常用操作中并没有使用MapReduce)
2、不能随即读取
3、以蛮力代替索引
在索引是更好的存取机制时,MapReduce将劣势尽显
4、low-level语言和操作
“直接开始你想要的 —— 而不是展现一个算法, 解释如何工作的。”(关系型数据库的观点) —— High level(DBMS) “展示数据存取的算法”(Codasyl 的观点)—— Low level (MapReduce)
5、性能问题
想想N 个map实例产生M个输出文件,每个最后由不同的reduce 实例处理,这些文件写到运行map实例机器的本地磁盘。如果N是1000,M是500,map阶段产生500,000个本地文件,当reduce阶段开始,500个reduce实例每个需要读入1000个文件,并用类似FTP协议把它要的输入文件从map实例运行的节点上pull取过来,假如同时有数量级为100的reduce实例运行,那么2个或者2个以上的reduce实例同时访问一个map阶段来获取输入文件是不可避免的——导致大量的硬盘查找,有效的硬盘运转速度至少降低20%。
6、仅提供了现在DBMS功能的一部分
作为用于分布式处理的算法技术,MapReduce不是数据库,不支持索引、数据更新、事务及完整性约束,且与多数DBMS工具不兼容。
7、不适合一般的web应用
大部分的web应用,只是对数据进行简单的访问,每次请求处理所耗费的资源其实非常小,它的问题是高并发,所以采用负载均衡技术来分担负载。只有当特殊情况下,比如建索引、进行数据分析等,才可能用MR.
【hadoop】MapReduce分布式计算框架原理的更多相关文章
- hadoop MapReduce Yarn运行机制
原 Hadoop MapReduce 框架的问题 原hadoop的MapReduce框架图 从上图中可以清楚的看出原 MapReduce 程序的流程及设计思路: 首先用户程序 (JobClient) ...
- [转载] Hadoop MapReduce
转载自http://blog.csdn.net/yfkiss/article/details/6387613和http://blog.csdn.net/yfkiss/article/details/6 ...
- python - hadoop,mapreduce demo
Hadoop,mapreduce 介绍 59888745@qq.com 大数据工程师是在Linux系统下搭建Hadoop生态系统(cloudera是最大的输出者类似于Linux的红帽), 把用户的交易 ...
- Hadoop mapreduce框架简介
传统hadoop MapReduce架构(老架构) 从上图中可以清楚的看出原 MapReduce 程序的流程及设计思路: 1.首先用户程序 (JobClient) 提交了一个 job,job ...
- 简述MapReduce计算框架原理
1. MapReduce基本编程模型和框架 1.1 MapReduce抽象模型 大数据计算的核心思想是:分而治之.如下图所示.把大量的数据划分开来,分配给各个子任务来完成.再将结果合并到一起输出.注: ...
- Hadoop- MapReduce分布式计算框架原理
分布式计算: 原则:移动计算而尽可能减少移动数据(减少网络开销) 分布式计算其实就是将单台机器上的计算拓展到多台机器上并行计算. MapReduce是一种编程模型.Hadoop MapReduce采用 ...
- [转] hadoop MapReduce实例解析-非常不错,讲解清晰
来源:http://blog.csdn.net/liuxiaochen123/article/details/8786715?utm_source=tuicool 2013-04-11 10:15 4 ...
- Hadoop MapReduce 一文详解MapReduce及工作机制
@ 目录 前言-MR概述 1.Hadoop MapReduce设计思想及优缺点 设计思想 优点: 缺点: 2. Hadoop MapReduce核心思想 3.MapReduce工作机制 剖析MapRe ...
- Hadoop MapReduce 保姆级吐血宝典,学习与面试必读此文!
Hadoop 涉及的知识点如下图所示,本文将逐一讲解: 本文档参考了关于 Hadoop 的官网及其他众多资料整理而成,为了整洁的排版及舒适的阅读,对于模糊不清晰的图片及黑白图片进行重新绘制成了高清彩图 ...
随机推荐
- java8 中 ImageIO 读取 tiff 格式的图片失败
在java8 及之前版本中,jdk 中的 ImageIO 读取图片内容会失败,解决办法使用 java9 或者使用第三方插件. 插件可以使用 TwelveMonkeys ImageIO,地址:https ...
- asp.net core 获取appsettings.json里的配置
public GoodsController(IConfiguration configuration) { Configuration = configuration; UpFileDir = Co ...
- (转)nginx 安全配置文档
原文:https://www.cnblogs.com/heaven-xi/p/9961357.html#top 1.配置文档中有多处明确写出了nginx的配置文件路径,该路径是测试环境中的路径,线上系 ...
- 【Js】单页面多个倒计时问题
代码: <!DOCTYPE html> <html> <head> <title>多个timeout</title> <script ...
- k8s记录-master组件部署(八)
在 192.168.0.1 app 用户下执行1)程序准备tar zxvf kubernetes-server-linux-amd64.tar.gzmv kubernetes/server/bin/{ ...
- 零起点Python大数据与量化交易
零起点Python大数据与量化交易 第1章 从故事开始学量化 1 1.1 亿万富翁的“神奇公式” 2 1.1.1 案例1-1:亿万富翁的“神奇公式” 2 1.1.2 案例分析:Python图表 5 1 ...
- [LeetCode] 803. Bricks Falling When Hit 打击砖块掉落
We have a grid of 1s and 0s; the 1s in a cell represent bricks. A brick will not drop if and only i ...
- 最常见的Java面试题及答案汇总(一)
Java 基础部分 1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境. JRE:Java ...
- Oracle current redo.log出现坏块后的不完全恢复案例一则
1异常出现 8月30日下午2时左右,接同事电话,说数据库异常宕机了,现在启动不了. 2初步分析 我让现场把alert.log发过来,先看看是什么问题. 关于ORA-00353和ORA-0 ...
- Java开发笔记(一百一十六)采用UDP协议的Socket通信
前面介绍了如何通过Socket接口传输文本与文件,在示例代码中,Socket客户端得先调用connect方法连接服务端,确认双方成功连上后才能继续运行后面的代码,这种确认机制确保客户端与服务端的的确确 ...