Hadoop2.8.5详细教程(七)Java操作HDFS

在Windows下开发

首先需要在Windows上搭建Hadoop的开发环境:

1.在windows下解压hadoop,在解压的目录下的etc/hadoop中的hadoop.env.cmd的文件中修改Java环境变量。因为Hadoop无法识别目录中的空格字符,如果我们的JDK安装在默认的C盘中的Program Files文件夹下,需要使用PROGRA~1替换。因为我们Windows环境变量JAVA_HOME中的路径值也包含空格,所以在hadoop.env.cmd配置文件中,不能直接引用环境变量,需要写固定路径,如下所示:

set JAVA_HOME=C:\PROGRA~1\Java\jdk1.8.0_102

2.将winutils.exe、hadoop.dll放到hadoop\bin下
3.设置Widows下的环境变量,添加一个HADOOP_HOME:

HADOOP_HOME=d:\software\hadoop\hadoop2.8.5

在path变量中追加:

%HADOOP_HOME%\bin  

4.新建Java项目,项目下新建lib文件夹,将hadoop的jar包拷贝到lib文件夹中,然后导入到项目。
在这里插入图片描述

右键项目选properties,在弹出框中选择Librarys

在这里插入图片描述

点击add jars,在弹出框中,选择testhdfs1项目下的lib文件夹,选中里面所有的jar包,点击ok
在这里插入图片描述

在这里插入图片描述

5.代码:

package a;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class TestHDFS {
    
    
	FileSystem fs;

	public void init() {
    
    
		try {
    
    
			URI uri = new URI("hdfs://192.168.150.21:9000");
			Configuration conf = new Configuration();
			// conf.set("dfs.replication", "2");
			// conf.set("dfs.block.size", "64m");
			conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");
			fs = FileSystem.get(uri, conf, "root");
		} catch (IOException e) {
    
    
			e.printStackTrace();
		} catch (InterruptedException e) {
    
    
			e.printStackTrace();
		} catch (URISyntaxException e) {
    
    
			e.printStackTrace();
		}
	}

	public void put(String local, String hdfs) {
    
    
		try {
    
    
			fs.copyFromLocalFile(new Path(local), new Path(hdfs));
		} catch (IllegalArgumentException e) {
    
    
			e.printStackTrace();
		} catch (IOException e) {
    
    
			e.printStackTrace();
		}
	}

	// 下载需要配置hadoop_home
	public void get(String local, String hdfs) {
    
    
		try {
    
    
			fs.copyToLocalFile(new Path(hdfs), new Path(local));
		} catch (IllegalArgumentException e) {
    
    
			e.printStackTrace();
		} catch (IOException e) {
    
    
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
    
    
		TestHDFS th = new TestHDFS();
		th.init();
		th.put(args[0], args[1]);
		// th.get(args[0], args[1]);
	}
}

在D盘test文件夹下新建一个如下文本文件,保存一些单词,以供上传到HDFS中之用。
在这里插入图片描述

通过main方法传参设置本地路径和HDFS的远程路径,在eclipse中运行该程序需要这样设置:
1.在代码上右键【run as】 --【run configurations】,在弹出框中双击如下图所示Java Application。
在这里插入图片描述
2.在新窗口中选择Arguments选项卡,在程序参数编辑框中,填入参数。第一个参数是本地路径,第二个参数是HDFS的文件系统地址。
在这里插入图片描述

3.点击run即可以运行程序。
4.去HDFS中查看,是否将本地程序上传到虚拟机中的HDFS中。
在这里插入图片描述
在这里插入图片描述

5.以同样方式执行下载。

Guess you like

Origin blog.csdn.net/GodBlessYouAndMe/article/details/120432249