• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >云计算 > Hadoop学习---第三篇Hadoop的第一个Mapreduce程序,hadoopmapreduce

Hadoop学习---第三篇Hadoop的第一个Mapreduce程序,hadoopmapreduce

作者:网友 字体:[增加 减小] 来源:互联网

本文主要包含Hadoop学习---第三篇Hadoop的第一个Mapreduce程序,hadoopmapreduce等服务器相关知识,网友希望可以进行参考

Hadoop学习---第三篇Hadoop的第一个Mapreduce程序,hadoopmapreduce


Mapreducer程序写了好几个了,但是之前一直都没有仔细的测试过本地运行和集群上运行的区别,今天写了一个Mapreduce程序,在此记录下来。

 本地运行注意事项有以下几点:

1、本地必须配置好Hadoop的开发环境

2、在src里不加入配置文件运行,或者如果本地的src里有mapred-site.xml和yarn-site.xml配置文件,那么mapreduce.framework.name=local以及yarn.resourcemanager.hostname=local 

测试说明:src里的配置文件修改为本地后打出jar包到集群运行,测试发现读取的是集群的配置文件,而不是本地src里面的配置文件,src配置主要是在本地运行时读取,没有         配置那么读取的是default.xml配置文件

       以下是Mapreduce的代码:

  

package cn.zxl.mrlocalrun;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

public class MapreduceLocalRunTest {
	static class MapreduceLocalRunTestMapper extends Mapper<LongWritable, Text, Text, Text>{
		@Override
		protected void map(LongWritable key, Text value,Context context)
				throws IOException, InterruptedException {
			String line=value.toString();
			String[] fields=line.split("@");
			String name=fields[0];
			String idserial=fields[1];
			String sex=fields[2];
			context.write(new Text(name), new Text(idserial+"\t"+sex));
			
		}
	}
	//reducer代码块虽然没有写排序,但是默认会根据key进行排序
	static class MapreduceLocalRunTestReducer extends Reducer<Text, Text, Text, Text>{
		@Override
		protected void reduce(Text key, Iterable<Text> values,Context context)
				throws IOException, InterruptedException {
			for(Text value:values){
				context.write(key, value);
			}
		}
	}
	//本地运行程序测试,不在Hadoop集群测试程序
	//特别说明:本地必须配置好Hadoop的开发环境,在src里不加入配置文件运行,
	//如果本地的src里有mapred-site.xml和yarn-site.xml配置文件,那么mapreduce.framework.name=local以及yarn.resourcemanager.hostname=local
	//src里的配置文件修改为本地后打出jar包到集群运行,测试发现读取的是集群的配置文件,而不是本地src里面的配置文件,src配置主要是在本地运行时读取,没有配置那么读取的是default.xml配置文件
	/**
	 * 说明:main右键--->选择Run As--->Run Configuration--->Name:指定运行的类名;
	 * Main里:Protect指定工程名; Main class指定主函数的包名+类名--->Arguments里的Program arguments:
	 * 指定要输入的参数,本类指定输入数据源和输出数据源的路径E:\localrun\data\Users.txt  E:\localrun\data\out
	 * @param args
	 * @throws Exception
	 */
	public static void main(String[] args) throws Exception {
		Configuration conf=new Configuration();
		
		Job job=Job.getInstance(conf);
		//指定jar类
		job.setJarByClass(MapreduceLocalRunTest.class);
		//指定mapper和reducer类
		job.setMapperClass(MapreduceLocalRunTestMapper.class);
		job.setReducerClass(MapreduceLocalRunTestReducer.class);
		//job.setNumReduceTasks(0);//不运行reducer,程序也不会进行排序
		//指定map输出key和value的类型,如果和reducer类型一致,mapper的输出可以省略不写,默认和reducer一致
		job.setMapOutputKeyClass(Text.class);
		job.setMapOutputValueClass(Text.class);
		//指定reducer的key和value输出类型
		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(Text.class);
		//分别指定数据源的输入和数据的输出路径,在集群上输入的是hdfs里的路径,而不是本地路径
		FileInputFormat.setInputPaths(job, new Path(args[0]));
		FileOutputFormat.setOutputPath(job, new Path(args[1]));
		
		job.waitForCompletion(true);
	}
}

src下的mapred-site配置文件:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>


<!-- Put site-specific property overrides in this file. -->

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>local</value>
</property>
</configuration>
yarn-site.xml:

<?xml version="1.0"?>

<configuration>

<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>local</value>
</property>


<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

</configuration>



测试数据:

Jenny@123456@girl
Jack@456789@boy
Tom@012345@boy
Luccy@987654@girl

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Hadoop学习---第三篇Hadoop的第一个Mapreduce程序,hadoopmapreduce

相关文章

  • Spark jar包找不到解决方法,sparkjar
  • Managing Data in Containers,managingcontainers
  • MapReduce编程之实现多表关联,mapreduce编程关联
  • Hadoop学习笔记0001——Hadoop安装配置,hadoop学习笔记0001
  • Hadoop集群搭建之搭建DNS,hadoop集群dns
  • 深入理解Scala 标识符,命名和域,深入理解scala
  • Apache Pig的前世今生,apachepig前世今生
  • 1006-hive的自定义UDF函数,1006-hiveudf函数
  • solr实战-(一),solr实战
  • &lt;转&gt;Openstack ceilometer 宿主机监控模块扩展,openstackceilometer

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • Zookeeper 在Hadoop中的应用,zookeeperhadoop
    • Ambari管理Hadoop集群时遇到的问题,ambarihadoop
    • 基于sparksql调用shell脚本执行SQL,sparksqlshell
    • @PathVariable和@RequestParam的区别,@pathvariable
    • 分享Hadoop大数据高薪就业视频,分享hadoop高薪就业
    • 如何在coding.net上部署项目 (Flask),coding.netflask
    • JOIN操作,数据库join操作
    • Mahout-HashMap的进化版FastByIdMap,mahout
    • hadoop中NameNode、DataNode和Client三者之间协作关系及通信方式介绍,hadoopnamenode
    • Spark 批量写数据入HBase,spark数据入hbase

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有