其实很简单,只要配置正确,就行
直接给代码吧
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); }
相关推荐
在用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插件,里面有说明。...2、使用hadoop-eclipse-plugin-2.9.2-local.jar,访问本地的文件系统 3、wintuils_hadoop.zip本地eclipse运行需要的包。 另外2.9.2hadoop编译包太大,传不上来
hadoop2.7.1的linux下eclipse支持插件。已经经过检查,安装后在eclipse下,可以正常上传,下载,删除hdfs文件,以及跑mapreduce程序。 编译环境:ant1.9.6 jdk1.8 hadoop2.7.1
windows上建立hadoop+eclipse开发环境
hadoop2.7.3版本eclipse插件,和winutils.exe等所需的二进制windows平台文件(还上传的有其他免费的学习资料,想学习新东西的可以看看)
hadoop的相关包导入eclipse中 编译程序使文档上传到hdfs本地文件
格式化文件系统(仅第一次执行即可,不要重复执行):hdfs/hadoop namenode -format 启动hdfs: sbin/start-dfs.sh 验证是否启动成功: jps DataNode SecondaryNameNode NameNode 浏览器访问方式: ...
自己编译hadoop eclipse插件,运行WordCount后顺利调试通过,然后把hadoop-2.6/bin打包,注意需要将hadoop.dll放到bin和system32下,并设置hadoop_home,重启机器后顺利运行.上传文件以备后用.
* 程序利用Eclipse EE在Hadoop平台下,使用Map/Reduce编程框架,将传统的C4.5决策树算法并行化; * 该部分属于本科毕业设计中,并行随机森林算法的核心部分; * Hadoop的搭建主要参考给力星的博客( ...
- -------- 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,...下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
A.2实验二:熟悉常用的HDFS操作 本实验对应第4章的内容。 A.2.1 实验目的 (1)理解 HDFS在Hadoop体系结构中的角色。(2)熟练使用HDFS操作常用的 Shell命令。(3)熟悉HDFS操作常用的Java API。...(4) Java IDE:Eclipse。
一、实验目的 1. 理解 HDFS 体系架构。 2. 理解 HDFS 文件存储原理和数据读写过程。 3. 熟练掌握 HDFS Web UI 界面的使用...5. 使用 HDFS Java API 编写 HDFS 文件操作程序,实现上传本地文件到 HDFS 的功能。。。。。
(1) 向HDFS中上传任意文本文件,如果指定的文件在HDFS中已经存在,则由用户来指定是追加到原有文件末尾还是覆盖原有的文件;(2) 从HDFS中下载指定文件,如果本地文件与要下载的文件名称相同,则自动对下载的文件...
Hadoop-Intellij-Plugin 是Intellij IDEA 上的一款插件。...下载或者上传文件;查看文件内容;运行Job作业、支持国际化语言设置等等。类似与 hadoop-eclipse-plugin的插件。 使用IDEA2018进行编译后测试可用。
上传文件Action----------->UploadFileAction.java 下载文件Action----------->DownloadFileAction.java 封装了3个实体: 短信------->SmsInfo.java 联系人----->ContactInfo.java 文件------->MyFileInfo.java ...
安装Hadoop,网络配置,SSH免密通信,Hadoop配置,启动Hadoop,安装和配置spark,eclipse配置(HDFS文件上传),外网环境向内网迁移,调试程序
这包括读取Hadoop文件系统上的文件列表以进行显示,在Hadoop文件系统中创建目录,删除目录,下载或上传文件,查看文件内容,运行Job作业,支持国际语言设置等等。 与hadoop-eclipse-plugin相似的插件。 Intellij-...
******************************************************** 作者:邓佑权 日期:2016年 功能:实现google的PageRank算法,带完整的...spark-assembly-1.6.1-hadoop2.6.0.jar 包文件太大,无法上传,请自行下载!
上传文件Action----------->UploadFileAction.java 下载文件Action----------->DownloadFileAction.java 封装了3个实体: 短信------->SmsInfo.java 联系人----->ContactInfo.java 文件------->MyFileInfo.java ...