首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
换个角度理解云计算之MapReduce(二)
】的更多相关文章
换个角度理解云计算之MapReduce(二)
接上篇 3.Combiner操作 前面讲完Map操作,总结一下就是:一个大文件,分成split1~5,对应于Map1~5,每一个Map处理一个split,每一个split的每一行,会用每一个Map的map方法去处理,经过上面操作,最终输出了5个中间结果. 对于这5个中间结果的每一个来说,都有很多行,每一行是key value格式的,如hello 1,这样子,在传给Reducer之前,为了减少传输的数据量,可以增加一个Combiner过程,把每个中间结果进行化简.因为每个中间结果可能有相同的键…
换个角度理解云计算之MapReduce
上一篇简单讲了一下HDFS,简单来说就是一个叫做“NameNode”的大哥,带着一群叫做“DataNode”的小弟,完成了一坨坨数据的存储,其中大哥负责保存数据的目录,小弟们负责数据的真正存储,而大哥和小弟其实就是一台台的电脑,他们之间通过交换机,互相联系到了一起. 其实这位大哥和这群小弟不仅能存储数据,还能完成很多计算任务,于是他们有了新的名字,大哥叫做“JobTracker”,而小弟们叫做“TaskTracker”,一起组成了MapReduce.今天就来说说MapReduce是怎么一回事.…
换个角度理解云计算之HDFS
学习云计算,必然得了解Hadoop,而Hadoop中的HDFS(分布式文件系统)是一个基础,接下来就写一下我所理解的HDFS. 有一个很有特别的村庄,村庄里面有一个很牛逼的人,叫做“大哥”,村民们都信得过他,于是会把自己家的粮食.农具等等各种各样的东西“打包成一个大的包裹”让“大哥”给存着,等用的时候,再去找大哥要.我们可以姑且简单的认为:“大哥”就是服务器Server,村民们是客户端Client,而村民打包的一个大的包裹就是一个很大的文件. 一开始大家相安无事,后来别的村的人(更多的Clien…
(转)MapReduce二次排序
一.概述 MapReduce框架对处理结果的输出会根据key值进行默认的排序,这个默认排序可以满足一部分需求,但是也是十分有限的.在我们实际的需求当中,往往有要对reduce输出结果进行二次排序的需求.对于二次排序的实现,网络上已经有很多人分享过了,但是对二次排序的实现的原理以及整个MapReduce框架的处理流程的分析还是有非常大的出入,而且部分分析是没有经过验证的.本文将通过一个实际的MapReduce二次排序例子,讲述二次排序的实现和其MapReduce的整个处理流程,并且通过结果和map…
Hadoop学习笔记: MapReduce二次排序
本文给出一个实现MapReduce二次排序的例子 package SortTest; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; import org.apache.hadoop.io.*; public class SortComparable implements WritableComparable<SortComparable> { private Integer fi…
深入理解C指针之二:C内存管理
原文:深入理解C指针之二:C内存管理 内存管理对所有程序来说都很重要.有时候内存由运行时系统隐式的管理,比如为变量自动分配内存.在这种情况下,变量分配在它所处的函数的栈帧上(每个函数都有它自己的栈帧,用来保存它的局部变量和返回地址等).如果是静态或全局变量,内存处于程序的数据段,会被自动清零.数据段是一个区别于可执行代码和运行时系统管理的其它数据的内存区域. C语言也支持动态内存管理,对象就是从堆上分配出来的内存.这是用分配和释放函数手动实现的,这个过程被称为动态内存管理.在C中动态分配内存的基…
菜鸟玩云计算之十二:KVM虚拟机更改大小
菜鸟玩云计算之十二:KVM虚拟机更改大小 参考: http://www.missionfamilybank.org/expanding-resizing-your-qcow2-virtual-machine-image-with-lvm-and-ext4/ http://libguestfs.org/virt-resize.1.html 早晚我们会遇到虚拟机的大小不够用的情况.此时可以用virt-resize命令重新分配虚拟机大小.假设我们的虚拟机vm-gitlab6需要扩充到40G.那么首先关…
深入理解Spring AOP之二代理对象生成
深入理解Spring AOP之二代理对象生成 spring代理对象 上一篇博客中讲到了Spring的一些基本概念和初步讲了实现方法,当中提到了动态代理技术,包含JDK动态代理技术和Cglib动态代理 动态代理这部分我有过一篇博客介绍:动态代理,想深入了解的朋友能够看一看,再回想一下,Spring中怎样区分採用JDK动态代理和CGlib动态代理: 假设目标对象的实现类实现了接口.Spring AOP 将会採用 JDK 动态代理来生成 AOP 代理类: 假设目标对象的实现类没有实现接口,Spring…
云计算设计模式(二十三)——Throttling节流模式
云计算设计模式(二十三)——Throttling节流模式 控制由应用程序使用,一个单独的租户或整个服务的一个实例的资源的消耗.这种模式可以允许系统继续运行并满足服务水平协议,即使当增加需求的资源放置一个极端载荷. 背景和问题 在云应用负载通常上变化的基础上的活动用户的数量或他们正在执行的活动类型的时间.例如,多个用户可能会在工作时间被激活,否则系统可能被要求在每月结束时执行计算昂贵的分析.也有可能是突然和意外的突发活动.如果系统的处理要求超过了可用的资源的能力,其将遭受性能不佳,甚至会失败.该系…
云计算设计模式(二十一)——Sharding分片模式
云计算设计模式(二十一)——Sharding分片模式 将一个数据存储到一组水平分区或碎片.存储和访问大量数据时,这个模式可以提高可扩展性. 背景和问题 由一个单一的服务器托管的数据存储区可能会受到以下限制:•存储空间.一种数据存储为一个大型云应用可以预期含有数据量巨大,可以随着时间的推移显著增加.服务器通常提供的磁盘存储仅是有限的,但它可以是能与较大的取代现有的磁盘,或者添加另外的磁盘的机器作为数据量的增加.然而,由此,不能够容易地增加一个给定的服务器上的存储容量的系统最终将达到一个硬限制.•计…
理解JavaScript继承(二)
理解JavaScript继承(二) 5.寄生式继承 function object(o) { function F() {} F.prototype = o; return new F(); } function createAnother(original){ var clone = object(original);//通过调用函数创建一个新对象 clone.sayHi=function(){//以某种方式增强这个对象 alert("hi"); }; return clone;//…
以吃货的角度去理解云计算中On-Premise、IaaS、PaaS和SaaS
了解云计算的一定都听过四个“高大上”的概念:On-Premise(本地部署),IaaS(基础设施及服务).PaaS(平台即服务)和SaaS(软件即服务),这几个术语并不好理解.不过,如果你是个吃货,还喜欢汉堡,那这个问题就好解决了! 如果我想吃汉堡,有几种方法呢? 1.自己买材料自己做 准备烤箱,准备火腿,准备面粉,准备青菜,然后自己和面,加材料,加热等等.其要求动手能力比较强,比较难做,但是,您可以根据自己的口味,做出符合自己味道的汉堡.这就是On-Premise(本地部署). 典型代表:物理…
详细讲解MapReduce二次排序过程
我在15年处理大数据的时候还都是使用MapReduce, 随着时间的推移, 计算工具的发展, 内存越来越便宜, 计算方式也有了极大的改变. 到现在再做大数据开发的好多同学都是直接使用spark, hive等工具, 很少有再写MapReduce的了. 这里整理一下MapReduce中经常用到的二次排序的方法, 全当复习. 简介 二次排序(secondary sort)问题是指在Reduce阶段对某个键关联的值排序. 利用二次排序技术,可以对传入Reduce的值完成 升序/降序 排序. MapRed…
我理解的数据结构(二)—— 栈(Stack)
我理解的数据结构(二)-- 栈(Stack) 一.栈基础 栈是一种线性结构 相比较数组,栈对应的操作是数组的子集 只能从一端添加元素,也只能从同一端取出元素,这一端称为栈顶 栈是一种后进先出的数据结构,LIFO(Last In First Out) 二.栈的应用 Undo操作(撤销) 程序调用所使用的系统栈 三.栈的实现 其实,实现一个栈结构非常简单,我们只需要复用上一节我们自己封装的数组就可以快速的实现一个栈的创建.以数组的最后一个元素当成栈顶元素. 1. 首先,我们先创建一个栈的借口,里面声…
深入理解Java AIO(二)—— AIO源码解析
深入理解Java AIO(二)—— AIO源码解析 这篇只是个占位符,占个位置,之后再详细写(这个之后可能是永远) 所以这里只简单说一下我看了个大概的实现原理,具体的等我之后更新(可能不会更新了) 当然我讲的很烂,建议如果不是特别在意的话直接跳到下一节看Linux AIO的实现,或者自己去网上找找资料(虽然我找不到就是了). 之前也说过,Java AIO是直接使用epoll + 使用了并发包中的线程池来管理任务实现的异步,整体设计思路我个人觉得应该是采用Proactor模式. 大概就是围绕一个封…
关于MapReduce二次排序的一点解答
上一篇博客说明了怎么自定义Key,而且用了二次排序的例子来做测试,但没有详细的说明二次排序,这一篇说详细的说明二次排序,为了说明曾经一个思想的误区,特地做了一个3个字段的二次排序来说明.后面称其为“三次排序”.测试数据:a1,b2,c5a4,b1,c3a1,b2,c4a2,b2,c4a2,b1,c4a4,b1,c2测试目的:输出以下结果首先根据第一个自段排序,如果第一个字段排好后再根据第二个字段的升序排序最后在根据第三个字段进行排序,得到以下结果.a1 b2,c4a1 b2,…
mapreduce二次排序详解
什么是二次排序 待排序的数据具有多个字段,首先对第一个字段排序,再对第一字段相同的行按照第二字段排序,第二次排序不破坏第一次排序的结果,这个过程就称为二次排序. 如何在mapreduce中实现二次排序 mapreduce的工作原理 MR的工作原理如下图(如果看不清可右键新标签页查看): 图片部分数据参考自:https://www.bbsmax.com/A/KE5Qjg6qdL/ 相关重点: 分区(partitioning):使得具有相同Key值的键值对可以被划分到一起,并且保证对应单个Key值的…
MapReduce 二次排序
默认情况下,Map 输出的结果会对 Key 进行默认的排序,但是有时候需要对 Key 排序的同时再对 Value 进行排序,这时候就要用到二次排序了.下面让我们来介绍一下什么是二次排序. 二次排序原理 我们把二次排序主要分为以下几个阶段. Map 起始阶段 在Map阶段,使用 job.setInputFormatClass() 定义的 InputFormat ,将输入的数据集分割成小数据块 split,同时 InputFormat 提供一个 RecordReader的实现.本课程中使用的是 Te…
微信小程序的机会在于重新理解群组与二维码
历时一年,唯一一个尚未发布就获得Pony Ma与Allen Zhang站台的产品:微信小程序,将于2017年1月9日正式上线了.我很期待.唯一要警惕的是:防止长考出臭棋. 在上线前夕,我对于如何借助小程序的东风获得蓬勃发展,忧心忡忡.要不要押注小程序,以及如何押注小程序,如何抄袭小程序,相信这是摆在中国众多中小创业者和大公司面前的问题,区别在于前者关注如何拥抱,后者关注如何抄袭.支付宝小程序.今日头条小程序.百度小程序面世的时间为时不远了. 就我个人理解而言.allen两句话特别值得关注. 1,…
深入理解javascript闭包(二)
在上次的分享中javascript--函数参数与闭包--详解,对闭包的解释不够深入.本人经过一段时间的学习,对闭包的概念又有了新的理解.于是便把学习的过程整理成文章,一是为了加深自己闭包的理解,二是给读者提供学习的途径,避免走弯路. 以下的分享会分为如下内容: 1.let命令 2.闭包特点的解读 3.循环中的闭包 1.let命令 在讲闭包前,有必要谈谈ES6中的新概念,let命令.因为在赘述循环中的闭包时会使用到let命令. 基本用法 ES6新增了let命令,用来声明变量.它的用法类似于var,…
Unity Animator动画状态机 深入理解(三)二维混合树
介绍二维之前,先说说一维吧~ 这个是通过旋转角度速度快慢来表现身体的大转和中转~ 通过一个-133~133的数值来进行控制. 注:后面的那个对钩是镜像的意思. 其实二维混合树并没有想象中的那么难.先来看一看什么是二维混合树吧. 这就是一个二维混合树,咱们接触过一维的,其实简单的理解就是把两个一维混合在一起变成二维. 比如:奔跑的动作和转弯的动作,合在一起. 可以看到Inspector面板中的Motion后有PosX与PosY,分别代表了其Direction与Speed(注:X是横轴,Y是纵轴)…
MapReduce二次排序
默认情况下,Map 输出的结果会对 Key 进行默认的排序,但是有时候需要对 Key 排序的同时再对 Value 进行排序,这时候就要用到二次排序了.下面让我们来介绍一下什么是二次排序. 二次排序原理 我们把二次排序主要分为以下几个阶段. Map 起始阶段 在Map阶段,使用 job.setInputFormatClass() 定义的 InputFormat ,将输入的数据集分割成小数据块 split,同时 InputFormat 提供一个 RecordReade…
理解js闭包(二)
@(编程) 一.什么是闭包? 官方"的解释是:闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分. 相信很少有人能直接看懂这句话,因为他描述的太学术.其实这句话通俗的来说就是:JavaScript中所有的function都是一个闭包.不过一般来说,嵌套的function所产生的闭包更为强大,也是大部分时候我们所谓的"闭包".看下面这段代码: function a() { var i = 0; function b() {…
Hadoop MapReduce 二次排序原理及其应用
关于二次排序主要涉及到这么几个东西: 在0.20.0 以前使用的是 setPartitionerClass setOutputkeyComparatorClass setOutputValueGroupingComparator 在0.20.0以后使用是 job.setPartitionerClass(Partitioner p); job.setSortComparatorClass(RawComparator c); job.setGroupingComparatorClass(RawCom…
大数据学习之测试hdfs和mapreduce(二)
上篇已经搭建好环境,本篇主要测试hadoop中的hdfs和mapreduce功能. 首先填坑:启动环境时发现DataNode启动不了.查看日志 从日志中可以看出,原因是因为datanode的clusterID 和 namenode的clusterID 不匹配.打开hdfs-site.xml里配置的datanode和namenode对应的目录,分别打开current文件夹里的VERSION,可以看到clusterID项正如日志里记录的一样,确实不一致,修改datanode里VERSION文件的cl…
MapReduce(二) MR的高级特性-序列化、排序、分区、合并
一.序列化 (*) 核心接口:Writable接口.如果有一个类实现了Writable接口,就可以作为Map/Reduce的key和value. 举例: 读取员工数据,生成员工对象,直接存储在HDFS 序列化的顺序和反序列化 的顺序要保持相同. public void readFields(DataInput input) throws IOException{ } pubic void write(DataOutput output) throws IOException{ } 二…
【由浅入深理解java集合】(二)——集合 Set
上一篇文章介绍了Set集合的通用知识.Set集合中包含了三个比较重要的实现类:HashSet.TreeSet和EnumSet.本篇文章将重点介绍这三个类. 一.HashSet类 HashSet简介 HashSet是Set接口的典型实现,实现了Set接口中的所有方法,并没有添加额外的方法,大多数时候使用Set集合时就是使用这个实现类.HashSet按Hash算法来存储集合中的元素.因此具有很好的存取和查找性能. HashSet特点 1.不能保证元素的排列顺序,顺序可能与添加顺序不同,顺序也有可能发…
深入理解基于selenium的二次开发
对于做web端自动化测试的人来说,可能接触selenium比QTP还要多,但是我们在做基于selenium的二次开发的时候,经常会说到二次开发是为了易于维护,很多人可能不懂得维护的价值是什么,和到底要维护什么.今天专门写一篇关于二次开发的文章,希望能够帮到有需要做二次开发的人. 二次开发也就是我们常说的封装selenium,或者做框架.但是一个框架要包含丰富的类和方法.要有一套完整的体系来帮助我们进行封装.可以说框架的设计思想就是整个框架的灵魂,如果设计思想很正确也就意味着这个框架成功…
MapReduce(二)常用三大组件
mapreduce三大组件:Combiner\Sort\Partitioner 默认组件:排序,分区(不设置,系统有默认值) 一.mapreduce中的Combiner 1.什么是combiner Combiner 是 MapReduce 程序中 Mapper 和 Reducer 之外的一种组件,它的作用是在 maptask 之后给 maptask 的结果进行局部汇总,以减轻 reducetask 的计算负载,减少网络传输 2.如何使用combiner Combiner 和 Reducer…
深入理解hadoop之mapreduce
本文系原创,若有转载需要,请注明出处.https://www.cnblogs.com/bigdata-stone/ 1.mapReduce简介 MapReduce是面向大数据并行处理的计算模型.框架和平台. 映射(Mapping) :对集合里的每个目标应用同一个操作.即,如果你想把表单里每个单元格乘以二,那么把这个函数单独地应用在每个单元格上的操作就属于mapping(这里体现了移动计算而不是移动数据). 化简(Reducing):遍历集合中的元素来返回一个综合的结果.即,输出表单里一列数字的和…