Maven构建Hadoop Maven构建Hadoop工程

一.安装maven

linux eclipse3.6.1 maven安装

二:官网依赖库

  我们可以直接去官网查找我们需要的依赖包的配置pom,然后加到项目中。

  官网地址:http://mvnrepository.com/

三:Hadoop依赖

  我们需要哪些Hadoop的jar包?

  做一个简单的工程,可能需要以下几个

hadoop-common
hadoop-hdfs
hadoop-mapreduce-client-core
hadoop-mapreduce-client-jobclient
hadoop-mapreduce-client-common

四:配置

  打开工程的pom.xml文件。根据上面我们需要的包去官网上找,找对应版本的,这么我使用的2.5.2版本。

  修改pom.xml如下:

<dependencies>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>2.5.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <version>2.5.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-mapreduce-client-core</artifactId>
            <version>2.5.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-mapreduce-client-jobclient</artifactId>
            <version>2.5.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-mapreduce-client-common</artifactId>
            <version>2.5.2</version>
        </dependency>
        <dependency>
            <groupId>jdk.tools</groupId>
            <artifactId>jdk.tools</artifactId>
            <version>1.7</version>
            <scope>system</scope>
            <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
        </dependency>
    </dependencies>

五:构建完毕

  点击保存,就会发现maven在帮我们吧所需要的环境开始构建了。

  等待构建完毕。

六:新建WordCountEx类

  在src/main/java下新建WordCountEx类

package firstExample;

import java.io.IOException;
import java.util.StringTokenizer;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
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 WordCountEx {
	static class MyMapper extends Mapper<Object, Text, Text, IntWritable> {
		private final static IntWritable one = new IntWritable(1);

		private Text word = new Text();

		protected void map(
				Object key,
				Text value,
				org.apache.hadoop.mapreduce.Mapper<Object, Text, Text, IntWritable>.Context context)
				throws java.io.IOException, InterruptedException {

			// 分隔字符串
			StringTokenizer itr = new StringTokenizer(value.toString());
			while (itr.hasMoreTokens()) {
				// 排除字母少于5个字
				String tmp = itr.nextToken();
				if (tmp.length() < 5) {
					continue;
				}
				word.set(tmp);
				context.write(word, one);
			}

		}

	}

	static class MyReduce extends Reducer<Text, IntWritable, Text, IntWritable> {
		private IntWritable result = new IntWritable();
		private Text keyEx = new Text();

		protected void reduce(
				Text key,
				java.lang.Iterable<IntWritable> values,
				org.apache.hadoop.mapreduce.Reducer<Text, IntWritable, Text, IntWritable>.Context context)
				throws java.io.IOException, InterruptedException {

			int sum=0;
			for (IntWritable val:values) {
				//
				sum+= val.get()*2;
			}

			result.set(sum);
			//自定义输出key

			keyEx.set("输出:"+key.toString());
			context.write(keyEx, result);

		}
	}

	public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
		//配置信息
		Configuration conf=new Configuration();

		//job的名称
		Job job=Job.getInstance(conf,"mywordcount");

		job.setJarByClass(WordCountEx.class);
		job.setMapperClass(MyMapper.class);

		job.setReducerClass(MyReduce.class);
		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(IntWritable.class);

		//输入, 输出path
		FileInputFormat.addInputPath(job, new Path(args[0]));
		FileOutputFormat.setOutputPath(job, new Path(args[1]));

		//结束
		System.out.println(job.waitForCompletion(true)?0:1);

	}

}

  

七:导出Jar包

  点击工程,右键->Export,如下:

八:执行

  将导出的jar包放到C:\Users\hadoop\Desktop\下,而后上传的Linux中/home/hadoop/workspace/下

上传world_ 01.txt , hadoop fs -put  /home/hadoop/workspace/words_01.txt   /user/hadoop

  执行命令,发现很顺利的就成功了

hadoop jar /home/hadoop/workspace/first.jar firstExample.WordCountEx  /user/hadoop/world_ 01.txt  /user/hadoop/out

结果为:

示例下载

 Github:https://github.com/sinodzh/HadoopExample/tree/master/2015/first

时间: 2024-08-27 04:15:03

Maven构建Hadoop Maven构建Hadoop工程的相关文章

项目构建之maven篇:8.maven发布web工程及基于spring mvc,jetty实现的用户管理demo

web工程目录结构 pom/pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&qu

maven构建的模块化的JavaWeb工程

来到新公司,用到了maven构建的模块化的JavaWeb工程,比较感兴趣,所以自己就想从头弄一个出来,在此做一个记录,供以后学习. 前置条件:电脑上有eclipse(或者myeclipse,记事本也可以,那样就得用命令创建了.),jdk,maven支持,tomcat(或者jetty,就是个服务器容器而已). 第一步:添加maven支持,参照http://503431920.blog.51cto.com/6681280/1695929 第二步:新建maven工程,参照http://50343192

使用Maven构建一个简单的java工程

原文是我在学习Spring的过程中,在Spring的官网上看到的一个指南:BuildingJava Projects with Maven--http://spring.io/guides/gs/maven/#scratch.我也是刚接触Maven.看到这篇文章觉得非常简单,但又非常实用,尤其是对于像我这样的Maven初学者.基本上看了这篇后能大概知道Maven是个什么东西,干点什么事,并能够上手使用Maven做点小例子.所以忍不住就把它整理成中文,发出来分享一下,帮助初学者.并没有对原文完整翻

Spark 1.0 开发环境构建:maven/sbt/idea

因为我原来对maven和sbt都不熟悉,因此使用两种方法都编译了一下.下面记录一下编译时候遇到的问题.然后介绍一下如果使用IntelliJ IDEA 13.1构建开发环境. 首先准备java环境和scala环境: 1. jdk 1.7 2. scala 2.11.1 1. maven 首先安装maven,我安装的是3.2.3, 可以直接下载binary.解压即可用.需要设置一下环境变量: export MAVEN_HOME=/project/spark_maven/spark/apache-ma

maven 安装感想、 配置、构建一个maven project

一.maven的安装配置 系统:Ubuntu 16.0 开发环境: Intellij IDEA  / eclipse 关于maven的配置就不详细介绍了网上教程很多,有几点需要注意的是: maven在构建项目时会把包自动download到本地,在linux下maven的本地仓库在当前用户的 - /.m2 / repository 文件夹中.这个路径也可以通过修改配置文件setting.xml来修改: 你可以修改setting.xml下的 <mirror></mirro>配置 改为阿

构建 这里搜集了用来构建应用程序的工具。 Apache Maven:Maven使用声明进行构建并

构建 这里搜集了用来构建应用程序的工具. Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建.Maven优于Apache Ant.后者采用了一种过程化的方式进行配置,所以维护起来相当困难. Gradle:Gradle采用增量构建.Gradle通过Groovy编程而不是传统的XML声明进行配置.Gradle可以很好地配合Maven进行依赖管理,并且把Ant脚本当作头等公民. 字节码操作 编程操作Java字节码的函数库. ASM:通用底层字节码操作及

项目构建之maven篇:3.m2eclipse使用

m2eclipse的安装 略 设置maven目录 设置用户个性化的maven配置 导入maven工程 源代码下载 运行命令 运行订制命令: mvn clean install或 mvn clean compile 可以自己订制 新建maven工程 新建一个Hello.java并运行 install命令 项目构建之maven篇:3.m2eclipse使用,布布扣,bubuko.com

Maven - 构建基于Maven的ssh分模块项目

一.数据库准备 1.创建数据库maven create database maven character set utf8 collate utf8_general_ci; //use maven; 2.创建用户表 create table t_users( id int primary key auto_increment, username varchar(30) not null, password varchar(50) not null, constraint unq_users_us

使用maven多模块来构建系统时,spring初始化报错的问题

最近在实验maven结构的maven工程时,碰到一个问题,springbean总是初始化失败: Related cause: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userMapper' defined in file [D:\workspace\mavenweb\mavenweb-webapp\src\main\webapp\WEB-INF