美文网首页
hadoop的分布式计算框架MapReduce

hadoop的分布式计算框架MapReduce

作者: 机灵鬼鬼 | 来源:发表于2018-09-11 15:16 被阅读0次

MapReduce概述

源自于Google的MapReduce论文,论文发表于2004年12月。

Hadoop MapReduce是Google MapReduce的克隆版。

MapReduce优点:海量数据离线处理&易开发&易运行。

MapReduce缺点:实时流式计算。

wordcount:统计文件中每个单词出现的次数

需求:求wordcount

1)文件内容大小:shell

2)文件内容很大:比如TB、GB,那么如何解决大数据量的统计分析呐?

工作中很多场景的开发都是wc的基础上进行改造的。

以上需求,都需要借用分布式计算框架来解决了:MapReduce

MapReduce编程模型

     1、准备map处理的输入数据

     2、Mapper处理

    3、 Shuffle

    4、 Reduce处理

    5、 结果输出

MapReduce架构

Split

InputFormat

OutputFormat

Combiner

Partitioner

MapReduce编程

使用java 来开发wordcount案例

使用IDEA+MAVEN开发wordcount案例:

1)开发

2)编译

3)jar包上传到服务器

4)运行 

hadoop jar /home/hadoop/lib/你开发的jar名字.jar  主程序class名称 参数1  参数2

例如: hadoop jar /usr/hadoop/hadoop-2.6.0-cdh5.7.0/lib/bigdata-1.1.1.jar com.sc.mapreduce.WordCountApp hdfs://10.6.24.143:8020/xxx/test.txt hdfs://10.6.24.143:8020/xxx/output/wc

常见错误

相同的代码和脚本,再次执行会包错:

WARN security.UserGroupInformation: PriviledgedActionException as:root (auth:SIMPLE) cause:org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://10.6.24.143:8020/xxx/output/wc already exists

Exception in thread "main" org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://10.6.24.143:8020/xxx/output/wc already exists

原因:在MapReduce中,输出文件是不能事先存在的,要想避免这个问题,有两种方式:

第一种方式:就需要我们手工通过

shell的方式将输出文件删除。

hadoop fs -rm -r /xxx/output/wc

第二种方式:通过java api的方式(推荐)

//删除存在的输出目录

Path outputPath=new Path(args[1]);

FileSystem fileSystem = FileSystem.get(configuration);

if (fileSystem.exists(outputPath)){

fileSystem.delete(outputPath,true);//递归删除

}

MapReduce编程之Combiner

Combiner 就是在map阶段提前做reduce的操作,减少传输到reduce的key的数量,即是减少传输数据量,缩短传输时间。

虽然combiner有优点,但并非所有场景都适合:

求和,计数场景:适合

求平均数场景:不适合

MapReduce编程之Partitioner

1)Partitioner决定MapTask输出的数据交由哪个ReduceTask处理。

2)默认实现:分发的key的hash值对Reduce Task个数取模

案例如下:

按照指定规则类型来分类

我们执行程序看到有几个reduce就会生成几个输出文件

JobHistory

作用:

记录已经运行完的MapReduce信息到指定的HDFS目录下。

默认是不开启的。

如何启动呐?

第一步完成

yarn-site.xml的配置

<property>

<name>yarn.log-aggregation-enable</name>

<value>true</value>

</property>

mapred-site.xml的配置

<property>

<name>mapreduce.jobhistory.address</name>

<value>10.6.24.143:10020</value>

</property>

<property>

<name>mapreduce.jobhistory.webapp.address</name>

<value>10.6.24.143:19888</value>

</property>

<--执行完毕作业的日志存放目录-->

<property>

<name>mapreduce.jobhistory.done-dir</name>

<value>/history/done</value>

</property>

<--执行中的作业日志存放目录-->

<property>

<name>mapreduce.jobhistory.intermediate-done-dir</name>

<value>/history/done_intermediate</value>

</property>

第二步重启yarn服务

./stop-yarn.sh

./start-yarn.sh

第三步启动jobHistory服务

./mr-jobhistory-daemon.sh start historyserver

如果向停止jobHistory服务命令

./mr-jobhistory-daemon.sh stop historyserver

相关文章

  • Apache Hadoop

    Hadoop = HDFS(分布式⽂件系统) + MapReduce(分布式计算框架) + Yarn(资源协调框架...

  • Spark 极简教程

    Spark 并行计算框架简介 大规模数据处理 类Hadoop MapReduce的通用并行框架. 分布式计算引擎 ...

  • Hadoop3.x组件MapReduce入门

    一、什么是MapReduce Hadoop MapReduce,以下简称MR,是一个分布式计算框架,可以用于轻松编...

  • Spark V.S. Hadoop MapReduce

    作为Hadoop的分布式计算框架,MapReduce扮演着分布式计算的任务,适用于离线批计算任务。Spark本身不...

  • Hadoop、Hbase、Hive三者关系

    Hadoop本质上是:分布式文件系统(HDFS) + 分布式计算框架(Mapreduce) + 调度系统Yarn搭...

  • Hadoop理论知识

    1、hadoop的概念:分布式文件存储和计算框架 hdfs:使用分布式思想存储海量数据 MapReduce:分布式...

  • Spark 工作原理及RDD

    Spark是一种开源的分布式并行计算框架,Spark拥有Hadoop Mapreduce计算框架的优点。但是与Ha...

  • Hadoop 系列(三)—— 分布式计算框架 MapReduce

    一、MapReduce概述 Hadoop MapReduce 是一个分布式计算框架,用于编写批处理应用程序。编写好...

  • MapReduce(一)---入门

    1. MapReduce概述 MapReduce是一个分布式计算的编程框架,是用户开发“基于Hadoop的数据分析...

  • Hadoop基础

    1. Hadoop基础架构 HDFS:分布式文件系统。 MapReduce:分布式计算框架。 YARN:资源管理系...

网友评论

      本文标题:hadoop的分布式计算框架MapReduce

      本文链接:https://www.haomeiwen.com/subject/iiakgftx.html