目的:
学习使用hdfs 的java命令操作
相关:
进化:
环境:
hadoop2.6.4 伪分布式
win7 + eclipse Version: Luna Service Release 1 (4.4.1)
1. 新建项目
1.1 新建java项目 Hadoop_伪分布式
1.2 导入hadoop 2.6.4 的jar包
项目名字上右键->属性->Java构建路径->添加库->用户库,创建用户库 hadoop2.6
点击用户库hadoop2.6->添加外部jar 依次将hadoop2.6.4 解压目录下的所有jar包,及对应子目录 lib下jar包导入
share\hadoop\common
share\hadoop\hdfs
share\hadoop\yarn
share\hadoop\mapredude
2.新建类,编写如下代码
通过流的方式,从hdfs 下载一个文件到linux 本地,
1 /** 2 * 功能: 将 hdfs://ssmaster:9000/data/paper.txt下载到Linux下/home/hadoop/paper.txt 3 * 调用方式:hadoop jar 打包包名.jar 4 */ 5 package hadoop.hdfs; 6 7 import java.io.FileNotFoundException; 8 import java.io.FileOutputStream; 9 import java.io.IOException;10 11 import org.apache.commons.compress.utils.IOUtils;12 import org.apache.hadoop.conf.Configuration;13 import org.apache.hadoop.fs.FSDataInputStream;14 import org.apache.hadoop.fs.FileSystem;15 import org.apache.hadoop.fs.Path;16 17 public class Test_Fun {18 19 public static void main(String[] args) {20 21 Configuration conf =new Configuration();22 23 FileSystem fs = null;24 Path src = null;25 FSDataInputStream in = null;26 FileOutputStream out = null;27 28 src = new Path("hdfs://ssmaster:9000/data/paper.txt" );29 30 try {31 32 fs = FileSystem.get(conf) ;33 in = fs.open(src);34 35 } catch (IOException e) {36 e.printStackTrace(); 37 }38 39 try {40 out = new FileOutputStream ("/home/hadoop/paper.txt");41 } catch (FileNotFoundException e) {42 e.printStackTrace();43 }44 45 try {46 IOUtils.copy(in, out);47 } catch (IOException e) {48 e.printStackTrace();49 }50 51 }52 }
备注:
"hdfs://ssmaster:9000/data/paper.txt" 中前面的路径取自 hadoop安装后的配置文件 core-site.xml里的
参数 <name>fs.defaultFS</name><value>hdfs://ssmaster:9000</value>
3.导出jar包、执行
右键项目名字->导出->java/jar文件 ->指定jar路径名字->指定main类 ->完成
上传到linux服务器,执行程序,查看结果
hadoop@ssmaster:~/java_program$ hadoop jar hadoop_hdfs_download.jarhadoop@ssmaster:~$ lsDesktop Downloads hadoop-2.6.4.tar.gz java_program paper.txt Pictures spark-2.0.1-bin-hadoop2.6.tgz VideosDocuments examples.desktop hdfs-site.xml Music park-2.0.1-bin-hadoop Public Templates
总结:
步骤麻烦啰嗦。
其他可选方案,需要研究
windows下的eclipse 中的程序运行,直接操作hadoop
在linux中安装eclipse,运行程序