`
younglibin
  • 浏览: 1193273 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

eclipse 上传文件到hadoop

阅读更多

其实很简单,只要配置正确,就行

 

直接给代码吧

package com.younglibin.hadoop;

import java.io.IOException;

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 HDFSystem {
	public static void uploadLocalFile2HDFS(Configuration config,
			String localFile, String remoteFile) throws IOException {
		FileSystem hdfs = FileSystem.get(config);
		Path src = new Path(localFile);
		Path dst = new Path(remoteFile);

		hdfs.copyFromLocalFile(src, dst);

		hdfs.close();
	}

	public static void createNewHDFSFile(String toCreateFilePath, String content)
			throws IOException {
		Configuration config = new Configuration();
		FileSystem hdfs = FileSystem.get(config);

		FSDataOutputStream os = hdfs.create(new Path(toCreateFilePath));

		os.write(content.getBytes("UTF-8"));

		os.close();

		hdfs.close();
	}

	public static boolean deleteHDFSFile(String dst) throws IOException {
		Configuration config = new Configuration();
		FileSystem hdfs = FileSystem.get(config);

		Path path = new Path(dst);
		boolean isDeleted = hdfs.delete(path);

		hdfs.close();

		return isDeleted;
	}

	public static byte[] readHDFSFile(String dst) throws Exception {
		Configuration conf = new Configuration();
		FileSystem fs = FileSystem.get(conf);

		// check if the file exists
		Path path = new Path(dst);
		if (fs.exists(path)) {
			FSDataInputStream is = fs.open(path);
			// get the file info to create the buffer
			FileStatus stat = fs.getFileStatus(path);

			// create the buffer
			byte[] buffer = new byte[Integer.parseInt(String.valueOf(stat
					.getLen()))];
			is.readFully(0, buffer);

			is.close();
			fs.close();

			return buffer;
		} else {
			throw new Exception("the file is not found .");
		}
	}
}

 

 

下边还是原来的 wordcount程序,改造了一下,每次执行的 本地文件,其实 也就是现将本文件上传到服务器上,让后再执行

 

注意上传文件的时候添加了  conf.set("fs.default.name", "hdfs://172.16.236.11:9000");  这句话 ,否则出现  找不到文件的问题 参考:http://www.cnblogs.com/bingofworld/archive/2013/06/09/3129299.html

 Hadoop HDFS Wrong FS: hdfs:/ expected file:///

 

看代码吧:

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

		File jarFile = EJob.createTempJar("bin");
		EJob.addClasspath("/home/libin/software/hadoop/hadoop-1.2.1/conf");
		ClassLoader classLoader = EJob.getClassLoader();
		Thread.currentThread().setContextClassLoader(classLoader);

		Configuration conf = new Configuration();
		conf.set("mapred.job.tracker", "172.16.236.11:9001");
		conf.set("fs.default.name", "hdfs://172.16.236.11:9000");
		String fileName = "local";
		HDFSystem.uploadLocalFile2HDFS(conf,
				new File(fileName).getAbsolutePath(),
				"hdfs://172.16.236.11:9000/user/libin/input/" + fileName);
		args = new String[] { "/user/libin/input/" + fileName,
				"/user/libin/output/wordcount" + System.currentTimeMillis() };

		String[] otherArgs = new GenericOptionsParser(conf, args)
				.getRemainingArgs();
		if (otherArgs.length != 2) {
			System.err.println("Usage: wordcount <in> <out>");
			System.exit(2);
		}
		Job job = new Job(conf, "word count");
		job.setJarByClass(WordCount.class);
		((JobConf) job.getConfiguration()).setJar(jarFile.toString());
		job.setMapperClass(TokenizerMapper.class);
		job.setCombinerClass(IntSumReducer.class);
		job.setReducerClass(IntSumReducer.class);
		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(IntWritable.class);
		FileInputFormat.addInputPath(job, new Path("hdfs://172.16.236.11:9000"
				+ File.separator + otherArgs[0]));
		FileOutputFormat.setOutputPath(job, new Path(
				"hdfs://172.16.236.11:9000" + File.separator + otherArgs[1]));
		System.exit(job.waitForCompletion(true) ? 0 : 1);
	}

 

分享到:
评论

相关推荐

    hadoop1.1.2 eclipse 插件

    在用eclipse 搭建hadoop插件时,apache不会提供插件,插件必须自己编译并且声称jar包。...复制D:\hadoop-1.1.2\contrib\eclipse-plugin\hadoop-eclipse-plugin-1.1.2.jar 到 eclipse安装目录/plugins/ 下。

    hadoop2.9.2 eclipse插件

    hadoop2.9.2 eclipse插件,里面有说明。...2、使用hadoop-eclipse-plugin-2.9.2-local.jar,访问本地的文件系统 3、wintuils_hadoop.zip本地eclipse运行需要的包。 另外2.9.2hadoop编译包太大,传不上来

    hadoop2.7.1eclipse插件

    hadoop2.7.1的linux下eclipse支持插件。已经经过检查,安装后在eclipse下,可以正常上传,下载,删除hdfs文件,以及跑mapreduce程序。 编译环境:ant1.9.6 jdk1.8 hadoop2.7.1

    windows上建立hadoop+eclipse开发环境

    windows上建立hadoop+eclipse开发环境

    hadoop-eclipse-2.7.3插件和winutils.zip

    hadoop2.7.3版本eclipse插件,和winutils.exe等所需的二进制windows平台文件(还上传的有其他免费的学习资料,想学习新东西的可以看看)

    hadoop的相关包

    hadoop的相关包导入eclipse中 编译程序使文档上传到hdfs本地文件

    大数据hadoop,centos7的安装

    格式化文件系统(仅第一次执行即可,不要重复执行):hdfs/hadoop namenode -format 启动hdfs: sbin/start-dfs.sh 验证是否启动成功: jps DataNode SecondaryNameNode NameNode 浏览器访问方式: ...

    hadoop.dll

    自己编译hadoop eclipse插件,运行WordCount后顺利调试通过,然后把hadoop-2.6/bin打包,注意需要将hadoop.dll放到bin和system32下,并设置hadoop_home,重启机器后顺利运行.上传文件以备后用.

    基于Hadoop下MapReduce框架实现的的并行C4.5算法.zip

    * 程序利用Eclipse EE在Hadoop平台下,使用Map/Reduce编程框架,将传统的C4.5决策树算法并行化; * 该部分属于本科毕业设计中,并行随机森林算法的核心部分; * Hadoop的搭建主要参考给力星的博客( ...

    基于Centos7下eclipse编写的Java程序运在Hadoop集群及其生态圈中+源代码+文档说明

    - -------- 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,...下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------

    实验二:熟悉常用的HDFS操作

    A.2实验二:熟悉常用的HDFS操作 本实验对应第4章的内容。 A.2.1 实验目的 (1)理解 HDFS在Hadoop体系结构中的角色。(2)熟练使用HDFS操作常用的 Shell命令。(3)熟悉HDFS操作常用的Java API。...(4) Java IDE:Eclipse。

    实验项目 实战 HDFS 实验报告

    一、实验目的 1. 理解 HDFS 体系架构。 2. 理解 HDFS 文件存储原理和数据读写过程。 3. 熟练掌握 HDFS Web UI 界面的使用...5. 使用 HDFS Java API 编写 HDFS 文件操作程序,实现上传本地文件到 HDFS 的功能。。。。。

    实验2 熟悉常用的HDFS操作

    (1) 向HDFS中上传任意文本文件,如果指定的文件在HDFS中已经存在,则由用户来指定是追加到原有文件末尾还是覆盖原有的文件;(2) 从HDFS中下载指定文件,如果本地文件与要下载的文件名称相同,则自动对下载的文件...

    HadoopIntellijPlugin-1.0.zip

    Hadoop-Intellij-Plugin 是Intellij IDEA 上的一款插件。...下载或者上传文件;查看文件内容;运行Job作业、支持国际化语言设置等等。类似与 hadoop-eclipse-plugin的插件。 使用IDEA2018进行编译后测试可用。

    毕业设计-基于java+HBase实现的手机数据备份系统(短信、联系人、重要文件).zip

    上传文件Action-----------&gt;UploadFileAction.java 下载文件Action-----------&gt;DownloadFileAction.java 封装了3个实体: 短信-------&gt;SmsInfo.java 联系人-----&gt;ContactInfo.java 文件-------&gt;MyFileInfo.java ...

    大数据集群环境部署

    安装Hadoop,网络配置,SSH免密通信,Hadoop配置,启动Hadoop,安装和配置spark,eclipse配置(HDFS文件上传),外网环境向内网迁移,调试程序

    HadoopIntellijPlugin:HadoopIntelliJ IDEA插件

    这包括读取Hadoop文件系统上的文件列表以进行显示,在Hadoop文件系统中创建目录,删除目录,下载或上传文件,查看文件内容,运行Job作业,支持国际语言设置等等。 与hadoop-eclipse-plugin相似的插件。 Intellij-...

    Google的pagerank实现(Java+scala)Eclipse工程实例带测试数据结果和JAR包

    ******************************************************** 作者:邓佑权 日期:2016年 功能:实现google的PageRank算法,带完整的...spark-assembly-1.6.1-hadoop2.6.0.jar 包文件太大,无法上传,请自行下载!

    基于HBase实现的手机数据备份系统,实现了手机关键信息的备份,如短信、联系人等(毕业设计)

    上传文件Action-----------&gt;UploadFileAction.java 下载文件Action-----------&gt;DownloadFileAction.java 封装了3个实体: 短信-------&gt;SmsInfo.java 联系人-----&gt;ContactInfo.java 文件-------&gt;MyFileInfo.java ...

Global site tag (gtag.js) - Google Analytics