在eclipse中配置自己的maven仓库

1.安装maven(用于管理仓库,jar包的管理)

-1.解压maven安装包

-2.把maven添加到环境变量/etc/profile

-3.添加maven目录下的conf/setting.xml文件到~/.m2文件夹下

2.安装eclipse

-1.解压eclipse安装文件

-2.执行eclipse.inst文件

-3.按步骤操作

3.在eclipse中配置自己的maven仓库

1.window>>perfoemence>>maven>>installations(添加使用的maven目录,步骤1.1)

add>>选择1.1中的路径

2.window>>perfoemence>>maven>>User settings(选择本地仓库的配置文件,步骤1.3)

Uesr Settings>>选择1.3中的文件

4.新建maven的项目

-new>>maven project>>创建一个简单的项目>>next>>next>>Group Id:域名倒置>>Artfact Id:项目名>>finish

-修改pom.xml文件





junit

junit

3.8.1

test

org.apache.hadoop
hadoop-hdfs
2.5.0

org.apache.hadoop
hadoop-client
2.5.1

org.apache.hadoop
hadoop-common
2.5.0

编写一个小程序进行Test

在src/main/java下新建hadoop_test类

package hadoop_test;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.conf.Configured;

import org.apache.hadoop.util.Tool;

import org.apache.hadoop.util.ToolRunner;

public class ConfTest extends Configured implements Tool{

public int run(String[] arg0) throws Exception {
// TODO Auto-generated method stub
Configuration conf =getConf();
return 0;
} public static void main(String[] args) throws Exception {
System.out.println("hello world!!!");
int status = ToolRunner.run(new ConfTest(), args);
System.exit(status);
}

}

打包,在终端进入该Java Project的pom.xml所在文件夹,执行mvn install clean,在target文件夹中可以找到一个jar包(hadoop_test-0.0.1-SNAPSHOT.jar),若是jarhadoop jar hadoop_test-0.0.1-SNAPSHOT.jar hadoop_test/ConfTest 指令执行输出hello world则该基本上成功了。同时也可测试下系统自带的wordcount类,具体方法是$ ./bin/$ hadoop jar $HADOOP_PREFIX/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount input output

最后写程序读取hdfs上的文件进行mapreduce并将结果传回hdfs

类:package hadoop_test;

import java.io.IOException;

import java.util.StringTokenizer;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.conf.Configured;

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.io.IntWritable;

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.TextInputFormat;

import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;

import org.apache.hadoop.util.Tool;

import org.apache.hadoop.util.ToolRunner;

public class WordCount extends Configured implements Tool{

static class WordCountMapper

extends Mapper<LongWritable, Text, Text, IntWritable>{

// 统计使用变量

private final static IntWritable one=

new IntWritable(1);

// 单词变量

private Text word=new Text();

	/**
* key:当前读取行的偏移量
* value:当前读取的行
* context:map方法执行时上下文
*/
@Override
protected void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
// TODO Auto-generated method stub
StringTokenizer words=
new StringTokenizer(value.toString(), " "); while(words.hasMoreTokens()){
word.set(words.nextToken());
context.write(word, one);
}
}
} static class WordCountReducer extends Reducer<Text, IntWritable, Text, IntWritable>{
private IntWritable counter = new IntWritable();
/**
* key:待统计的word
* values:待统计word的所有统计标识
* context:reduce方法执行时的上下文
*/
@Override
protected void reduce(Text key,
Iterable<IntWritable> values,
Reducer<Text, IntWritable, Text, IntWritable>.Context context) throws IOException, InterruptedException {
// TODO Auto-generated method stub
int count=0;
for(IntWritable one:values){
count+=one.get();
}
counter.set(count);
context.write(key, counter);
}
}

// @Override

public int run(String[] args) throws Exception {

//获得程序运行时的配置信息

Configuration conf=getConf();

String inputPath=conf.get("input");

String outputPath=conf.get("output");

	//构建新的作业
Job job = Job.getInstance(conf, "Word Frequence Count");
job.setJarByClass(WordCount.class); //给job设置mapper类及map方法输出的键值类型
job.setMapperClass(WordCountMapper.class);
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(IntWritable.class); //给job设置reducer类及reduce方法输出的键值类型
job.setReducerClass(WordCountReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class); //设置数据的读取方式(文本文件)及结果的输出方式(文本文件)
job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class); //设置输入和输出目录
TextInputFormat.addInputPath(job, new Path(inputPath));
TextOutputFormat.setOutputPath(job, new Path(outputPath)); //将作业提交集群执行
return job.waitForCompletion(true)?0:1;
} public static void main(String[] args) throws Exception{
int status = ToolRunner.run(new WordCount(), args);
System.exit(status);
}

}

执行hadoop jar hadoop_test-0.0.1-SNAPSHOT.jar hadoop_test/WordCount -Dinput=hdfs:/usr/hadoop/maven* -Doutput=hdfs:/usr/hadoop/maven1指令(注意此时的文件路径和/usr/local区分开)

好了,到这里基本上我们的环境就搭建成功了,还有些细节的这几天会慢慢补充的。

参考地址:maven配置部分:https://www.cnblogs.com/cenzhongman/p/7093672.html 侵删

eclipse通过maven进行打包并且对hdfs上的文件进行wordcount的更多相关文章

  1. Eclipse 上传 删除 下载 分析 hdfs 上的文件

    本篇讲解如何通过Eclipse 编写代码去操作分析hdfs 上的文件. 1.在eclipse 下新建Map/Reduce Project项目.如图:  项目建好后,会默认加载一系列相应的jar包. 下 ...

  2. hadoop的API对HDFS上的文件访问

    这篇文章主要介绍了使用hadoop的API对HDFS上的文件访问,其中包括上传文件到HDFS上.从HDFS上下载文件和删除HDFS上的文件,需要的朋友可以参考下hdfs文件操作操作示例,包括上传文件到 ...

  3. HDFS 上传文件的不平衡,Balancer问题是过慢

    至HDFS上传文件.假定从datanode开始上传文件,上传的数据将导致目前的当务之急是全datanode圆盘.这是一个分布式程序的执行是非常不利. 解决方案: 1.从其他非datanode节点上传 ...

  4. 【转载】HDFS 上传文件不均衡和Balancer太慢的问题

    向HDFS上传文件,如果是从某个datanode开始上传文件,会导致上传的数据优先写满当前datanode的磁盘,这对于运行分布式程序是非常不利的. 解决的办法: 1.从其他非datanode节点上传 ...

  5. [Spark][Python]对HDFS 上的文件,采用绝对路径,来读取获得 RDD

    对HDFS 上的文件,采用绝对路径,来读取获得 RDD: In [102]: mydata=sc.textFile("file:/home/training/test.txt")1 ...

  6. 用流的方式来操作hdfs上的文件

    import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import ...

  7. eclipse工具maven项目打包文件不是最新修改的

    1.问题描述:maven项目,完成一些功能开发后,在进行打包更新服务器系统时,本地eclipse工具对文件打成jar包操作,更新到服务器上没有修改的效果,包括打包整个工程为一个war包,也是有同样问题 ...

  8. maven项目打包的时候,*Mapper.xml 文件会打不不进去解决办法

    打包的时候,不同版本的 Eclipse 还有IDEA 会有打包打不进去Mapper.xml 文件,这个时候要加如下代码, 在<build> 标签内加入即可 <resources> ...

  9. maven 项目打包时无法解析读取properties文件

    在做项目时遇见一个问题,无法解析properties文件的 内容 异常为 Could not resolve placeholder ......... 在此之前均有做相关的 配置 但是从未出现过如上 ...

随机推荐

  1. 配置idea解决乱码

    在项目开发过程中,我们一般希望在修改完代码之后不重启项目即可提现出修改的结果,那么热部署项目就显得十分必要了.在idea中将项目热部署至tomcat中的方法如下: 首先打开tomcat配置界面,在se ...

  2. java有序map

    我们知道TreeMap的key是有顺序的,是自然顺序,也可以指定比较函数. 但TreeMap默认不是按插入的顺序.  为了让Map按照插入顺序显示,可以使用LinkedHashMap吧. 它内部有一个 ...

  3. pointer-events属性值详解

    其实早知道这个属性,但是一直没有去研究过.今天正好在twitter看到这个词,就去研究了下,正好解决了目前遇到的一个小难题,所以分享下.嗯,其实这是个比较简单的CSS3属性. 在某个项目中,很多元素需 ...

  4. windows下安装node环境,以及grunt试水笔记

    grunt,当下前端界知名度最高的工作流处理工具. 在一线的互联网公司,它早已经被用烂了,而我真正接触,是在去年年底... 期间还因为内心太杂分心玩乐而荒废学途,以致到最近才重拾学业,在这里BS一下自 ...

  5. Maven是什么

    一.Maven是什么 Maven是一个Apache公司的开源项目,是项目构建工具.用来管理依赖. 1.Maven的好处 使用maven可以在项目中不用导入项目依赖的jar包,省去了下载和导入jar包的 ...

  6. 解决ajax请求返回Json无法解析"\"字符的问题

    原因:获取身份证信息,涉及图片路径,存在“\”字符,导致Json解析错误 解决思路:将返回类型从"json"改成"text",此时返回的数据类型变成字符串,将字 ...

  7. 周记2——ios的日期格式bug

    转眼又到了周末,转眼又要上班,转眼...大概这就是一眼万年的意思吧. 这周继续IM(即时聊天),项目用的是LayIM移动端改装的,仅仅“借用”了一个聊天窗口.由于是内嵌App的页面,自然少不了Andr ...

  8. [android] 标题部分管理

    标题分类 1.1 普通标题 1.1.1 标题内容管理 1.1.2 帮助和返回的按钮 1.2 未登录的标题 1.3 登陆中的标题 1.4 登陆完成后的标题 package com.tsh.lottery ...

  9. redis(8)集群简介

    一.集群 互联网每天都会产生大量的数据,单实例已经不能满足需求.但是如果依赖于硬件成本的提升,那就不是所有人能够负担的起的. 集群这个时候出现,一定程度上解决了这个问题.它通过互联网,将多个单实例连接 ...

  10. 解决Openwrt安装插件提示一下错误的办法

    解决Openwrt安装插件提示一下错误的办法 Openwrt安装17ce插件,提示一下错误: Collected errors: * check_data_file_clashes: Package ...