目的:
学习使用hdfs 的java命令操作
相关:
进化:
[b0010] windows 下 eclipse 开发 hdfs程序样例 (二)
[b0011] windows 下 eclipse 开发 hdfs程序样例 (三)
环境:
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 本地,
/**
* 功能: 将 hdfs://ssmaster:9000/data/paper.txt下载到Linux下/home/hadoop/paper.txt
* 调用方式:hadoop jar 打包包名.jar
*/
package hadoop.hdfs; import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; import org.apache.commons.compress.utils.IOUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path; public class Test_Fun { public static void main(String[] args) { Configuration conf =new Configuration(); FileSystem fs = null;
Path src = null;
FSDataInputStream in = null;
FileOutputStream out = null; src = new Path("hdfs://ssmaster:9000/data/paper.txt" ); try { fs = FileSystem.get(conf) ;
in = fs.open(src); } catch (IOException e) {
e.printStackTrace();
} try {
out = new FileOutputStream ("/home/hadoop/paper.txt");
} catch (FileNotFoundException e) {
e.printStackTrace();
} try {
IOUtils.copy(in, out);
} catch (IOException e) {
e.printStackTrace();
} }
}
备注:
"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.jar
hadoop@ssmaster:~$ ls
Desktop Downloads hadoop-2.6..tar.gz java_program paper.txt Pictures spark-2.0.-bin-hadoop2..tgz Videos
Documents examples.desktop hdfs-site.xml Music park-2.0.-bin-hadoop Public Templates
总结:
步骤麻烦啰嗦。
其他可选方案,需要研究
windows下的eclipse 中的程序运行,直接操作hadoop
在linux中安装eclipse,运行程序