Hadoop使用jar运行实例

一、.在eclipse中使用编写程序,然后打成jar包,

程序代码:

package tju.chc;

import java.io.File;
import java.io.IOException;
import java.util.Scanner;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class ResultFilter {

	public static void main(String[] args) throws IOException{
		Configuration conf = new Configuration();
		//以下两句中,hdfs和local分别对应HDFS实例和本地文件系统实例
		FileSystem hdfs = FileSystem.get(conf);
		FileSystem local = FileSystem.getLocal(conf);
		
		Path inputDir , localFile;
		
		FileStatus[] inputFiles;
		FSDataOutputStream out = null;
		FSDataInputStream in = null;
		
		Scanner scan;
		String str;
		byte[] buf;
		int singleFileLines;
		int numLines, numFiles, i;
		
		if(args.length != 4) {
			//输入参数数量不够,提示参数格式后终止程序执行
			System.out.println("usage resultFilter <dfs path><local path><match str><single file lines>");
			return;
		}
		
		inputDir = new Path(args[0]);
		singleFileLines = Integer.parseInt(args[3]);
		
		inputFiles = hdfs.listStatus(inputDir);
		numLines = 0;
		numFiles = 1;
		localFile = new Path(args[1]);
		if(local.exists(localFile)){
			local.delete(localFile, true);
		}
		for(i = 0; i < inputFiles.length; i++){
			if(inputFiles[i].isDirectory() == true){
				continue;
			}
			System.out.println(inputFiles[i].getPath().getName());
			in = hdfs.open(inputFiles[i].getPath());
			scan = new Scanner(in);
			while(scan.hasNext()){
				str = scan.nextLine();
				if(str.indexOf(args[2]) == -1){
					continue;
				}
				numLines++;
				if(numLines == 1){
					localFile = new Path(args[1] + File.separator + numFiles);
					out = local.create(localFile);
					numFiles++;
				}
				buf = (str + "\n").getBytes();
				out.write(buf, 0 , buf.length);
				if(numLines == singleFileLines){
					out.close();
					numLines = 0;
				}
				
			}
			scan.close();
			in.close();
		}
		if(out != null){
			out.close();
		}
		
		
	}
}


  打包可参考

转自http://www.cnblogs.com/mq0036/p/3885407.html

1、首先要确认自己写的程序有没有报错。

2、第一次我写的是Web Project到现在,我一直没有执行成功,所以最好创建的是java Project

打包步骤:

1.在项目上,右键,选择Export。

 

2.进入到下图界面,选择Java 下面的JAR file

 

 

3.选择项目,确认必要的文件是否选中,选择保存jar文件包的路径,如下图

 

 

4.完成步骤3之后,点击Next,进入如下图界面:

 

5.直接点Next,进入下面的界面:

 

6.直接点Finish,jar文件包完成。

备注:

      1.可以根据自己的需要选择一些条件。
      2.打开jar文件包下面的META-INF\MANIFEST.MF这个文件,查看信息是否正确。

 

Class-Path:这个导入的是,本项目需要的一些其他的jar文件包

Main-Class:这个是main()方法所在的类的.class文件的路径,并且在最后有个回车符(如:上面显示的是,main()方法在test包下面的PostgresSQLSync类中。)

 

在windows下面运行jar包,确认导出的jar包是否存在问题:

1.打开DOS命令:通过cd切换到本项目路径下,然后,输入java -jar xxx.jar。

如果输入的信息,和运行项目时,在控制台输出的信息一样,就表示jar文件包已经完成。

 

下面是我碰到的一些问题:

1.在DOS命令中,出现如下错误时,表示Main-Class没有在META-INF\MANIFEST.MF这个文件中配置。

 

2.在DOS命令中,出现如下错误时,表示在Class-Path:或者在Main-Class:后面没有输入空格。

 


二、进入hadoop根目录,运行    

bin/hadoop jar  ~/local/chc/resultFilter.jar  tju/chc/ResultFilter  hdfs://master:9000/test/input/   file:///home/hadoopuser1/local/chc/tmp/    txt    50


注意,

1、运行命令前确保,hdfs已启动。     启动命令: bin/start-dfs.sh  (sbin/start-dfs.sh)     或者      sbin/start-all.sh     (hadoop  2.6.4版本)

2、运行过程可能会遇到权限问题





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值