编写简单的MapReduce程序(Hadoop2.2.0)

2023-05-16

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

我们以简化版的气温统计为例,演示如何开发一个MapReduce程序。

 

Eclipse中新建一个MapReduce项目,命名为MaxTemperature。

源代码文件

新建以下3个类文件,代码依次如下:

MaxTemperatureDriver.java

package com.oss.maxtemperature;

 

importorg.apache.hadoop.conf.Configuration;

importorg.apache.hadoop.conf.Configured;

importorg.apache.hadoop.fs.Path;

importorg.apache.hadoop.io.IntWritable;

importorg.apache.hadoop.io.Text;

importorg.apache.hadoop.mapreduce.lib.input.FileInputFormat;

importorg.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

importorg.apache.hadoop.mapreduce.Job;

importorg.apache.hadoop.util.Tool;

importorg.apache.hadoop.util.ToolRunner;

 

public class MaxTemperatureDriver extends Configuredimplements Tool {

 

         @SuppressWarnings("deprecation")

         @Override

         public int run(String[] args) throwsException {                  

                   if (args.length != 2){

                            System.err.printf("Usage: %s <input><output>",getClass().getSimpleName());

                            ToolRunner.printGenericCommandUsage(System.err);

                            return -1;                  

                   }                  

                   Configuration conf =getConf();                

                   Job job = newJob(getConf());

                   job.setJobName("Max Temperature");                  

                   job.setJarByClass(getClass());

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

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

                   job.setMapperClass(MaxTemperatureMapper.class);

                   job.setReducerClass(MaxTemperatureReducer.class);                  

                   job.setOutputKeyClass(Text.class);

                   job.setOutputValueClass(IntWritable.class);                  

                   return job.waitForCompletion(true)?0:1;                  

         }

        

         public static void main(String[] args)throws Exception{

                   int exitcode = ToolRunner.run(new MaxTemperatureDriver(), args);

                   System.exit(exitcode);                  

         }   

}

 

MaxTemperatureMapper.java

packagecom.oss.maxtemperature; 

importjava.io.IOException; 

importorg.apache.hadoop.io.IntWritable;

importorg.apache.hadoop.io.LongWritable;

importorg.apache.hadoop.io.Text;

importorg.apache.hadoop.mapreduce.Mapper;

 

public class MaxTemperatureMapper extends Mapper<LongWritable, Text,Text, IntWritable> { 

         @Override

         public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException{                                    

                   String line =value.toString();                               

                   try {

                            String year =line.substring(0,4);

                            int airTemperature = Integer.parseInt(line.substring(5));            

                            context.write(new Text(year),new IntWritable(airTemperature));                           

                   } catch (Exception e) {

                            System.out.print("Error in line:" + line);

                   }                                  

         }        

}

MaxTemperatureReducer.java

packagecom.oss.maxtemperature; 

importjava.io.IOException; 

importorg.apache.hadoop.io.IntWritable;

importorg.apache.hadoop.io.Text;

importorg.apache.hadoop.mapreduce.Reducer;

 

public class MaxTemperatureReducer extendsReducer<Text,IntWritable,Text,IntWritable> {        

         @Override

         public void reduce(Text key, Iterable<IntWritable> values, Context context)throws IOException, InterruptedException        {

                   int maxValue = Integer.MIN_VALUE;                  

                   for(IntWritable value: values){

                            maxValue = Math.max(maxValue,value.get());                

                   }        

                   context.write(key, new IntWritable(maxValue));                 

         } 

}

 

导出为.Jar文件

将项目导出为jar文件,注意选择MaxTemperatureDriver作为包含main的类。

运行MapReduce程序

请确保Hadoop相关服务已经启动。

准备数据文件:

我们假设在hdfs://localhost:9000/input目录下有4个数据文件,如下图:


其中,文件的内容格式如下:

1990 21

1990 18

1991 21

1992 30

1990 21

说明:一个文件包含多行数据,前4位为年份,第5位为空格,第6位起为对应的温度。

 

进入Hadoop安装目录下的bin目录,执行以下命令:

./hadoopjar ~/hadoop_jar/maxtemperature.jar hdfs://localhost:9000/input hdfs://localhost:9000/output/temperature

注意:

以上命令请在一行输入。

请确保jar文件路径正确。

 

通过命令行或者UI接口查看job的工作进度,如下图所示,job已成功完成。

 

最终结果如下图:

 

发生错误怎么办?

有时候,你会发现job被提交后一直处于pending状态。此时,应该检查所有的hadoop服务是否正常工作。运行jps命令查看hadoop相关服务,如下图:

请确保Namenode,DataNode,ResourceManager,NodeManager正常启动。如果发 现有服务未启动,应该尝试重新启动服务,或者查看对应的log文件。比如某些配置错误会导致NodeManager服务在有job提交后因为发生异常而停 止服务。

转载于:https://my.oschina.net/yanjianhai/blog/261728

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编写简单的MapReduce程序(Hadoop2.2.0) 的相关文章

  • cs231n 作业2 心路历程

    Assignments 2 作业说明在这里 Fully connected Neural Network 今天写的时候思考了一下为什么课件里写的都是 W x 43 b Wx 43 b W x 43 b
  • 加域时提示指定的网络名不再可用

    加域时提示指定的网络名不再可用 发布于 2011 06 10 由 alefwoo 没有评论 发表评论 VMware虚机加入域时提示 xff1a 指定的网络名不再可用 能够正常解析出域名 xff0c 能够ping通 xff0c 提示指定的网络
  • ONOS之开放分布式SDN操作系统

    为什么80 的码农都做不了架构师 xff1f gt gt gt 关于构建ONOS xff08 开放式网络操作系统 xff09 的项目专题 xff0c 是通过性能激发创建的实验性分布式 SDN 控制平台 xff0c 满足大型运营商网络的可扩展
  • Linux网络唤醒软件,Linux网络唤醒

    在Linux下 xff0c 当机器处于睡眠或待机状态时 xff0c 想通过网络进行唤醒 WOL xff0c wake on lan 时 xff0c 可以通过如下相关命令来实现 xff1a 在A机 嵌入式设备 上 xff0c 让其睡眠 xff
  • Maven常用命令:

    Maven库 xff1a http repo2 maven org maven2 Maven依赖查询 xff1a http mvnrepository com 一 xff0c Maven常用命令 xff1a 1 创建Maven的普通Java
  • Lodash 源码大全

    这个文章的意义在于 想学习loadsh的所有源码 从github的顺序开始看 严格按照顺序的 xff0c 所以难免有集合函数数组这样的跳跃 loadsh很多运算我们也可以写出来 xff0c 但是严谨性可复用性却没有loadsh强 是分界线
  • 最优化-可行方向法

    Zoutendijk可行方向法 约束条件一般有两种 ax b 61 0 ax b lt 61 0 取可行初始点x1 x1满足所有的约束条件 取约束条件中所有 lt 61 0 的约束条件 xff0c 并判断他们是否为0 获得线性规划子问题 一
  • http 登录Digest认证相关知识

    Digest access authentication https en wikipedia org wiki Digest access authentication Digest access authentication is on
  • Centos7 VNC报vncserver@:1.service:control process exited,code-exited status=98

    在一台服务器上安装完centos7后 xff0c 准备安装vncserver xff0c 安装完systemctl start vncserver 64 1 service xff0c 始终报错 xff1a 关闭防火墙和SELinux后 x
  • CAS 5.2.x 单点登录 - 搭建服务端和客户端

    一 简介 单点登录 xff08 Single Sign On xff09 xff0c 简称为 SSO xff0c 是目前比较流行的企业业务整合的解决方案之一 SSO的定义是在多个应用系统中 xff0c 用户只需要登录一次就可以访问所有相互信
  • 如何计算无人机机架对应螺旋桨大小和尺寸!

    1 计算原理 决定螺旋桨的直径是相邻两个轴的直线距离 xff0c 就是图中AB线的距离 xff0c AB线的距离也刚好螺旋桨的最大直径 思考 xff1a 如何计算AB的距离 xff1f 在三角形中 xff0c 求AB的距离 xff0c 可以
  • 搬家,告辞

    https www cnblogs com cww97
  • 【网络基础】自动协商

    自动协商 协商的内容是什么 xff1f 协商的内容是速率和双工 通过什么来协商 xff1f 通过FLP 快速链路脉冲 xff09 来协商 FLP如何协商速率 xff1f 接口发送flp时 如果在规定时间内收到了响应 xff08 flp xf
  • 2.如何优化操作大数据量数据库(改善SQL语句)

    二 改善SQL语句 很多人不知道SQL语句在SQL SERVER中是如何执行的 xff0c 他们担心自己所写的SQL语句会被SQL SERVER误解 比如 xff1a select from table1 where name 61 39
  • LACP和PAgP的四种模式

    PAgP的四种模式 模式含义开启 xff08 on xff09 端口不进行协商 xff0c 直接形成以太网通道 xff1b 在这种模式下 xff0c 对端必须也是on模式 xff0c 以太网通道才能正常工作 关闭 xff08 off xff
  • BGP的同步

    实验原理 xff1a BGP 同步规则 xff1a BGP 路由器不应使用通过 IBGP 获悉的路由或将其通告给外部邻居 xff0c 除非该路由是本地的或通过 IGP 获悉的 如果启用了同步 xff0c 则路由器通过 IBGP 获悉路由后
  • 【软件工程导论-ZZU】02. 软件生命周期、开发过程与模型

    二 软件生命周期 开发过程与模型 1 软件生命周期 软件生命周期 xff1a 是软件的产生直到报废或停止使用的生命周期 实际从事软件开发工作时 xff0c 软件规模 类型 开发环境及技术方法等因素会影响到阶段划分 xff0c 及各阶段的执行
  • MySQL5.7安装与配置(YUM)

    安装环境 xff1a CentOS7 64位 xff0c MySQL5 7 1 配置YUM源 在MySQL官网中下载YUM源rpm安装包 xff1a http dev mysql com downloads repo yum span cl
  • ONOS高可用性和可扩展性实现初探

    为什么80 的码农都做不了架构师 xff1f gt gt gt ONOS 的发布直面OpenDaylight 进行挑战 xff0c 直接将 SDN 领域两大阵营 xff08 运营商和设备商 xff09 的竞争瞬间升级 xff0c 之所以 O
  • java a 运算_java中a++和++a在较复杂的运算中分析

    以下是一段普遍都了解的代码 xff1a public static void main String args int a 61 3 System out println a 43 43 43 1 4 System out println

随机推荐

  • Boom!!!计算机系统,从理解到爆炸,Bomblab

    进入目录下 bomb 开始运行炸弹 对于炸弹command not found之类的鬼畜情况 xff1a chmod 777 bomb 然后再运行炸弹 objdump d bomb gt bomb s 把整个代码打到文件里去 xff0c 也
  • 笔记本无法连接校园网,windows诊断显示校园网之未响应

    打开cmd xff08 管理员 xff09 xff1a 输入以下四条 xff0c 每一条都按enter ipconfig flushdns ipconfig registerdns ipconfig release ipconfig ren
  • 判断两个IP是否处于同一子网(网段)

    大学的时候有上过计算机网络的课程 xff0c IP这块也有一些接触 xff0c 但向来不是很好学的我 xff0c 对于一些问题似是而非的态度 xff0c 感觉知道 xff0c 但具体的又说不上 xff0c 今天就花了点时间彻底把这个问题搞清
  • zeromq发送文件到服务器,将zeromq套接字连接到redis服务器以进行数据传输?

    我想将服务器上的消息 ZMQ ROUTER套接字 xff0c 处理多个客户端 传输到redis服务器以用于存储目的 我听说 xff0c redis不会说ZMQ 所以如果不搭桥 xff0c 就不可能实现 我接受你的建议 在哪里看 xff1f
  • 历数NFV的发展历程

    随着网络产业正在通过SDN转型 xff0c NFV的互补架构概念越来越突出 为解释这种状况 xff0c 下文中将对NFV的定义 如何出现以及如何影响企业数据中心加以阐释 NFV的定义 维基百科对于NFV的定义是 xff1a NFV是使用虚拟
  • 线程相关知识

    线程的概念 1 xff0e 线程 1 线程是由表示程序运行状态的寄存器 包括程序计数器和堆栈 组成的 2 线程是程序执行过程中的某一时刻的状态 3 线程是一个用户级的实体 xff0c 在内存中驻留在普通用户级方法可以直接访问的区域 4 每个
  • 白盒交换机操作系统混战

    白盒交换机的出现给了用户选择最佳软硬件平台的权利 xff0c 它仅仅提供交换机硬件和ONIE xff08 开放网络安装环境 xff09 xff0c 用户可以自行选择最合适的交换机芯片 xff0c 降低成本实现最大效益 但是白盒交换机没有软件
  • Mysql修改设置root密码的命令及方法

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 方法一 xff1a 使用SQL语句命令UPDATE 需用到Mysql自带的加密函数PASSWORD string xff0c 该函数对一个明文密码进行加密 xff0c 但不
  • python中if有多个条件_Python if有多个条件怎么办

    Python中if有多个条件的处理方法 python中if有多个条件 可以使用and or elif关键字来连接 代码为 if name zs and age 18 print name zs age 18 Python中if有多个条件的处
  • linux查看openssl安装目录,linux如何使用openssl

    最近要做一个项目要用到openssl库 Linux里 无奈 xff0c 不得不安装openssl了 可是查了好多的资料都是一头雾水 xff0c 都不知道到底要是怎样才算是安装成功了 我的系统是 xff1a redhat xff0c 内核是
  • linux查看topic分区的数据量,如何查看Kafka的Topic消费情况

    温馨提示 xff1a 如果使用电脑查看图片不清晰 xff0c 可以使用手机打开文章单击文中的图片放大查看高清原图 Fayson的github xff1a https github com fayson cdhproject 提示 xff1a
  • AttackLab 这次我偷懒了

    这里有题解 xff0c 这里有题解 xff0c 这里有题解 迅速暴击上面一行 xff0c xff0c xff0c xff0c xff0c 感谢男神LJL 留几张图 第一次lab结束的时候还是12点之前 xff0c 感人 xff08 PS x
  • 与ajax相同的技术,AJAX是什么?都包含那些技术?

    AJAX的意思与包含的技术楼上的 亲 伱左脸 已经做出了回答了 xff0c 下面我就给你一点别的吧 xff0c 希望对你有所帮助 与传统的web应用比较 传统的web应用允许用户填写表单 form xff0c 当提交表单时就向web服务器发
  • asp网站 服务器iis 安全设置,Windows server 2008 R2 + IIS7.5,ASP网站设置

    1 让IIS7支持ASP Win2008 IIS7 默认不安装ASP xff0c 如果需要ASP 的支持 xff0c 需要将这个角色服务选上 2 相关设置 应用程序池 gt DefaultAppPool gt 高级设置 gt 启用32位应用
  • 服务器修改css,本地服务器修改css

    本地服务器修改css 内容精选 换一换 Windows Server 2012 R2操作系统弹性云服务器 xff0c 本地使用远程桌面连接功能连接云服务器并启用redirected drive功能时 xff0c 云服务器出现蓝屏 远程桌面连
  • RDS SQL Server 创建数据库关系图(Database Diagrams)

    背景介绍 SQL Server 关系图是一个非常简单易用且方便的工具 xff0c 可以直观的把数据库中表之间的关系展现出来 xff0c 不用手动整理或者写脚本整理各个表之间的关系 xff0c 如下图 RDS SQL Server 2008
  • MapReduce实战:自定义输入格式实现成绩管理

    1 项目需求 我们取有一份学生五门课程的期末考试成绩数据 xff0c 现在我们希望统计每个学生的总成绩和平均成绩 样本数据如下所示 xff0c 每行数据的数据格式为 xff1a 学号 姓名 语文成绩 数学成绩 英语成绩 物理成绩 化学成绩
  • 走心整理——十个常用深度学习算法

    十分抱歉 xff0c 由于项目太忙 xff08 我会说自己懒吗 xff1f xff09 柳猫一直没有更新自己的手记 xff0c 现在 xff0c 就让柳猫来讲讲十个常用的深度学习算法 过去十年里 xff0c 人们对机器学习的兴趣经历了爆炸式
  • Linux信号量操作次数的探究

    需求源于项目中一部分设计的代码 struct semaphore类型的信号量 xff0c 使用up 进行释放 xff0c down interruptible 和down 获得指定信号量 xff08 前者中 xff0c 若该信号量已争用则进
  • 编写简单的MapReduce程序(Hadoop2.2.0)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 我们以简化版的气温统计为例 xff0c 演示如何开发一个MapReduce程序 Eclipse中新建一个MapReduce项目 xff0c 命名为MaxTemperatur