Hadoop学习笔记(6) ——重新认识Hadoop 之前,我们把hadoop从下载包部署到编写了helloworld,看到了结果.现是得开始稍微更深入地了解hadoop了. Hadoop包含了两大功能DFS和MapReduce, DFS可以理解为一个分布式文件系统,存储而已,所以这里暂时就不深入研究了,等后面读了其源码后,再来深入分析. 所以这里主要来研究一下MapReduce. 这样,我们先来看一下MapReduce的思想来源: alert("I'd like some Spaghetti!…
1:首先搞好实体类对象: write 是把每个对象序列化到输出流,readFields是把输入流字节反序列化,实现WritableComparable,Java值对象的比较:一般需要重写toString(),hashCode(),equals()方法 package com.areapartition; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; import org.apach…
mapreduce是一个运算框架,让多台机器进行并行进行运算, 他把所有的计算都分为两个阶段,一个是map阶段,一个是reduce阶段 map阶段:读取hdfs中的文件,分给多个机器上的maptask,分文件的时候是按照文件的大小分的 比如每个maptask都会处理128M的文件大小,然后有个500M的文件,就会启动ceil(500/128)个maptask 每读取文件的一行的处理,需要自己去写,注意每个maptask的处理逻辑都是一样的 处理出来的结果一定是一对key和value. mapta…
前面我们使用HDFS进行了相关的操作,也了解了HDFS的原理和机制,有了分布式文件系统我们如何去处理文件呢,这就的提到hadoop的第二个组成部分-MapReduce. MapReduce充分借鉴了分而治之的思想,将一个数据的处理过程分为Map(映射)和Reduce(处理)两步.那么用户只需要将数据以需要的格式交给reduce函数处理就能轻松实现分布式的计算,很多的工作都由mapReduce框架为我们封装好,大大简化了操作流程. 1 MapReduce的编程思想 MapReduce的设计思路来源…
关于mapreduce的一些注意细节 如果把mapreduce程序打包放到了liux下去运行, 命令java  –cp  xxx.jar 主类名 如果报错了,说明是缺少相关的依赖jar包 用命令hadoop jar xxx.jar 类名因为在集群机器上用 hadoop jar xx.jar mr.wc.JobSubmitter 命令来启动客户端main方法时,hadoop jar这个命令会将所在机器上的hadoop安装目录中的jar包和配置文件加入到运行时的classpath中 那么,我们的客户…
1.2MapReduce 和 HDFS 是如何工作的 MapReduce 其实是两部分,先是 Map 过程,然后是 Reduce 过程.从词频计算来说,假设某个文件块里的一行文字是”Thisis a small cat. That is a smalldog.”,那么,Map 过程会对这一行进行处理,将每个单词从句子解析出来,依次生成形如<“this”,1>, <”is”, 1>, <”a”, 1>, <”small”, 1>,<”cat”, 1>…
一.MapReduce执行过程 MapReduce运行时,首先通过Map读取HDFS中的数据,然后经过拆分,将每个文件中的每行数据分拆成键值对,最后输出作为Reduce的输入,大体执行流程如下图所示: 整个流程图具体来说:每个Mapper任务是一个java进程,它会读取HDFS中的文件,解析成很多的键值对,经过我们覆盖的map方法处理后,转换为很多的键值对再输出,整个Mapper任务的处理过程又可以分为以下几个阶段,如图所示. 在上图中,把Mapper任务的运行过程分为六个阶段. 第一阶段是把输…
一 Eclipse导入Hadoop源码项目 基本步骤: 1)在Eclipse新建一个java项目[hadoop-1.2.1] 2)将Hadoop压缩包解压目录src下的core,hdfs,mapred,tools,example四个目录copy到上述新建项目的src目录下 3)右击选择 Build Path,修改Java Build Path中[Source],删除src,添加src/core,src/hdfs,src/mapred,src/tools几个源码目录: 4)在项目中新建一个lib目…
1.对于要处理的文件集合会根据设定大小将文件分块,每个文件分成多块,不是把所有文件合并再根据大小分块,每个文件的最后一块都可能比设定的大小要小 块大小128m a.txt 120m 1个块 b.txt 500m 4个块 reducetask的并行度 1.reducetask并行度就是将原来的一个大任务,分成多个小任务,每一个任务负责一部分计算数据. 2.reduce任务有几个,最直观的的显示就是结果文件的个数.一个结果文件对应于一个reducetask的执行结果.底层分reducetask任务的…
1. MapReduce使用 MapReduce是Hadoop中的分布式运算编程框架,只要按照其编程规范,只需要编写少量的业务逻辑代码即可实现 一个强大的海量数据并发处理程序 2. 运行Hadoop自带的MapReduce程序(word count单词统计功能) 1.在HDFS中创建层级目录,并且上传文件到指定目录:hadoop fs -mkdir -p /wordcount/input 2.上传文件到HDFS指定目录:hadoop fs -put a.txt  b.txt  /wordcoun…