Hadoop的MapReduce

本文详细介绍了Hadoop的MapReduce运行模式,包括本地运行、集群运行两种模式,并探讨了Combiner函数的作用和运行原理。接着,文章讲解了MapReduce的底层流程,包括切片、分区、排序和合并等步骤。此外,还涵盖了Hadoop生态系统中的其他组件,如Hive、Yarn、Hbase和Zookeeper的工作原理。最后,提到了数据压缩在MapReduce中的应用和重要性。
摘要由CSDN通过智能技术生成

MapReduce

MapReduce的运行模式

MapReduce 3种运行模式

(1)本地运行模式

 

1.1 src下不能有hadoop的配置文件

 

1.2如果处理的数据和输出的结果在hdfs

需要指定activenamenode

 

 

 

为什么需要指定fs.defaultFs的值?

因为:再导入的jar包中hadoop-hdfs-2.2.5.jar中的hdfs-default.xml文件中有默认是从本地文件系统中寻找指定的文件

 

默认值:

 

 

如果程序中不指定fs.defaults,运行程序就会报错

 

1.3 在本地运行便于业务逻辑的debug

 

  1.3.1  需要在window系统中解压一份在集群中安装的hadoopjar

 1.3.2 同时配置window系统的环境变量

注意:必须写HADOOP_HOME不能直接在Path中配置

   E:\soft\hadoop\hadoop-2.5.1\bin

   

1.3.3 拷贝winutils.exehadoopbin目录下:

 

1.4修改hadoop  NativeIo类中access方法的源码

 

暴力修改源码:

 

复制整个类,加入到本地代码中:

 

 

集群模式下都需要在src目录下导入集群的配置文件core-site.xml hdfs-site.xml yarn.site.xml mapred-site.xml

(2)集群运行模式一

mapreduce提交到yarn集群的resourcemanger,分发给很多节点并发执行

  

2.1MR程序 打成jar包,传到集群的任意一个节点上

 

 

 

2.2通过: hadoop jar jar路径  类的全限定名 启动

 

执行成功结果

 

(3)集群运行模式二

在本地调用,执行过程在集群上执行(真正的企业环境)

3.1指定本地jar包的路径

 

3.2 在本地执行运行

 

MapReduce 中的Combiner函数的理解

1.combinermapReduce程序中MapperReducer之外的一种组件。

2.Combiner组件的父类是Reducer

3.CombinerReducer的区别在于运行的位置:

1Combiner是在每一个Maptask所在的节点上运行

2Reducer是接受全局所有的Maptask的输出结果

4.意义:

 

5.Combiner使用的前提是不能影响业务逻辑,同时Combiner的输出的KV,要符合Reducer的输入的KV类型的要求

为什么使用Combiner要慎重?

 

因为combinermapreducer的过程中可能调用也可能不调用,可能调用一次也可能是调用多次,无法确定。

6、具体的实现步骤:

  1)自定义一个combiner类继承Reducer,重写reduce方法

 

   2)在job中设置job.setCombinerClass(mycombiner.class);

 

7.Combiner加入后产生的效果:

MapReduce 底层原理详解

1、结构:

 一个完整的MapReduce在分布式上运行时有三类进程

(1) MRAppMaster:负责整个程序的过程调度和状态协调

(2) mapTask :负责map阶段的整个数据处理流程

(3) ReduceTask:负责reduce阶段的数据处理流程

2、流程详解图

1)切片详解图

 

切片过程分析:

 

  1.获取设置的文件的大小:通过fs.sizeOf(test.txt);

  2.计算切片大小

   computeSplitSize(Math.max(minSize,Math.max(maxSize,blocksize)))=blocksize

  3.形成切片规划文件(假设

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值