Hadoop(五)MapReduce编程模型

什么是MapReduce(入门篇)         在HDFS系列完结之后,小伙伴们期待的MapReduce系列已经在向大家挥手了。本篇博客,小菌将为大家带来MapReduce的入门介绍!         在正式开始之前,让我们通过一张图片回顾一下Hadoop的组成部分,以及... 阅读详情

主要内容

  1. MapReduce编程模型简介
  2. WordCount编程实例
  3. Hadoop MapReduce架构
  4. MapReduce实战开发
一、MapReduce编程模型简介

MapReduce是一种可用于数据处理的编程模型。该模型比较简单,但用于编写有用的程序并不简单。Hadoop可以运行由各种语言编写的MapReduce程序。例如:Java、Ruby、Python和C++语言等。最重要的是,MapReduce程序本质上是并行运行的,因此可以将大规模的数据分析任务交给任何一个拥有足够多机器的运行商。MapReduce的优势在于处理大规模数据集。

  • MapReduce是一种可用于海量数据(PB级以上)分布式并行处理的模型框架
  • 模型简单

把万事万物都可以看做两个阶段来处理
map阶段
reduce阶段

  • 编写有用的程序

如何写map
如何写reduce

  • MapReduce可以用除Java以外的其他语言来实现

python Ruby C++ …
Java语言为主

  • MapReduce的程序本质上是并行运行的
		map阶段 可以开启多个map任务(线程)
			map()函数
			master,
			slave,
				YarnChild/TaskTracker(进程)
					五个map任务(线程)
					一个reduce任务(线程)
					
			slave1,
				YarnChild/TaskTracker(进程)
					四个map任务(线程)
			slave2,
				YarnChild/TaskTracker(进程)
					十个map任务(线程)
			...
			
		reduce阶段 
			reduce()
			reduce 任务的个数取决于开发人员的设定   1个任务
			
			slave,
				YarnChild/TaskTracker(进程)
					五个map任务(线程)
					一个reduce任务(线程)
  • MapReduce善于处理大规模的数据分析任务

1、从MapReduce自身的命名特点可以看出,MapReduce由两个阶段组成:Map和Reduce。用户只需map()和reduce()两个函数,即可完成简单的分布式程序设计。
2、map()函数以key/value对作为输入,产生另外一系列key/value对作为中间输出写入本地磁盘。MapReduce框架会自动将这些中间数据按照key值进行聚合,且key值相同的数据被统一交给reduce()函数处理。
3、reduce()函数以key及对应的value列表作为输入,经合并key相同的value值后,产生另外一系列key/value对作为最终输出写入HDFS。

MapReduce设计目的:

易于编程
良好的扩展性
高容错性

WordCount编程实例

统计词频

public class WordsCount {
    public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
        if(args==null || args.length<2){
            System.out.println("please input main method's parameters");
            System.exit(0);
        }
        String inputPath = args[0];
        String outputPath = args[1];
        Configuration conf = new Configuration();
        Job job = Job.getInstance(conf, WordsCount.class.getSimpleName());
        job.setJarByClass(WordsCount.class);

        FileInputFormat.addInputPath(job, new Path(inputPath));
        FileOutputFormat.setOutputPath(job, new Path(outputPath));

        job.setMapperClass(WordsMapper.class);
        job.setReducerClass(WordsReducer.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);
        //提交作业
        job.waitForCompletion(true);
    }
}
class WordsMapper extends Mapper<LongWritable, Text, Text, IntWritable>{
    public void map(LongWritable key, Text value, Context context) throws IOException,InterruptedException {
        String wordsLine = value.toString();
        String[] words = wordsLine.split(" ");
        for(String word : words){
            context.write(new Text(word), new IntWritable(1));
        }
    }
}

class WordsReducer extends Reducer<Text, IntWritable, Text, IntWritable>{
    public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException{
        int sum = 0;
        for(IntWritable value : values){
            sum += value.get();
        }
        context.write(key, new IntWritable(sum));
    }
}

要统计的单词
在这里插入图片描述
结果如下
在这里插入图片描述

用户编写完MapReduce程序后,按照一定的规则指定程序的输入和输出目录,并提交到Hadoop集群中,作业在Hadoop中的执行过程如图所示。Hadoop将输入数据切分成若干个输入分片(input split),并将每个split交给一个Map Task处理;Map Task不断的从对应的split中解析出一个个key/value,并调用map()函数处理,处理完之后根据Reduce Task个数将结果分成若干个分区(partition)写到本地磁盘;同时,每个Reduce Task从每个Map Task上读取属于自己的那个partition,然后基于排序的方法将key相同的数据聚集在一起,调用reduce()函数处理,并将结果输出到文件中。

流程图如下
在这里插入图片描述

三、Hadoop MapReduce架构

以下是hadoop1.0的架构,2.0参考(略)

  • 1、Client
    用户编写的MapReduce程序通过Client提交到JobTracker端;同时,用户可通过Client提供的一些接口查看作业的运行状态。在Hadoop内部用“作业”(Job)表示MapReduce程序。一个MapReduce程序可对应若干个作业,而每个作业会被分解成若干个Map/Reduce任务(Task)。

  • 2、JobTracker
    JobTracke负责资源监控和作业调度。JobTracker 监控所有TaskTracker 与job的健康状况,一旦发现失败,就将相应的任务转移到其他节点;同时,JobTracker 会跟踪任务的执行进度、资源使用量等信息,并将这些信息告诉任务调度器,而调度器会在资源出现空闲时,选择合适的任务使用这些资源。在Hadoop 中,任务调度器是一个可插拔的模块,用户可以根据自己的需要设计相应的调度器。

  • 3、TaskTracker
    TaskTracker 会周期性地通过Heartbeat 将本节点上资源的使用情况和任务的运行进度汇报给JobTracker,同时接收JobTracker 发送过来的命令并执行相应的操作(如启动新任务、杀死任务等)。TaskTracker 使用槽“slot”等量划分本节点上的资源量。“slot”代表计算资源(CPU、内存等)。一个Task 获取到一个slot 后才有机会运行,而Hadoop 调度器的作用就是将各个TaskTracker 上的空闲slot 分配给Task 使用。slot 分为Map slot 和Reduce slot 两种,分别供MapTask 和Reduce Task 使用。TaskTracker 通过slot 数目(可配置参数)限定Task 的并发度。

  • 4、Task
    Task 分为Map Task 和Reduce Task 两种,均由TaskTracker 启动。HDFS 以固定大小的block 为基本单位存储数据,而对于MapReduce 而言,其处理单位是split。split 是一个逻辑概念,它只包含一些元数据信息,比如数据起始位置、数据长度、数据所在节点等。它的划分方法完全由用户自己决定。但需要注意的是,split 的多少决定了Map Task 的数目,因为每个split 只会交给一个Map Task 处理。

Map Task 执行过程如下图 所示。由该图可知,Map Task 先将对应的split 迭代解析成一个个key/value 对,依次调用用户自定义的map() 函数进行处理,最终将临时结果存放到本地磁盘上,其中临时数据被分成若干个partition,每个partition 将被一个Reduce Task 处理。

Reduce Task 执行过程如下图所示。该过程分为三个阶段:
①从远程节点上读取MapTask 中间结果(称为“Shuffle 阶段”);
②按照key 对key/value 对进行排序(称为“Sort 阶段”);
③依次读取<key, value list>,调用用户自定义的reduce() 函数处理,并将最终结果存到HDFS 上(称为“Reduce 阶段”)。

四、MapReduce实战开发

数据源

  • sogou500w数据或sogou4000w数据

数据字段描述

  • Time:用户访问时间
  • Uid:用户的id
  • Keyword:访问的关键字
  • Rank:点击排名
  • Order:页数
  • Url:网址

条件过滤

  • 统计出搜索过包含有“仙剑奇侠传”内容的UID及搜索关键字记录
public class UidAndRecordIncludeKeyword {
    public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
        if(args==null || args.length<2){
            System.out.println("please input main method' parameters");
            System.exit(0);
        }
        System.out.println(args[0]);
        String inputPath = args[0];
        String outputPath = args[1];
        Configuration conf = new Configuration();
        Job job = Job.getInstance(conf, UidAndRecordIncludeKeyword.class.getSimpleName());
        job.setJarByClass(UidAndRecordIncludeKeyword.class);
        job.setMapperClass(MyMapper.class);
        job.setReducerClass(MyReducer.class);
        FileInputFormat.addInputPath(job, new Path(inputPath));
        FileOutputFormat.setOutputPath(job, new Path(outputPath));

        job.setInputFormatClass(TextInputFormat.class);
        job.setOutputFormatClass(TextOutputFormat.class);

        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(Text.class);

        job.waitForCompletion(true);
    }
}
class MyMapper extends Mapper<LongWritable, Text, Text, Text>{
    @Override
    public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
        String line = value.toString();
        String[] field = line.split("\t");
        if(field!=null && field.length==6){
            String record = field[2];
            if(record.indexOf("仙剑奇侠传")>=0){
                context.write(new Text(field[1]), new Text(field[2]));
            }
        }
    }
}

class MyReducer extends Reducer<Text,Text,Text,Text>{
    public void reduce(Text key, Iterable<Text> values, Context context) throws IOException, InterruptedException {
        StringBuilder sb = new StringBuilder();
        for(Text value : values){
            sb.append(value.toString());
        }
        context.write(key, new Text(sb.toString()));
    }
}

部分结果如下:
在这里插入图片描述

  • rank<3并且order>2的所有UID及数量
public class Sogou500wDemo2 {
    public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
        if(args==null && args.length<2){
            System.out.println("please input main method' parameters");
            System.exit(0);
        }
        Configuration conf = new Configuration();
        Job job = Job.getInstance(conf, Sogou500wDemo2.class.getSimpleName());
        job.setJarByClass(Sogou500wDemo2.class);
        FileInputFormat.addInputPath(job, new Path(args[0]));
        FileOutputFormat.setOutputPath(job, new Path(args[1]));

        job.setMapperClass(MyMapper2.class);
        job.setReducerClass(MyReducer2.class);

        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);
//        job.setNumReduceTasks(10);
        job.waitForCompletion(true);
    }
}
class MyMapper2 extends Mapper<LongWritable, Text, Text, IntWritable> {
    public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
        String line = value.toString();
        String[] fields = line.split("\t");
        if(fields!=null && fields.length==6){
            int rank = Integer.parseInt(fields[3]);
            int order = Integer.parseInt(fields[4]);
            if(rank<3  && order>2){
                context.write(new Text(fields[1]), new IntWritable(1));
            }
        }
    }
}

class MyReducer2 extends Reducer<Text, IntWritable, Text, IntWritable>{
    public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
        int sum = 0;
        for (IntWritable value : values){
            sum += value.get();
        }
        context.write(key, new IntWritable(sum));
    }
}

在这里插入图片描述
部分数据
在这里插入图片描述
条件查询

  • 上午7-9点之间,搜索过“赶集网”的用户

本章小结

  • MapReduce主要分为input、splitting、Mapping、Shuffling、Reducing、Final reduce这几个阶段。
  • Hadoop MapReduce处理的数据一般位于底层分布式文件系统中。该系统往往将用户的文件切分为若干个固定大小的block存储到不同的节点上。默认情况下,MapReduce的每个Task处理一个block。
  • MapReduce主要由四个组件构成,分别是Client,JobTracker,TaskTracker和Task,它们共同保障一个作业的成功运行。
hadoop之MapReduce简介 hadoop之MapReduce的一些简介,架构和分析 阅读详情

相关推荐

MapReduce:大数据处理的利器

MapReduce 作为一种在大数据处理领域举足轻重的分布式计算模型,为我们在处理海量数据的征程中提供了一条高效、可扩展且容错能力强的光明大道。它的原理和工作流程犹如一部精密的机器,让复杂的数据处理变得有条不紊,并且在众多领域都有着非凡的应用表现。随着大数据技术的持续演进和发展,MapReduce 的思想也在不断进化和完善,就像一棵茁壮成长的大树,为处理日益增长的数据量和愈发复杂的数据处理需求提供了坚实的根基。

lemeje的博客 1656

Hadoop学习笔记—4.初识MapReduce

一、神马是高大上的MapReduce   MapReduce是Google的一项重要技术,它首先是一个编程模型,用以进行大数据量的计算。对于大数据量的计算,通常采用的处理手法就是并行计算。但对许多开发者来说,自己完完全全实现一个并行计算程序难度太大,而MapReduce就是一种简化并行计算的编程模型,它使得那些没有多有多少并行计算经验的开发人员也可以开发并行应用程序。这也就是MapReduc

deguotiantang的专栏 4826

Hadoop之MapReduce(实践篇)

1、MapReduce编程模型概述 MapReduce应用广泛的原因之一在于它的易用性。它提供了一个因高度抽象化而变得异常简单的编程模型。MapReduce是在总结大量应用的共同特点的基础上抽象出来的分布式计算框架,它适用的应用场景往往具有一个共同的特点:任务可被分解成相互独立的子问题。基于该特点,MapReduce编程模型给出了其分布式编程方法,共分5个步骤: 迭代(iteration):...

penggougoude的博客 7796

大数据学习——MapReduce

具体实现bean对象序列化步骤如下。(1)实现Writable接口(2)反序列化时,需要反射调用空参构造函数,所以必须有空参构造(3)重写序列化和反序列化方法,同时要求顺序一致(4)如果需要将自定义的bean放在key中传输,则还需要实现Comparable接口,因为MapReduce框中的Shuffle过程要求对key必须能排序。默认分区通过key的hashCode对ReduceTask个数取模得到。

daybreak98的博客 1万+

Hadoop之MapReduce编程模型

一、MapReduce编程模型         MapReduce将作业的整个运行过程分为两个阶段:Map阶段和Reduce阶段         Map阶段由一定数量的Map Task组成             输入数据格式解析:InputFormat             输入数据处理:Mapper             数据分组:Partitioner        Redu

大数据 8434

Python 使用Pygame库实现足球游戏:创建一个球员和一个足球,并使玩家能够控制球员的移动。游戏将包括碰撞检测、简单的物理模拟,以及基本的用户输入处理

本文将介绍如何使用Python和Pygame库创建一个简单的足球游戏。我们将搭建一个基本的游戏环境,创建一个球员和一个足球,并使玩家能够控制球员的移动。游戏将包括碰撞检测、简单的物理模拟,以及基本的用户输入处理。这个简单的足球游戏展示了Pygame的一些基本功能。虽然这是一个简单的游戏,但它包含了创建游戏循环、用户输入处理、物理模拟、碰撞检测等重要概念。

程序熊的博客 743

(五)Hadoop编程模型MapReduce

1.MapReduce Hadoop MapReduce是一个软件框架,基于该框架能够容易地编写应用程序,这些应用程序能够运行在由上千个商用机器组成的大集群上,并以一种可靠的,具有容错能力的方式并行地处理上TB级别的海量数据集。这个定义里面有着这些关键词,一是软件框架,二是并行处理,三是可靠且容错,四是大规模集群,五是海量数据集。 2.编写MapReduce (1)编写Map /** ...

高国才的博客 485

从FPGA/ASIC工程师视角看DDR:手把手拆解Memory Controller、PHY与DRAM芯片的协作流程

本文从FPGA/ASIC工程师视角深入解析DDR内存子系统,详细拆解Memory Controller、PHY与DRAM芯片的协作流程。通过系统架构分解、接口标准解析和实战调试技巧,帮助工程师优化DDR性能并解决常见问题,涵盖地址映射、命令调度、时序校准等关键技术要点。

weixin_42548888的博客 457

Hadoop MapReduce编程模型

文章转自:Hadoop MapReduce编程模型 东风化宇 2015年06月26日 于 Flyne 发表 本文的行文思路如下:一、MapReduce1、什么是MapReduceMapReduce是由Google提出的一个分布式计算模型,用来解决海量数据的计算问题。举个例子说明其解决问题的思想:MapReduce由两个阶段组成: Map阶段:将一个大任务分解成小任务,并分发给每个节点,每个节点并

lmy86263的博客 2967

【PLC】三菱plc控件安装 component Movedata had the following error ... Error Number:-119

Windows 10 专业版/企业版本版本号:22H2操作系统内部版本:19045.3448。

少莫千华 8002

保姆级教程:用海思PQTool搞定ISP图像调试,从参数读取到固件烧录全流程

本文提供海思PQTool的ISP图像调试全流程指南,从参数读取、实时调试到固件烧录,涵盖环境配置、核心功能解析、参数固化及生产部署。通过实战案例和避坑指南,帮助开发者高效提升图像质量,适用于海思开发板的ISP调试与优化。

weixin_30872337的博客 280

【Hadoop入门学习系列之五】MapReduce 2.0编程实战

一.MapReduce2.0编程模型关于MR编程模型请参考上一篇:【Hadoop入门学习系列之四】MapReduce 2.0应用场景和原理、基本架构和编程模型二.MapReduce2.0编程接口三种编程方式Java(最原始的方式) Java编程接口组成; 旧API所在java包:org.apache.hadoop.mapred 新API所在java包 :org.apache.hadoop.map

生命奇迹泉的专栏 2429

SCL3400硬件避坑指南:引脚兼容性测试+模式切换异常处理

本文针对村田SCL3400双轴倾角计在实际硬件设计中的常见问题,提供了详细的避坑指南。重点解析了从SCL3300迁移时的引脚兼容性真相,包括SPI时序、电源去耦等关键差异,并深入探讨了模式切换中超量程错误的复现原因与软件容错方案。同时,指导了如何根据应用场景配置低通滤波器,并给出了无自动唤醒功能下的可靠电源与长线SPI通信管理策略。

weixin_29190573的博客 292

Hadoop——实验七:MapReduce编程实践

文章目录一. 实验目的二. 实验内容三. 实验步骤及结果分析 1. 基于ubuntukylin14.04(7)版本,安装hadoop-eclipse-kepler-plugin-2.6.0.jar 1.1 安装hadoop-eclipse-plugin 1.2 配置hadoop-eclipse-plugin 2. 基于ubuntukylin14.04(8)版本,通过eclipse完成MapReduce编程实践 2.1 通过eclipse操作HDFS文件 2.2 通过eclipse创建MapReduce项目 

maochaofei的博客 3035

华为OD机试双机位C卷-热点网站统计 (Py/Java/C/C++/Js/Go)

华为OD机试双机位C卷 热点网站统计,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。 华为od机考真题 - 热点网站统计。

qq_45776114的博客 779

使用Clumsy和Process Explorer定位软件高CPU占用问题

使用弱网模拟工具Clumsy和进程查看工具Process Explorer定位软件高CPU占用问题。

dvlinker的技术专栏 5707

hadoop-mapreduce编程模型

Hadoop的MapReduce编程模型是一种分布式计算范式,其核心思想是通过将大规模数据处理分解为Map和Reduce两个阶段,实现并行化计算。

知乎:https://www.zhihu.com/column/c_1956128398884729528 1520

「UG/NX」Block UI 曲线收集器CurveCollector

曲线收集器块用于选择一条或多条曲线,包括通过选择意图连接的末端曲线链。曲线选择意图用于此块,但它不支持“交点处停止”、“跟随圆角”、“中间链”和“特征内链”等规则选项。

何曾参静谧的博客 1090

Hadoop MapReduce编程模型深度解析:从分片到输出的完整流程

Override// 根据单词首字母分区} else {return 0;// 其他字符统一分区// 在Job中设置自定义分区器// 自定义数据类型实现WritableComparable@Override// 先按年龄排序,再按姓名排序= o.age) {// 年龄升序} else {// 姓名升序// 或者继承WritableComparator@Override// 自定义分组比较器@Override// 只按首字母分组。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 3165

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Hadoop - MapReduce编程

在当今数据驱动的时代,大数据的概念已经深入人心。随着信繁多,包括结构化数据、半结构化数据和非结构化数据。如何有效地处理、分析和利用这些数据,成为了各行各业亟待解决的问题。MapReduce是一种编程模型和处理框架,旨在简化大规模数据集的处理。本篇文章将详细介绍如何创建一个简单的MapReduce项目息技术的快速发展,企业和组织面临着海量数据的挑战。这些数据不仅体量庞大,而且种类,并使用MapReduce编程模型实现一个基本的词频统计功能。

zcs2312852665的博客 1813

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

[hadoop] hadoop之Mapreduce并行编程模型

MapReduce入门 什么是mapreduce 首先让我们来重温一下 hadoop 的四大组件: HDFS:分布式存储系统 MapReduce:分布式计算系统 YARN: hadoop 的资源调度系统 Common: 以上三大组件的底层支撑组件,主要提供基础工具包和 RPC 框架等 Mapreduce 是一个分布式运算程序的编程框架,是用户开发“基于 hadoop 的数据...

啊嘞嘞的博客 1213

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Hadoop之02:MapReduce编程模型

Hadoop架构图Hadoop由HDFS分布式存储、MapReduce分布式计算、Yarn资源调度三部分组成 MapReduce是采用一种分而治之的思想设计出来的分布式计算框架MapReduce由两个阶段组成:那什么是分而治之呢?reduce阶段有一个关键的函数reduce()函数此函数的输入也是键值对(即map的输出(kv对))输出也是一系列键值对,结果最终写入HDFSMapReduce编程中,key有特殊的作用①数据中,若要针对某个值进行分组、聚合时,需将此值作为MR中的reduce的输入的key如当前

我的博客 1114

Hadoop实验4:MapReduce编程

目录 一. 【实验准备】 1.工作目录 2.打开eclipse并配置工作空间 二、准备工作 1. 新建项目 2. 准备测试数据 3. 添加 MapReduce 编程框架 三、Map过程 四、Reduce过程 五、执行MapReduce任务 六、实验结果 七、准备工作 1. 新建项目 2. 准备relation.dat 3. 添加 MapReduce 编程框架 (1).MyMapper (2).MyReducer (3).MyRunner 八、Map过程 九、Red

qq_60980343的博客 4559

【Hadoop】MapReduce详解

MapReduce详解MapReduce介绍MapReduce的基本编程模型MapReduce的计算过程1. Map阶段可以概括为5个步骤:2. Reduce节点也可以分为5个步骤:设置ReduceTask并行度(个数)关于分片(Split)关于ShuffleMap端的shuffleReduce端的ShuffleShuffle流程详解补充问题:MapReduce分区相关问题理解1.Partition的原理和作用2.Partition的使用3.分组的概念和使用分组排序的步骤4.Combiner的使用概念实现步

小哲的博客 9447

HADOOP-MapReduce简介

MapReduce是什么?MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。它极大的方便编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。它的实现是map函数和Reduce函数组成。这种编程模型在很长时间以前就出现了,但在以前这个编程模型不是非常火热。当GOOGLE将几篇关于MapReduce的文章发布出来之后,这个编程模型变得异常火爆,Hadoop的

Q 9898
上一篇: Hadoop(四) I/O操作
下一篇: Hadoop(六) MapReduce应用编程开发
蓝尊宝
博客等级 码龄10年 13粉丝 28原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值