Hadoop(六) MapReduce应用编程开发

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

主要内容

  • MapReduce的编程
  • 在集群上的运作
  • MapReduce类型与格式

一、MapReduce的编程

1.设计思路

MapReduce中定义了如下的Map和Reduce两个抽象的编程接口,由用户去编程实现:

  • map: (k1; v1) → [(k2; v2)]

  • 输入:键值对(k1; v1)表示的数据

  • 处理:文档数据记录(如文本文件中的行,或数据表格中的行)将以“键值对”形式传入map函数;map函数将处理这些键值对,并以另一种键值对形式输出处理的一组键值对中间结果[(k2; v2)]

  • 输出:键值对[(k2; v2)]表示的一组中间数据

  • reduce: (k2; [v2]) → [(k3; v3)]

  • 输入: 由map输出的一组键值对[(k2; v2)] 将被进行合并处理将同样主键下的不同数值合并到一个列表[v2]中,故reduce的输入为(k2; [v2])

  • 处理:对传入的中间结果列表数据进行某种整理或进一步的处理,并产生最终的某种形式的结果输出[(k3; v3)]

  • 输出:最终输出结果[(k3; v3)]

在这里插入图片描述

  • 各个map函数对所划分的数据并行处理,从不同的输入数据产生不同的中间结果输出
  • 各个reduce也各自并行计算,各自负责处理不同的中间结果
  • 数据集合进行reduce处理之前,必须等到所有的map函数做完
  • 在进入reduce前需要有一个同步障(barrier)
    这个阶段也负责对map的中间结果数据进行收集整理(aggregation & shuffle)处理,以便reduce更有效地计算最终结果, 最终汇总所有reduce的输出结果即可获得最终结果。
public class Sogou500wDemo {
    private static class UidMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
        public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
            String[] fields = value.toString().split("\t");
            context.write(new Text(fields[1]), new IntWritable(1));
        }
    }

    private static class UidReducer 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));
        }
    }

    public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
        Configuration conf = new Configuration();
        Job job = Job.getInstance(conf, Sogou500wDemo.class.getSimpleName());
        job.setJarByClass(Sogou500wDemo.class);

        FileInputFormat.addInputPath(job, new Path(args[0]));
        FileOutputFormat.setOutputPath(job, new Path(args[1]));

        job.setMapperClass(UidMapper.class);
        job.setReducerClass(UidReducer.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);

        System.exit(job.waitForCompletion(true) ? 0 : 1);
    }
}

二、在集群上的运作

1、打包作业

  • 单机上运行的程序不需要任何修改就可以直接在集群上运行,但是需要把程序打包为JAR文件发给集群
  • 如果每个JAR文件都有一个作业,可以在JAR文件的manifest中指定要运行的main类。如果main类不在manifest中,则必须在命令行指定。

2、启动作业

  • 为了启动作业,需要运行驱动程序,使用-conf选项来指定想要运行作业的集群(同样,也可以使用-fs和-jt选项)
  • 如:hadoop jar hdfs.jar hdfs://master1:9000/sogou500w hdfs://master1:9000/tmp/demo2
  • JobClient的runjob()方法启动作业并检查进程,有任何变化,就输出一行map和reduce进度总结。输入如下:

3、通过web UI查看Job状态

  • Hadoop的Web界面用来浏览作业信息,对于跟踪作业运行进度、查找作业完成后的统计信息和日志非常有用。
  • 关于集群的概要信息,包括集群的负载情况和使用情况。这表明当前正在集群上运行的map和reduce的数量,作业提交的数量,可用的tasktracker节点数和集群的负载能力,集群中可用map和reduce的任务槽数(“Map Task Capacity”和“Reduce Task CapaciLy”),每个节点平均可用的任务槽数等信息。

YARN对job的监控

4、获取结果
一旦作业完成,有许多方法可以获取结果。每个reducer产生一个输出文件,因此,在输出的目录中会有part file,命名为part-00000。

5、查看part-r-00000文件结果如下:

6、作业调试
最经典的方法通过打印语句来调试程序,这在Hadoop中同样适用。然而,需要考虑复杂的情况:当程序运行在几十台、几百台甚至几千台节点上时,如何找到并检测调试语句分散在这些节点中的输出呢?为了处理这种情况,要查找一个特殊情况,用一个调试语句记录到一个标准错误中,它将发送一个信息来更新任务的状态信息以提示查看错误日志。Web UI简化了这个操作。

三、MapReduce类型与格式

1、MapReduce中的键值对

  • Hadoop的MapReduce中,map和reduce函数遵循如下常规格式:
    map: (K1, V1) list(k2, v2)
    reduce: (K2,list(v2)) list(k3, v3)

  • 一般来说,map函数输入的键/值的类型(K1和V1)类型不同于输出类型(K2和V2)。虽然,reduce函数的输入类型必须与map函数的输出类型相同,但reduce函数的输出类型(K3和V3)可以不同于输入类型。

  • combiner函数,它与reduce函数的形式相同(它是Reducer的一个实现),不同之处是它的输出类型是中间的键/值对类型(K2和V2),这些中间值可以输入reduce函数:

  • map: (K1, V1) list(k2, v2)

  • combine: (K2,list(v2)) list(k2, v2)

  • reduce: (K2,list(v2)) list(k3, v3)

  • combine与reduce函数通常是一样的,在这种情况下,K3与K2类型相同.V3与V2类型相同。

  • partition函数将中间的键/值对(K2和V2)进行处理,并且返回一个分区索引(partition index)。实际上,分区单独由键决定(值是被忽略的)。

  • panition: (K2, V2) integer

输入格式

1.输入分片与记录

  • 层次关系是:输入分片(split)与map对应,是每个map处理的唯一单位。每个分片包括多条记录,每个记录都有对应键值对。
  • 输入切片的接口:InputSplit接口(在org.apache.hadoop.mapred 包)
public interface InputSplit extends Writable{
	long getLength() throws IOException;
	String[] getLocations() throws IOException;
}
    
  • 一个分片并不包含数据本身,而是指向数据的引用。存储位置供MapReduce系统使用以便将map任务尽量放在分片数据附近,而长度用来排序分片,以便优化处理最大的分片,从而最小化作业运行时间。InputSplit不需要开发人员直接处理,由InputFormat创建。

FileInputFormat类:

  • FileInputFormat 是所有使用文件作为其数据源的 InputFormat 实现的基类。它 提供了两个功能:一个定义哪些文件包含在一个作业的输入中;一个为输入文件生成分片的实现。把分片分割成记录的作业由其子类来完成。
 FileInputFormat.add(job, new Path(a.txt))
  • FilelnputFormat 类的输入路径:
    作业的输入被设定为一组路径, 这对限定作业输入提供了很大的灵活性。FileInputFormat 提供四种静态方法来设定 JobConf 的输入路径:
Public static void addInputPath(JobConf, Path path)
Public static void addInputPaths(JobConf,String commaSeparatedPaths)
Public static void setInputPaths(JobConf, Path…  inputPaths)
Public static void setInputPaths(JobConf, String commaSeparatedPaths)

2、文本输入
TextlnputFormat

  • TextInputFormat 是默认的 InputFormat。每条记录是一行输入。键是 LongWritable 类型,存储该行在整个文件中的字节偏移量。值是这行的内容,不包括任何行终止符(换行符和回车符),它是 Text 类型的。所以,包含如下文本的文件:

    On the top of the Crumpetty Tree
    The Quangle Wangle sat,
    But his face you could not see,
    On account of his Beaver Hat.

  • 被切分为每个分片 4 条记录:
    (0,On the top of the Crumpetty Tree)
    (33,The Quangle Wangle sat,)
    (57,But his face you could not see,)
    (89,On account of his Beaver Hat.)
    输入分片和HDFS块之间可能不能很好的匹配,出现跨块的情况


KeyValueTextlnputFormat

  • TextInputFormat 的键,即每一行在文件中的字节偏移量,通常并不是特别有用。通常情况下,文件中的每一行是一个键/值对,使用某个分界符进行分隔,比如制表符。例如 以下由 Hadoop 默认 OutputFormat(即 TextOutputFormat)产生的输出。如果要正确处理这类 文件,KeyValueTextInputFormat 比较合适。
    可以通过 key.value.separator.in.input.line 属性来指定分隔符。它的默认值是一个制表符。

NLineInputFormat

  • NLineInputFormat:与TextInputFormat一样,键是文件中行的字节偏移量,值是行本身。主要是希望mapper收到固定行数的输入。

  • 以下是一个示例,其中一表示一个(水平方向的)制表符:
    linel->On the top of the Crumpetty Tree
    line2->The Quangle Wangle sat,
    line3->But his face you could not see.
    line4->On account of his Beaver Hat.

  • 与 TextInputFormat 类似,输入是一个包含 4 条记录的分片,不过此时的键是每行排在Tab 之前的 Text 序列:
    (linel, On the top of the Crumpetty Tree)
    (line2, The Quangle Wangle sat,)
    (line3, But his face you could not see,)
    (line4, On account of his Beaver Hat.)


3、多种输入

  • MultipleInputs类处理多种格式的输入,允许为每个输入路径指定InputFormat和Mapper。
  • 两个mapper的输出类型是一样的,所以reducer看到的是聚集后的map输出,并不知道输入是不同的mapper产生的。
  • 重载版本:addInputPath(),没有mapper参数,主要支持多种输入格式只有一个mapper。
  • 案例
    从下列城市中统计出没有飞机场的城市
    allCity.txt山东省的全部城市,someCity.txt拥有飞机场的城市

public class CityMapJoinDemo {
    public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
        //判断输入路径
        if(args.length!=3 || args==null){
            System.err.println("Please Input Full Path!");
            System.exit(1);
        }
        Job job = Job.getInstance(new Configuration(), CityReducer.class.getSimpleName());
        job.setJarByClass(CityReducer.class);

        //通过MultipleInputs多输入的方式添加多个Map的处理类
        MultipleInputs.addInputPath(job, new Path(args[0]), TextInputFormat.class, AllCityMapper.class);
        MultipleInputs.addInputPath(job ,new Path(args[1]), org.apache.hadoop.mapreduce.lib.input.TextInputFormat.class, SomeCityMapper.class);
        FileOutputFormat.setOutputPath(job, new Path(args[2]));

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

        //设置Reducer阶段处理的类
        job.setReducerClass(CityReducer.class);
        System.exit(job.waitForCompletion(true)?0:1);
    }
    /**
     * 处理所有城市的map
     *     <济南,a_济南>
     *     <青岛,a_青岛>
     *     <德州,a_德州>
     */
     static class AllCityMapper extends Mapper<LongWritable, Text, Text, Text>{
        public static final String LABEL = "a_";
        public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
            String cityName = value.toString();
            context.write(new Text(cityName), new Text(LABEL+cityName));
        }
    }

    /**
     * 处理只有飞机场的城市
     *      <济南,s_济南	济南飞机场>
     *      <青岛,s_青岛	青岛飞机场>
     */
    static class SomeCityMapper extends Mapper<LongWritable, Text, Text, Text>{
         public static final String LABEL = "s_";
         public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
             String[] lines = value.toString().split("\t");
             String cityName = lines[0];
             context.write(new Text(cityName), new Text(LABEL+value.toString()));
         }
    }

    /**
     *     经过shuffle之后变成:
     *     <济南,{a_济南,s_济南	济南飞机场}>
     *     <德州,{a_德州}>
     *     青岛,{a_青岛,s_青岛	青岛机场}
     */
    static class CityReducer extends Reducer<Text, Text, Text, Text>{
        public void reduce(Text key, Iterable<Text> values, Context context) throws IOException, InterruptedException {
            //城市的名字
            String cityName = null;
            //存放符合条件过滤出来的城市
            List<String> list = new ArrayList<String>();
            for(Text value : values){
                //如果列表中有包含有s_开头的数据吗,则表明该数据是已经有飞机场的城市
                if(value.toString().startsWith(SomeCityMapper.LABEL)){
                    int index = value.toString().indexOf("_");
                    cityName = value.toString().substring(index+1, index+3);
                } else if(value.toString().startsWith(AllCityMapper.LABEL)){
                    list.add(value.toString().substring(2));
                }
            }

            //如果城市名为空并且list列表中有值,则列表中的值就是符合条件的数据
            if(cityName==null && list.size()>0){
                for(String str : list){
                    context.write(new Text(str), new Text(""));
                }
            }
        }
    }
}


小结

1、掌握MapReduce的编程,编写Mapper类,Reducer类和main类。
2、知道作业是如何在集群上运作的,打包、启动、查看结果。
3、知道如何从web UI查看Job状态。
4、掌握MapReduce的出入输出格式。
5、理解MapReduce中键值对的概念

hadoop之MapReduce简介 hadoop之MapReduce的一些简介,架构和分析 阅读详情

相关推荐

MapReduce编程实例(六)

前提准备: 1.hadoop安装运行正常。Hadoop安装配置请参考:Ubuntu下 Hadoop 1.2.1 配置安装 2.集成开发环境正常。集成开发环境配置请参考 :Ubuntu 搭建Hadoop源码阅读环境 MapReduce编程实例: MapReduce编程实例(一),详细介绍在集成环境中运行第一个MapReduce程序 WordCount及代码分析

大T的专栏 8365

MapReduce论文笔记

用户编写Map和Reduce函数,Map函数的调用是针对一对<k,v>的,即如果输入有5对<k,v>,那么Map函数就会调用5次。 对于每一次: 输入一对<k,v>,然后进行某些用户定义的操作,可以emit 出 一对或者多对的<k,v> 这些Map函数输出的<k,v>写到本地的内存中,周期性的,这些内存中的数据对被写到...

weixin_30627381的博客 111

Hadoop之MapReduce编程模型

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

大数据 8434

MapReduce的编程开发——自定义格式输入输出

通过MapReduce对数据进行格式读取和格式输出

Comet_sgf的程序员之路 678

Intellij idea开发Hadoop MapReduce程序

一、下载一个Hadoop包 http://mirrors.hust.edu.cn/apache/hadoop/common/ 二、打开Idea新建一个java项目 三、项目配置 File ---- Project Structure         1. SDK的配置         2. 加入Hadoo

thinkhui的专栏 1万+

MapReduce的编程开发-格式整理

采用 name-m-nnnnn 形式的文件用于 map 输出,采用 name-r-nnnnn 形式的文件名用于 reduce 输出。我们考虑这样一个需求:按学生的年龄段,将数据输出到不同的文件路径下。有时可能需要对输出的文件名进行控制或让每个 reducer 输出多个文件。要求根据部门编号对员工进行分区,如果编号为 10,则放置在 1 分区,编号为 20 放置在 2 分区,其余全部放在 3 分区;本类主要用于描述输出数据的格式,它能够将用户提供的 key/value 对写入特定格式的文件中。

Junds0的博客 1337

Hadoop MapReduce编程开发

用户编写完MapReduce程序后,按照一定的规则指定程序的输入和输出目录,并提交到Hadoop集群中。 Hadoop将输入数据切分成若干个输入分片(input split),并将每个split交给一个Map Task处理;Map Task不断的从对应的split中解析出一个个key/value,并调用map()函数处理。处理完之后根据Reduce Task个数将结果分成若干个分片(partit...

雾幻的博客 442

Astah 9.0升级步骤(Widnows/Mac OS)

Astah Professional是一款全新的轻量级UML建模工具。软件集思维导图和UML建模于一体,采用100%纯JAVA构建, 兼容性强,不仅能够实现分布式建模、项目合并,还能够实现和其它建模工具的交互。

tequiero777的博客 2825

Hadoop之MapReduce编程

MapReduce编程基础 0. MR与Java的数据类型对比 MR Java boolean BooleanWritable byte ByteWritable int IntWritable float FloatWritable long LongWritable double DoubleWritable String Text map MapWritable array ArrayWritable //数据类型所在java包 import org

donger__chen的博客 1620

手把手教你搞定CAC会议投稿:从LaTeX模板到PDF eXpress避坑全流程

本文详细解析CAC会议投稿全流程,重点介绍LaTeX模板调整、Turnitin查重技巧及PDF eXpress校验避坑指南。通过实战案例和代码示例,帮助研究者高效完成IEEE格式论文投稿,避免常见技术性失误,提升投稿成功率。

weixin_29969209的博客 397

关于深度可分离卷积

关于深度学习中的深度可分离卷积

qq_45670407的博客 1796

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

Atlas 300I Pro推理卡性能深度测试:对比业界同类产品的能效比与算力表现

本文对昇腾Atlas 300I Pro推理卡进行了深度性能评测,重点对比了其与业界同类产品的能效比与算力表现。实测数据显示,该卡在运行BERT等模型时展现出高达39.6句子/秒/瓦的卓越能效比,电力成本可降低40%以上,同时其达芬奇架构和硬件加速特征检索能力,为高密度在线推理和向量检索场景提供了强大支撑。

weixin_29031161的博客 579

【Hadoop开发环境搭建】六、安装Eclipse、配置MapReduce环境

本章来记录一下Eclipse安装hadoop插件、配置MapReduce环境并新建一个MapReduce工程的过程 0.现有环境: Eclipse(Windows 本地系统的) 云服务器(已经配置好了Hadoop开发环境和集群) 1.安装插件: hadoop-eclipse-plugin-2.7.3.jar 地址:https://pan.baidu.com/s/1BaAOQkZaY4R...

Nelson_hehe的博客 3354

金蝶云星空核心数据表解析与高效关联查询指南

本文深入解析金蝶云星空核心数据表结构,提供高效关联查询的实战指南。文章详细介绍了基础资料、业务单据和财务模块的关键表及其关联逻辑,重点阐述了如何利用关联表(_LK表)进行跨单据溯源,并分享了编写高性能SQL的实用技巧与避坑建议,帮助开发者、实施顾问和数据分析师快速掌握数据查询方法,提升工作效率。

weixin_29254673的博客 526

MATLAB图像去噪实战:如何用巴特沃斯滤波器完美去除横条纹(附完整代码)

本文详细介绍了如何使用MATLAB中的巴特沃斯滤波器有效去除图像中的横条纹噪声。通过频域分析和滤波处理,结合完整的代码示例,帮助读者掌握从噪声分析到参数优化的全流程技术,实现高质量的图像去噪效果。

weixin_30566063的博客 563

Hadoop MapReduce编程模型

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

lmy86263的博客 2969

6-2 GPU GART 绑定机制与 TLB 失效

本文详细解析了AMD GPU的GART(Graphics Address Remapping Table)绑定机制实现。主要内容包括: 绑定流程:从ttm_tt_bind()到硬件PTE更新的完整调用链,重点分析amdgpu_gart_bind()函数实现。 关键函数: amdgpu_gart_bind():执行安全检查、记录映射关系、更新页表等操作 amdgpu_gart_map():将CPU页映射为多个GPU页并填充PTE amdgpu_gmc_set_pte_pde():处理硬件特定的PTE格式 内存

图形/计算GPU的驱动与虚拟化技术分享园地 2656

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

天猫精灵设备拆机及系统分析

我手头的这个天猫精灵型号为TG_X1,黑色天猫精灵AI助手,拆解没有多少难度,但需要注意连接线的问题。具体的拆机过程可以参见:http://www.geekifix.com/wp/archives/415.html注意一点就是,天猫精灵的主板的位置,位于音频按键的底部,也就是顶端,而拆解是从电源的位置从低到顶进行拆机;拆机后,看到主控板的信息如下:主控型号:联发科 MT8516MT8516支持四核...

LeeKwen的专栏 3万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Hadoop - MapReduce编程

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

zcs2312852665的博客 1813

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【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的使用概念实现步

小哲的博客 9448

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

实验十 Hadoop实验——MapReduce编程

实验十Hadoop实验——MapReduce编程 实验目的 通过实验掌握基本的MapReduce编程方法。 通过操作MapReduce的实验,模仿实验内容,深入理解MapReduce的过程,熟悉MapReduce程序的编程方式。 实验环境 与实验五一致https://mp.youkuaiyun.com/editor/html/116616391,其他命令可参考实验六:https://mp.youkuaiyun.com/editor/html/116618050实验七https://mp.youkuaiyun.com/edito.

VictorFuture的博客 5396

MapReduce编程实践

MapReduce编程实践 重要知识点: MapReduce是一种分布式并行编程模型,是Hadoop核心子项目之一,如果已经安装了Hadoop,就不需要另外安装MapReduce。 主要的理论知识点包括:MapReduce概述、MapReduce的工作流程,WordCount实例分析,MapReduce的具体应用。 掌握MapReduce的核心思想、编程模型、工作原理和实例分析。 MapReduce的程序可以用Eclipse编译运行或使用命令行编译打包运行,本实验使用Eclipse编译运行MapReduc

weixin_43640161的博客 5839

HADOOP-MapReduce简介

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

Q 9902

【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
上一篇: Hadoop(五)MapReduce编程模型
下一篇: Hadoop(七)MapReduce的工作机制与YARN平台
蓝尊宝
博客等级 码龄10年 13粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值